← All posts

Why your buffer never hits the pH you calculated

Henderson–Hasselbalch ignores ionic strength and multiple pKas. That's why your hand calc and your pH meter disagree.

bufferspHchemistry

TL;DR — The equation you learned ignores half the chemistry. That’s why you titrate.

You calculate a 50 mM phosphate buffer for pH 7.4. You make it. The meter reads 7.2. You reach for the acid.

Sound familiar? Usually it’s not your pipetting. It’s your equation.

The shortcut that lies

Henderson–Hasselbalch assumes:

  • one buffering species with one pKa
  • ionic strength doesn’t matter

Real buffers break both rules.

What actually moves your pH

  • Multiple pKas. Phosphate has three. Citrate has three. One pKa can’t describe them.
  • Ionic strength. Salt and buffer ions shift the effective pKa. Add 100 mM NaCl and the pH moves — H–H never sees it.

So the textbook number is right for a textbook buffer, and wrong for yours.

The fix: model the whole system

Solve it from first principles — every dissociation step, mass balance, and charge balance, with a Debye–Hückel correction for ionic strength. Now the prediction matches the meter.

(One caveat: that correction holds to ~0.4 M ionic strength. Past that, all bets — and predictions — are off.)

Bottom line

If your calc and your meter disagree, the chemistry isn’t broken. Your equation is just too simple.

Design it the right way →