Written and maintained by CASRAI Editorial Board
Last updated
To convert a protein concentration from mg/mL to molarity, divide the mass concentration in g/L by the protein’s molecular mass in g/mol. Because 1 mg/mL equals 1 g/L and 1 Da equals 1 g/mol, 1 mg/mL of a 16,239 Da protein is 61.6 µM. This page gives the formula, a lookup table built from UniProtKB sequence masses, two worked examples and copy-ready Excel, R and Python code. It also covers the one trap that most calculators hide: the mass UniProt lists for an entry is not always the mass of the protein you have in the tube.
Protein molarity formula
Molarity is amount of substance per litre of solution. For a protein of known molecular mass, the working relationships are:
- Molarity (M) = concentration (g/L) / molecular mass (g/mol)
- Micromolar (µM) = concentration (mg/mL) × 1,000,000 / molecular mass (Da), or equivalently concentration (mg/mL) × 1,000 / molecular mass (kDa)
- Mass needed (mg) = target molarity (µM) × volume (mL) × molecular mass (Da) / 1,000,000
The unit logic: mg/mL is numerically identical to g/L, and a dalton is numerically identical to a gram per mole, so the division gives mol/L directly. For the general method and the C1V1 dilution step, see the guide to molarity and solution calculations in the lab; for the reverse direction at small scale, see millimolarity to molarity.
Lookup table: molecular mass to molarity
The table lists four commonly used proteins with the length and mass shown in their UniProtKB entries (UniProt REST API, checked 2026-10-29). The last column is the molarity of a 1 mg/mL solution, rounded to 3 significant figures. Multiply it by the mg/mL value you have to scale it (10 mg/mL gives ten times the value).
| Protein | UniProtKB accession (entry name) | Length (aa) | UniProtKB sequence mass (Da) | 1 mg/mL equals (µM) |
|---|---|---|---|---|
| Serum albumin (bovine, BSA) | P02769 (ALBU_BOVIN) | 607 | 69,293 | 14.4 |
| Lysozyme C (chicken) | P00698 (LYSC_CHICK) | 147 | 16,239 | 61.6 |
| Cytochrome c (horse) | P00004 (CYC_HORSE) | 105 | 11,833 | 84.5 |
| Hemoglobin subunit beta (human) | P68871 (HBB_HUMAN) | 147 | 15,998 | 62.5 |
Source: UniProtKB (see Sources below), checked 2026-10-29. The hemoglobin row is a single beta subunit, not the assembled tetramer, so do not use it for a hemoglobin tetramer solution. Rounding: 3 significant figures.
Which molecular weight to use
UniProt computes the mass from the sequence listed in the entry. For some entries that sequence is a precursor. The bovine albumin entry P02769 is 607 amino acids and 69,293 Da, but its features mark a signal peptide at residues 1-18 and a propeptide at residues 19-24, and the mature albumin chain runs from residue 25 to 607 (UniProt flat file for P02769, checked 2026-10-29). A protein supplied as the mature chain is therefore lighter than 69,293 Da, and using the entry mass overstates the molecular weight and so overstates the molarity of any given mg/mL solution.
- Check the entry’s feature table for signal peptide, propeptide and chain ranges before you copy a mass.
- For a recombinant or tagged protein, compute the mass from the sequence you actually expressed, including any tag. The ExPASy Compute pI/Mw tool does this from a sequence.
Worked example 1: mg/mL to micromolar
Question: a stock is 10 mg/mL BSA. What is its molarity, using the UniProtKB sequence mass of 69,293 Da?
- 10 mg/mL = 10 g/L.
- 10 g/L / 69,293 g/mol = 0.000144 mol/L.
- That is 144 µM (0.144 mM), to 3 significant figures.
If your material is the mature chain, repeat the calculation with the mature-chain mass; the result will be slightly higher than 144 µM.
Worked example 2: mass needed for a target molarity
Question: how many milligrams of chicken lysozyme (16,239 Da) are needed for 5 mL of a 100 µM solution?
- 100 µM = 100 × 10-6 mol/L; 5 mL = 0.005 L.
- Amount = 100 × 10-6 mol/L × 0.005 L = 5 × 10-7 mol (0.5 µmol).
- Mass = 5 × 10-7 mol × 16,239 g/mol = 0.00812 g = 8.12 mg.
Dissolve in less than the final volume, then bring to 5 mL, because the powder adds volume. The same reasoning applies to making up buffers; see buffer and solution preparation.
Calculate protein molarity in Excel, R and Python
Put the concentration in mg/mL in A2 and the molecular mass in Da in B2.
Excel
=A2*1000000/B2 (result in micromolar)
R
um <- function(mg_per_ml, mw_da) mg_per_ml * 1e6 / mw_da
um(10, 69293) # 144.3
Python
def micromolar(mg_per_ml, mw_da):
return mg_per_ml * 1e6 / mw_da
print(round(micromolar(10, 69293), 1)) # 144.3
From molarity to A280: the extinction coefficient link
Spectrophotometric concentration estimates often start from absorbance at 280 nm. The ExPASy ProtParam documentation (ExPASy ProtParam documentation, checked 2026-10-29) gives the extinction coefficient of a protein in water at 280 nm as E(Prot) = Numb(Tyr) × Ext(Tyr) + Numb(Trp) × Ext(Trp) + Numb(Cystine) × Ext(Cystine), with Ext(Tyr) = 1490, Ext(Trp) = 5500 and Ext(Cystine) = 125, and defines Absorb(Prot) = E(Prot) / molecular weight. It notes that cysteine does not absorb appreciably above 260 nm while cystine does, and reports two values depending on whether all cysteines are counted as cystines.
Arithmetic illustration with a hypothetical protein of 8 Tyr, 6 Trp and 2 cystines: E = 8 × 1490 + 6 × 5500 + 2 × 125 = 45,170. Once E is known, molar concentration follows from the Beer-Lambert relation c = A / (E × path length), which you can then convert to mg/mL with the molecular mass. To check a colorimetric reading instead, see the Bradford protein assay standard curve guide, and for the instrument side see UV-Vis spectrophotometer basics. After purification, protein purification covers where concentration steps fit.
Safety note: read the SDS
Molarity calculations are only the arithmetic. Before weighing or dissolving any reagent, including buffer salts, denaturants and preservatives added to protein stocks, consult the safety data sheet (SDS) supplied with each reagent. See how to read a safety data sheet for the section layout.
FAQ
How do I convert mg/mL to molarity for a protein?
Divide the concentration in g/L (the same number as mg/mL) by the molecular mass in g/mol (the same number as Da). Multiply by 1,000,000 to express the result in micromolar when you start from mg/mL and Da.
Is the UniProt mass the right molecular weight for my protein?
Only if your protein matches the listed sequence. Entries with a signal peptide or propeptide, such as P02769, list the precursor mass, and a mature or tagged protein will differ.
How many significant figures should I report?
The table and examples above use 3 significant figures. Report no more precision than your concentration measurement supports.
Sources
- UniProtKB REST API, accession, length and mass for P02769, P00698, P00004 and P68871: https://rest.uniprot.org/uniprotkb/accessions?accessions=P02769,P00698,P00004,P68871&fields=accession,id,protein_name,length,mass&format=tsv (checked 2026-10-29)
- UniProtKB flat file for P02769 (signal peptide, propeptide and chain features): https://rest.uniprot.org/uniprotkb/P02769.txt (checked 2026-10-29)
- ExPASy ProtParam documentation: https://web.expasy.org/protparam/protparam-doc.html (checked 2026-10-29)







