Bbiochemtools

Henderson-Hasselbalch Buffer Calculator

Pick a buffer, set your target pH, concentration, and volume. Get the exact amount of weak acid and conjugate base to mix, with every step of the Henderson-Hasselbalch math shown.

Conjugate base [A⁻]: , Weak acid [HA]: ,
Conjugate base [A⁻] needed
,
Weak acid [HA] needed
,

How to make a buffer at a target pH by hand

The Henderson-Hasselbalch equation is pH = pKa + log([A⁻]/[HA]). Rearrange for the ratio you need: [A⁻]/[HA] = 10^(pH − pKa). Split your total concentration into the two forms using fraction A⁻ = ratio/(1+ratio) and fraction HA = 1/(1+ratio), then multiply each concentration by the volume (in liters) to get moles, and by the molar mass for grams. A buffer works best within about pKa ± 1; outside that range it has little capacity, so pick a buffer whose pKa is close to your target pH.

pKa values shown are standard 25 °C textbook values; some sources differ by a few hundredths, and phosphate/bicarbonate shift with temperature and ionic strength (blood bicarbonate is often quoted as 6.1).

Want the strong-acid/base addition problem type worked out too? See the 3 MCAT buffer question types, explained.

Related tools: pH calculator · Peptide charge & pI calculator · Acid-base titration curve · Buffer pKa table · all biochem tools.

Worked example 1: phosphate buffer at pH 7.40 (the default)

Phosphate buffer, pKa 7.21, target pH 7.40, 0.10 M total concentration, 500 mL final volume.

Ratio [A⁻]/[HA] = 10^(pH − pKa) = 10^(7.40 − 7.21) = 10^0.19 = 1.549 Fraction A⁻ = ratio/(1+ratio) = 1.549/2.549 = 0.608 → [A⁻] = 0.608 × 0.10 = 0.0608 M Fraction HA = 1/(1+ratio) = 1/2.549 = 0.392 → [HA] = 0.392 × 0.10 = 0.0392 M Moles in 500 mL: A⁻ = 0.0608 × 0.5 L = 30.4 mmol HA = 0.0392 × 0.5 L = 19.6 mmol |pH − pKa| = 0.19 < 1 → within effective buffering range

This matches the calculator's default output exactly: 30.4 mmol of conjugate base and 19.6 mmol of the weak acid form, dissolved together in 500 mL.

Worked example 2: what happens when the pKa is a bad match

Same target pH (7.40) and concentration (0.10 M), but using acetate buffer (pKa 4.76) instead of phosphate.

Ratio [A⁻]/[HA] = 10^(7.40 − 4.76) = 10^2.64 = 436.5 Fraction A⁻ = 436.5/437.5 = 0.9977 (99.77%) Fraction HA = 1/437.5 = 0.0023 (0.23%) Moles in 500 mL: A⁻ = 49.89 mmol HA = 0.114 mmol |pH − pKa| = 2.64 > 1 → outside the effective buffering range

Almost all of the acetate is in its conjugate-base form (99.77%) with barely any weak acid left (0.23%). There isn't enough of the minority form to absorb much added acid before the pH swings. This is the numeric reason acetate is a poor choice for buffering at pH 7.40, even though it works well near its own pKa of 4.76.

FAQ

Why does buffering capacity fail outside pKa ± 1?
Outside that range, one form vastly outnumbers the other. Buffering works by the minority form absorbing added acid or base, with almost none of it left, added acid or base swings the pH quickly instead of being absorbed, as shown in example 2 above.

Why phosphate instead of acetate for physiological pH?
Phosphate's pKa (~7.21) sits close to 7.4, within pKa ± 1. Acetate's pKa (~4.76) is over 2.5 units away, far outside its range, so it has almost no capacity to resist pH changes at 7.4 even though it's a fine buffer near its own pKa.

Do I need the volume to find the acid/base ratio?
No, the ratio and fractions depend only on pH and pKa. Concentration and volume are only needed for the last step: converting those fractions into actual moles or grams.

What buffers blood at pH 7.4?
The bicarbonate system (H₂CO₃/HCO₃⁻), even though its pKa (~6.1) looks further from 7.4 than phosphate's. It works because it's an open system, CO₂ is constantly exhaled, shifting the equilibrium and extending its effective buffering range beyond the simple closed-system pKa ± 1 rule.

Why is histidine used as a buffer?
Its imidazole side chain has a pKa of about 6.0, close enough to physiological pH to give real buffering capacity between roughly pH 5 and 7, useful for protein formulation and purification. It's also one of the few side chains meaningfully charged at physiological pH, which is why it's so common in enzyme active sites as a proton donor/acceptor.

Practice problems

1. Make a 0.05 M Tris buffer (pKa 8.06) at pH 8.5, in 250 mL. How much conjugate base and weak acid form are needed?

Show answer
Ratio [A⁻]/[HA] = 10^(8.5 − 8.06) = 10^0.44 = 2.754 Fraction A⁻ = 2.754/3.754 = 0.734 → [A⁻] = 0.734 × 0.05 = 0.0367 M Fraction HA = 1/3.754 = 0.266 → [HA] = 0.266 × 0.05 = 0.0133 M Moles in 250 mL: A⁻ = 0.0367 × 0.25 L = 9.2 mmol HA = 0.0133 × 0.25 L = 3.3 mmol |pH − pKa| = 0.44 < 1 → within effective buffering range

2. Would ammonium buffer (pKa 9.25) work well for a target pH of 8.5? Why or why not?

Show answer
|pH − pKa| = |8.5 − 9.25| = 0.75, just inside the pKa ± 1 range, so it would work, though not as well-centered as Tris (|8.5 − 8.06| = 0.44). Ratio [A⁻]/[HA] = 10^(8.5−9.25) = 10^(−0.75) = 0.178, meaning the weak acid form (NH₄⁺) would dominate (about 85% of the buffer) rather than an even split, usable, but Tris is the better-centered choice for this specific target pH.