CHEM-102 · Lesson 10 of 12 · 30 min
Buffers and titrations
Add a drop of hydrochloric acid to a litre of pure water and the pH falls from 7 to about 4.7. Add the same drop to a litre of blood and the pH barely moves. Blood is buffered: it contains a weak acid and its conjugate base in balance, which together soak up added acid or base. Buffers keep the pH of cells, swimming pools, shampoos, fermentation tanks and laboratory experiments within narrow limits. This lesson explains how buffers work and how to design them, then follows the pH through acid–base titrations, choosing indicators and interpreting titration curves. BIOL-107 introduced the Henderson–Hasselbalch equation for biological buffers; here we derive it, test its limits and use it quantitatively.
How a buffer works
A buffer is a solution containing comparable amounts of a weak acid and its conjugate base (or a weak base and its conjugate acid). Acetic acid with sodium acetate, ammonia with ammonium chloride, and dihydrogen phosphate with hydrogen phosphate are common examples. The weak acid neutralizes added base, and the conjugate base neutralizes added acid, converting strong acids and bases into weak ones.
Both reactions go essentially to completion, because each has a large equilibrium constant (the reverse of a weak acid or weak base ionization). The added strong acid or base is therefore used up, and only the ratio of acid to conjugate base changes, which changes the pH only slightly. A solution of a strong acid and its conjugate base, such as HCl with NaCl, cannot buffer, because chloride has no tendency to accept protons.
The Henderson–Hasselbalch equation
Taking the logarithm of the K_a expression and rearranging gives an equation for the pH of a buffer.
Because the weak acid barely ionizes and the common ion suppresses its ionization further (lesson 8), the equilibrium concentrations of HA and A⁻ are very close to the amounts put in. The equation can therefore use the starting concentrations, or even the moles, since both are in the same volume. When [A⁻] = [HA], the log term is zero and pH = pK_a. The equation is reliable when the ratio lies between about 0.1 and 10 and the concentrations are much larger than K_a; outside those limits, use a full ICE calculation.
Worked problem
pH of an acetate buffer
A buffer contains 0.20 M acetic acid and 0.30 M sodium acetate. Find its pH. (pK_a = 4.74.)
Show solution
- pH = 4.74 + log(0.30/0.20) = 4.74 + log 1.5 = 4.74 + 0.18.
Answer: pH = 4.92.
Adding acid or base to a buffer
Calculating the effect of an addition takes two steps. First, do the stoichiometry: the strong acid or base reacts completely with the buffer component, changing the moles of HA and A⁻. Second, use the Henderson–Hasselbalch equation with the new amounts.
Worked problem
Adding strong acid to a buffer
To 1.00 L of the buffer above (0.20 mol CH₃COOH, 0.30 mol CH₃COO⁻), add 0.050 mol of HCl. Find the new pH, and compare with adding the same acid to 1.00 L of pure water.
Show solution
- Stoichiometry: H₃O⁺ + CH₃COO⁻ → CH₃COOH. Acetate: 0.30 − 0.050 = 0.25 mol. Acetic acid: 0.20 + 0.050 = 0.25 mol.
- pH = 4.74 + log(0.25/0.25) = 4.74.
- In pure water: [H₃O⁺] = 0.050 M, pH = 1.30.
Answer: The buffer’s pH falls by only 0.18 units, from 4.92 to 4.74. Pure water would drop from 7.00 to 1.30, more than five units.
from math import log10
pKa = 4.74
def buffer_pH(n_HA, n_A):
return pKa + log10(n_A / n_HA)
n_HA, n_A = 0.20, 0.30 # mol in 1.00 L
print(f"start: pH = {buffer_pH(n_HA, n_A):.2f}")
for added in (0.05, 0.10, 0.20, 0.25, 0.29, 0.35): # mol of strong acid added
a, ha = n_A - added, n_HA + added
if a <= 0:
excess = -a # strong acid left over after acetate is used up
print(f"add {added:.2f} mol HCl: buffer exhausted, pH = {-log10(excess):.2f}")
else:
print(f"add {added:.2f} mol HCl: pH = {buffer_pH(ha, a):.2f}")start: pH = 4.92 add 0.05 mol HCl: pH = 4.74 add 0.10 mol HCl: pH = 4.56 add 0.20 mol HCl: pH = 4.14 add 0.25 mol HCl: pH = 3.79 add 0.29 mol HCl: pH = 3.05 add 0.35 mol HCl: buffer exhausted, pH = 1.30
Buffer capacity and range
A buffer can absorb only so much. Its buffer capacity is the amount of acid or base it can neutralize before its pH changes significantly, and it grows with the concentrations of the buffer components. Once one component is used up, the buffer fails and the pH changes abruptly, as the last line of the code shows. A buffer works best when [A⁻] and [HA] are similar, because then it can absorb either acid or base. Its useful range is about pK_a ± 1. To design a buffer for a target pH, choose a weak acid with pK_a close to that pH, then set the ratio with the Henderson–Hasselbalch equation.
Worked problem
Designing a buffer
Prepare 1.00 L of a buffer at pH 7.40 using NaH₂PO₄ and Na₂HPO₄ (pK_a2 of phosphoric acid = 7.21), with a total phosphate concentration of 0.100 M.
Show solution
- log([HPO₄²⁻]/[H₂PO₄⁻]) = 7.40 − 7.21 = 0.19, so the ratio = 10^0.19 = 1.55.
- Let [H₂PO₄⁻] = y; then [HPO₄²⁻] = 1.55y and y + 1.55y = 0.100, so y = 0.0392 M.
- Use 0.0392 mol NaH₂PO₄ and 0.0608 mol Na₂HPO₄, dissolved and made up to 1.00 L.
Answer: 0.039 mol of dihydrogen phosphate and 0.061 mol of hydrogen phosphate per litre. In practice the final pH is checked with a meter and adjusted, because ionic strength shifts the effective pK_a slightly.
Buffers in the body and in the lab
Blood is buffered mainly by carbonic acid and bicarbonate, along with phosphate and proteins. Carbonic acid has pK_a ≈ 6.1 under physiological conditions, well below blood’s pH of 7.4, so the ratio of bicarbonate to carbonic acid is about 20 : 1. That seems far from ideal, but the system is an open one: the lungs remove excess CO₂ (and with it carbonic acid) by breathing faster, and the kidneys adjust bicarbonate over hours to days. When these controls fail, the result is acidosis or alkalosis. Diabetic ketoacidosis, for example, floods the blood with acids faster than the buffer and lungs can cope. Laboratory and industrial buffers include phosphate, Tris (for biochemistry near pH 7 to 9) and citrate; pharmaceutical injectables are buffered close to the pH of blood to reduce stinging.
Acid–base titrations
A titration adds a solution of known concentration from a burette to a measured volume of an unknown until the equivalence point, where stoichiometric amounts have reacted. CHEM-101 used titrations for stoichiometry. Here we follow the pH throughout, producing a titration curve, a plot of pH against volume of titrant added. The shape of the curve depends on the strengths of the acid and base.
Strong acid with strong base
Titrating 25.0 mL of 0.100 M HCl with 0.100 M NaOH, the pH starts at 1.00. As base is added, H₃O⁺ is consumed and the pH rises slowly at first. Near the equivalence point it climbs steeply: the last few drops take the solution from pH 3 or 4 to 10 or 11. At the equivalence point (25.0 mL) the solution contains only NaCl and water, so pH = 7.00. Beyond it, excess hydroxide sets the pH.
Weak acid with strong base
Titrating a weak acid gives a different curve. The initial pH is higher, because the acid is only partly ionized. After a little base is added, the solution contains both the weak acid and its conjugate base: it is a buffer, and the curve flattens. Halfway to the equivalence point, exactly half the acid has been converted to its conjugate base, so [HA] = [A⁻] and pH = pK_a. This is a convenient way to measure pK_a experimentally. At the equivalence point the solution contains only the conjugate base, which is basic, so the pH is above 7. The vertical jump is shorter than for a strong acid.
The full curve can be calculated region by region, which is a good test of everything in this lesson and the last: a weak acid ICE table at the start, the Henderson–Hasselbalch equation in the buffer region, a weak base calculation at the equivalence point, and excess strong base after it.
from math import log10, sqrt
Ka, Kw = 1.8e-5, 1.0e-14
Va, Ca, Cb = 25.0, 0.100, 0.100 # mL acid, M acid, M base
n_acid = Va * Ca / 1000 # mol
Veq = n_acid / Cb * 1000 # mL at equivalence
def pH_at(Vb):
nb = Vb * Cb / 1000
Vt = (Va + Vb) / 1000
if Vb == 0: # weak acid alone
x = (-Ka + sqrt(Ka * Ka + 4 * Ka * Ca)) / 2
return -log10(x)
if nb < n_acid: # buffer region
return -log10(Ka) + log10(nb / (n_acid - nb))
if abs(nb - n_acid) < 1e-12: # equivalence: acetate is a weak base
Kb = Kw / Ka
c = n_acid / Vt
return 14 + log10(sqrt(Kb * c))
return 14 + log10((nb - n_acid) / Vt) # excess strong base
print(f"equivalence point at {Veq:.1f} mL")
for Vb in (0, 5, 12.5, 20, 24, 24.9, 25.0, 25.1, 26, 30, 40):
print(f"V(NaOH) = {Vb:5.1f} mL pH = {pH_at(Vb):5.2f}")equivalence point at 25.0 mL V(NaOH) = 0.0 mL pH = 2.88 V(NaOH) = 5.0 mL pH = 4.14 V(NaOH) = 12.5 mL pH = 4.74 V(NaOH) = 20.0 mL pH = 5.35 V(NaOH) = 24.0 mL pH = 6.12 V(NaOH) = 24.9 mL pH = 7.14 V(NaOH) = 25.0 mL pH = 8.72 V(NaOH) = 25.1 mL pH = 10.30 V(NaOH) = 26.0 mL pH = 11.29 V(NaOH) = 30.0 mL pH = 11.96 V(NaOH) = 40.0 mL pH = 12.36
Look at the jump from about pH 7.1 at 24.9 mL to about pH 10.3 at 25.1 mL. A single drop of titrant, about 0.05 mL, spans most of that change, which is what makes titrations precise.
Weak base with strong acid, and polyprotic acids
Titrating a weak base such as ammonia with a strong acid gives a mirror-image curve: it starts basic, passes through a buffer region where pH = pK_a of the conjugate acid (9.25 for ammonium) at the halfway point, and reaches an equivalence point below 7, because the solution then contains the weak acid NH₄⁺. A polyprotic acid with well-separated K_a values shows one equivalence point for each proton; phosphoric acid shows two clear jumps (the third proton is too weakly acidic to titrate in water).
Indicators
An acid–base indicator is itself a weak acid whose acid form (HIn) and base form (In⁻) have different colours. It changes colour over a range of about pK_a(HIn) ± 1. For an accurate titration, choose an indicator whose colour change falls on the steep part of the curve, ideally containing the equivalence point pH.
| Indicator | Colour change (acid → base) | pH range | Suitable for |
|---|---|---|---|
| Methyl orange | red → yellow | 3.1–4.4 | Weak base with strong acid |
| Methyl red | red → yellow | 4.4–6.2 | Weak base with strong acid |
| Bromothymol blue | yellow → blue | 6.0–7.6 | Strong acid with strong base |
| Phenolphthalein | colourless → pink | 8.2–10.0 | Weak acid with strong base; also strong–strong |
| Thymolphthalein | colourless → blue | 9.4–10.6 | Very weak acids |
For a strong acid–strong base titration, the jump is so large that bromothymol blue, phenolphthalein or even methyl red give essentially the same result. For a weak acid with a strong base, phenolphthalein is the right choice, because the equivalence point is near pH 8.7. Using methyl orange would give an end point far too early. Many natural pigments are indicators too: red cabbage juice runs from red through purple and green to yellow across the pH scale, because of anthocyanins.
Titration in practice
Titrations remain workhorses of quality control. Food inspectors determine the acidity of vinegar, juices and wine by titration; environmental labs measure alkalinity, a lake's capacity to neutralize acid, by titrating water samples with acid to an end point near pH 4.5, a key measurement in monitoring the recovery of acidified lakes in Ontario, Quebec and the northeastern United States. Modern labs often use automatic titrators with a pH electrode, which record the whole curve and find the equivalence point from where its slope is steepest.
Common mistakes
MistakeA mixture of HCl and NaCl is a buffer.
InsteadA buffer needs a weak acid and its conjugate base; chloride cannot accept protons.
MistakeThe pH at the equivalence point is always 7.
InsteadIt is 7 only for strong acid–strong base titrations; above 7 for weak acids and below 7 for weak bases.
MistakeAt the halfway point of a weak acid titration, pH = 7.
InsteadAt the halfway point [HA] = [A⁻], so pH = pK_a.
MistakeDiluting a buffer changes its pH a lot.
InsteadThe ratio [A⁻]/[HA] is unchanged, so the pH barely changes, though capacity falls.
MistakeAny indicator works for any titration.
InsteadChoose one whose colour change falls on the steep part of the curve around the equivalence point.
Summary and key terms
- A buffer contains a weak acid and its conjugate base (or a weak base and its conjugate acid) and resists pH change.
- Henderson–Hasselbalch: pH = pK_a + log([A⁻]/[HA]); valid for ratios between about 0.1 and 10.
- For additions, do the stoichiometry first, then apply the Henderson–Hasselbalch equation.
- Buffer capacity depends on concentrations; the useful range is about pK_a ± 1.
- In a weak acid titration, pH = pK_a at the halfway point and the equivalence point is basic.
- Titration curves are calculated region by region: weak acid, buffer, equivalence, excess titrant.
- Choose an indicator whose transition range lies on the steep part of the curve.
- buffer
- A solution that resists changes in pH when small amounts of acid or base are added.
- Henderson–Hasselbalch equation
- pH = pK_a + log([A⁻]/[HA]).
- buffer capacity
- The amount of acid or base a buffer can neutralize before its pH changes greatly.
- buffer range
- The pH range, about pK_a ± 1, over which a buffer is effective.
- titration curve
- A plot of pH against volume of titrant added.
- equivalence point
- The point at which stoichiometric amounts of acid and base have reacted.
- end point
- The point at which an indicator changes colour.
- half-equivalence point
- The point at which half the analyte has reacted; for a weak acid, pH = pK_a there.
- indicator
- A weak acid whose acid and base forms have different colours.
- alkalinity
- The capacity of water to neutralize acid, measured by titration.
Practice problems
Work each problem on paper first, then reveal the answer to check.
Find the pH of a buffer that is 0.10 M NH₃ and 0.15 M NH₄Cl (pK_a of NH₄⁺ = 9.25).
Show answer
9.25 + log(0.10/0.15) = 9.07.
What ratio of acetate to acetic acid gives pH 5.00?
Show answer
10^(5.00 − 4.74) = 1.8.
A buffer has 0.50 mol HA and 0.50 mol A⁻ (pK_a 6.00) in 1 L. Find the pH after adding 0.10 mol NaOH.
Show answer
6.00 + log(0.60/0.40) = 6.18.
Which acid would you choose for a buffer at pH 9.0: acetic, HOCl or NH₄⁺?
Show answer
NH₄⁺ (pK_a 9.25) is closest.
What is the pH at the halfway point when titrating formic acid (pK_a 3.74)?
Show answer
3.74.
25.0 mL of 0.100 M NH₃ is titrated with 0.100 M HCl. Is the equivalence point acidic, basic or neutral?
Show answer
Acidic, because NH₄⁺ is a weak acid.
Calculate the pH at the equivalence point in that titration.
Show answer
[NH₄⁺] = 0.0500 M; [H₃O⁺] = √(5.6 × 10⁻¹⁰ × 0.0500) = 5.3 × 10⁻⁶; pH = 5.28.
Which indicator suits that titration?
Show answer
Methyl red (4.4–6.2).
Why does a buffer stop working after enough acid is added?
Show answer
The conjugate base is used up, so added H₃O⁺ is no longer neutralized.
How does the body correct a rise in blood CO₂?
Show answer
Breathing faster removes CO₂, shifting the carbonic acid equilibrium and raising pH back toward 7.4.
Lesson quiz · 5 questions
Score 60% or more to complete this lesson.
Create a free account to save your progress, take quizzes and earn a certificate.