HomeChemistry & MaterialspH & Buffer Solutions

🧪 pH & Buffer Solutions

Interactive acid-base equilibrium simulation. Titrate a weak acid with strong base, watch the buffer region and equivalence point on a live titration curve, and explore Henderson-Hasselbalch pH, the HA/A⁻ ratio and buffer capacity.

Chemistry & Materials3DModerate60 FPS
ph-buffer ↗ Open standalone

About this simulation

This simulation lets you titrate a weak acid with a strong base and watch pH respond in real time. The model solves the exact equilibrium at every point: pure weak-acid dissociation before any base is added, the Henderson-Hasselbalch equation pH = pKa + log([A⁻]/[HA]) through the buffer region, and conjugate-base hydrolysis right at the equivalence point — so the curve, the beaker colour and the HA/A⁻ bar all stay chemically consistent as you drag the sliders.

🔬 What it shows

A beaker of weak acid HA (choose Acetic, Carbonic, Phosphate or Ammonium, or set any pKa from 2–11 yourself) being titrated with strong base of equal concentration. The titration curve plots pH against volume added, with dashed markers at the equivalence point (Veq) and half-equivalence point, where pH = pKa and buffer capacity β is greatest. The beaker colour follows a universal-indicator-style gradient, and a separate bar shows the live HA/A⁻ split.

🎮 How to use

Pick an acid preset or drag the pKa slider (2–11) and concentration slider (0.01–1 mol/L) to define your system, then use the "base added" slider (0–40 mL) or the +1 mL button to titrate. Try the temperature slider (5–60°C) to see how pKw — and therefore the pH scale itself — shifts with temperature. The four presets (Acetate buffer, Blood/bicarbonate, Phosphate, Strong-acid titration) jump straight to instructive configurations.

💡 Did you know?

At the half-equivalence point [HA] equals [A⁻], so the Henderson-Hasselbalch log term is log(1) = 0 and pH exactly equals pKa — this is also where buffer capacity β = 2.303·C·x·(1−x) peaks, making that region the most resistant to pH change. It's why your blood, buffered mainly by the carbonic acid/bicarbonate pair (pKa ≈ 6.1 in this simplified model), stays remarkably stable even as CO₂ levels fluctuate.

Frequently asked questions

What is the Henderson-Hasselbalch equation and where does the simulation use it?

The Henderson-Hasselbalch equation, pH = pKa + log([A⁻]/[HA]), relates the pH of a buffer to the ratio of conjugate base to weak acid. The simulation applies it throughout the buffer region — everywhere base has been added but hasn't fully consumed the acid — computing moles of A⁻ produced and HA remaining after each addition and feeding their ratio straight into the log term to get the live pH readout.

Why does the curve behave differently before any base is added and right at the equivalence point?

Before any base is added there's no conjugate base yet, so the Henderson-Hasselbalch ratio is undefined; the simulation instead solves the acid-dissociation quadratic directly from Ka to get the pH of the pure weak acid. At the equivalence point, essentially all HA has been converted to A⁻, so instead of a HA/A⁻ ratio the model treats A⁻ as a weak base undergoing hydrolysis with Kb = Kw/Ka, which is why the equivalence-point pH sits above 7 for a weak-acid titration rather than at exactly 7.

What does the pKa slider actually control, and what do the acid presets set it to?

pKa (range 2–11 in the simulation) is the negative log of the acid dissociation constant Ka and sets where the buffer region and equivalence-point jump sit on the titration curve. The four acid presets load realistic values: Acetic acid at pKa 4.76, Carbonic acid at pKa 6.35, Phosphate (H₂PO₄⁻) at pKa 7.21, and Ammonium (NH₄⁺) at pKa 9.25 — spanning the acidic, near-neutral and basic ends of the scale.

How does temperature affect the pH values shown?

The simulation adjusts pKw (the negative log of water's autoionisation constant) with temperature using pKw = 14.0 − 0.033·(T − 25), so warming the solution from 25°C lowers pKw slightly, which caps the maximum pH the model can reach and shifts strong-base-excess calculations accordingly. Dragging the temperature slider (5–60°C) shows that "neutral" pH and the whole 0–14 scale are themselves temperature-dependent, not fixed constants.

What is buffer capacity, and when is the buffer at its strongest?

Buffer capacity β measures how much strong acid or base a buffer can absorb per unit pH change; the simulation computes it as β = 2.303·C·x·(1−x), where C is the total concentration and x is the fraction converted to conjugate base. This expression is maximised when x = 0.5 — exactly the half-equivalence point where [HA] = [A⁻] and pH = pKa — which is why buffers are normally prepared with pH close to the pKa of the chosen acid.

⚙ Under the hood

Acid-base equilibria and buffering: Henderson-Hasselbalch pH=pKa+log([A⁻]/[HA]), titration curves with a buffer region and equivalence point, and buffer capacity. Titrate a weak acid and watch the indicator change.

ChemistrypHBufferTitrationHenderson-Hasselbalch

3D · Three.js / WebGL renderer · 60 FPS target · runs fully client-side, no install

What did you find?

Add reproduction steps (optional)