A buffer is a solution that resists pH change when a small amount of acid or base is added. That sounds like a magic property until you write out the chemistry — buffers work because they contain both a weak acid and its conjugate base in similar amounts, so they can neutralize whichever side of the disturbance shows up. This buffer solutions explainer walks through the mechanism, derives the Henderson–Hasselbalch equation in one short pass, and uses it on a concrete example.

What Makes a Solution a Buffer

A buffer is a mixture of a weak acid and its conjugate base in comparable amounts (or a weak base and its conjugate acid — same idea). A 50/50 mixture of acetic acid (CH₃COOH) and sodium acetate (NaCH₃COO) is the classic example.

Why both? Because a buffer must absorb both kinds of disturbance. Add a strong acid (H⁺) and the conjugate base eats it: CH₃COO⁻ + H⁺ → CH₃COOH. Add a strong base (OH⁻) and the weak acid eats it: CH₃COOH + OH⁻ → CH₃COO⁻ + H₂O. Each addition slightly shifts the ratio of HA to A⁻, but as long as both are still present in significant amounts, the pH barely moves.

A solution of pure weak acid is not a buffer — there is no conjugate base to neutralize added acid. A solution of pure strong acid is not a buffer either — there is no equilibrium to absorb a disturbance. A buffer needs the pair, in roughly similar amounts. As a rule of thumb, the ratio [A⁻]/[HA] should stay between about 0.1 and 10 for the buffer to work; outside that range, the pH starts to swing.

Two clear solutions side by side in a lab with a pH meter probe
Two clear solutions side by side in a lab with a pH meter probe

Deriving Henderson–Hasselbalch in One Pass

Start from the weak-acid equilibrium:

HA ⇌ H⁺ + A⁻, with K(a) = [H⁺][A⁻] / [HA]

Solve for [H⁺]:

[H⁺] = K(a) × [HA] / [A⁻]

Take −log of both sides. The left becomes pH. On the right, −log(K(a)) = pK(a), and −log(x/y) = log(y/x). The result:

pH = pK(a) + log ( [A⁻] / [HA] )

That is the Henderson–Hasselbalch equation. It is exact in principle but is used as a working shortcut: it assumes the buffer ratio is dominated by the amounts you added (not by what the equilibrium shifted to), which is fine when the concentrations are at least ~0.01 M and the ratio sits in the working range.

Three things to read off the equation immediately. First, when [A⁻] = [HA], the log term is zero and pH = pK(a). That is why a 50/50 buffer sits at the pK(a) of the weak acid. Second, increasing the ratio of conjugate base to acid by a factor of 10 raises the pH by exactly 1 unit. Third, the ratio is what matters — diluting both species equally does not change the pH (to first approximation).

Picking a Buffer: Match pK(a) to the Target pH

To prepare a buffer at a specific pH, choose a weak acid whose pK(a) is within about 1 unit of that target pH. Then adjust the ratio of conjugate base to acid to hit the exact value.

Common pK(a)'s worth knowing:

  • Acetic acid / acetate: pK(a) = 4.74 — buffers around pH 4–6
  • Phosphate (H₂PO₄⁻ / HPO₄²⁻): pK(a₂) = 7.21 — buffers around pH 6–8 (the buffer that keeps blood plasma near pH 7.4)
  • Ammonium / ammonia (NH₄⁺ / NH₃): pK(a) = 9.25 — buffers around pH 8–10

Pick the pair whose pK(a) is closest to your target. If your target is pH 5, an acetate buffer is the natural choice — close enough to pK(a) 4.74 that the ratio you need is achievable, and not so far off that the buffer is weak in either direction.

Worked Example: Building and Stress-Testing an Acetate Buffer

Make a buffer at pH 5.00 using acetic acid (pK(a) = 4.74).

Step 1: Find the ratio

Plug into Henderson–Hasselbalch:

5.00 = 4.74 + log ([A⁻]/[HA])

log ([A⁻]/[HA]) = 0.26

[A⁻]/[HA] = 10^0.26 = 1.82

So you need acetate at about 1.82 times the acetic acid concentration. A simple recipe: 1.00 mol of acetic acid and 1.82 mol of sodium acetate, both dissolved in 1 L of water.

Step 2: Add a strong acid and watch the pH barely move

Suppose you add 0.10 mol of HCl to that 1 L of buffer (and assume volume change is small). The H⁺ converts 0.10 mol of acetate into acetic acid:

  • New [HA] = 1.00 + 0.10 = 1.10 M
  • New [A⁻] = 1.82 − 0.10 = 1.72 M
  • New ratio = 1.72 / 1.10 = 1.564

pH = 4.74 + log(1.564) = 4.74 + 0.194 = 4.93

The pH dropped by only 0.07 units. For comparison, the same 0.10 mol of HCl dumped into 1 L of pure water would drop the pH from 7 to 1 — six full units. The buffer absorbed almost the whole disturbance.

Step 3: Push it until it breaks

The buffer fails when one of HA or A⁻ runs out. If you kept adding HCl, the acetate would be consumed, the ratio would crash toward zero, and the pH would plunge. The total amount of acid (or base) a buffer can absorb before failing is its buffer capacity, and it is set by the absolute amounts of HA and A⁻, not just their ratio. Doubling both halves the pH swing for the same disturbance.

Getting Help

The buffer region of an acid–base titration curve is exactly this chemistry — Henderson–Hasselbalch governs the plateau, and the half-equivalence point is the 1:1 buffer where pH equals pK(a). For the underlying pH math, see pH and pOH.

Conclusion

A buffer holds pH steady because it contains both a weak acid and its conjugate base, and either side of an added disturbance has something to react with. The Henderson–Hasselbalch equation, pH = pK(a) + log([A⁻]/[HA]), turns that mechanism into one quick calculation: match pK(a) to your target pH, set the ratio with a log, and the buffer is sized. Capacity, not pH, is what you increase by raising the absolute concentrations. With those tools, buffer problems become two short lines of algebra.