# Titration Calculator

> Applies the equivalence-point balance n_a·M_a·V_a = n_t·M_t·V_t to a titration: it returns the titrant volume needed to reach equivalence for an analyte of known concentration, or the analyte concentration from the titrant volume consumed, together with the moles of analyte and titrant.

- Calculator id: `titration` · Category: Chemistry (`chemistry`) · Tool name: `calculate_titration`
- Canonical page: https://tttkmbb.com/chemistry/titration · This document: https://tttkmbb.com/chemistry/titration.md · JSON definition: https://tttkmbb.com/chemistry/titration.json

## Purpose

Applies the equivalence-point balance n_a·M_a·V_a = n_t·M_t·V_t to a titration: it returns the titrant volume needed to reach equivalence for an analyte of known concentration, or the analyte concentration from the titrant volume consumed, together with the moles of analyte and titrant.

**Use when:** You need the volume of standard titrant that neutralises a known sample, or the molarity of an unknown acid, base or other analyte from the titrant volume at the end point, including polyprotic acids, polybasic bases and redox titrations expressed in equivalents.

**Do not use when:** You need the pH during the titration or at the equivalence point of a weak acid or base (use weak-acid-ph or henderson-hasselbalch), or the reaction ratio is not captured by equivalents per formula unit (use stoichiometry with the balanced equation).

## Input

| Parameter | Type | Unit | Required | Description |
| --- | --- | --- | --- | --- |
| `mode` | enum: find_titrant_volume \| find_analyte_concentration |  | optional, default "find_titrant_volume" | find_titrant_volume needs analyte_molarity; find_analyte_concentration needs titrant_volume_ml. |
| `analyte_volume_ml` | number | mL | required | Volume of the sample (analyte solution) placed in the flask, in millilitres. (> 0, max 1000000) |
| `analyte_molarity` | number | mol/L | optional | Concentration of the analyte; required in find_titrant_volume mode, solved (and ignored if given) in find_analyte_concentration mode. (> 0, max 100) |
| `titrant_molarity` | number | mol/L | required | Concentration of the standardised titrant in the burette. (> 0, max 100) |
| `titrant_volume_ml` | number | mL | optional | Titrant volume delivered to reach the end point, in millilitres; required in find_analyte_concentration mode. (> 0, max 1000000) |
| `analyte_equivalents` | integer |  | optional, default 1 | Reacting units per formula unit of analyte: H⁺ per acid molecule (HCl 1, H2SO4 2, H3PO4 up to 3), OH⁻ per base (NaOH 1, Ca(OH)2 2) or electrons per ion in a redox titration (Fe²⁺ 1). (min 1, max 12) |
| `titrant_equivalents` | integer |  | optional, default 1 | Reacting units per formula unit of titrant (NaOH 1, Ba(OH)2 2, H2SO4 2, MnO4⁻ in acid 5). (min 1, max 12) |

## Output

| Field | Type | Unit | Description |
| --- | --- | --- | --- |
| `titrant_volume_ml` | number | mL | Titrant volume at the equivalence point, given or solved. |
| `analyte_molarity` | number | mol/L | Analyte concentration, given or solved. |
| `moles_analyte` | number | mol | analyte_molarity × analyte_volume_ml / 1000. |
| `moles_titrant` | number | mol | titrant_molarity × titrant_volume_ml / 1000. |
| `equivalents_mmol` | number | mmol | n_a × mmol analyte = n_t × mmol titrant: millimoles of H⁺/OH⁻ (or electrons) exchanged at equivalence. |
| `equivalence_note` | string |  | The mole balance at the equivalence point in words. |
| `solved_for` | string |  | titrant_volume_ml or analyte_molarity. |

## Formula

`analyte_equivalents × analyte_molarity × analyte_volume_ml = titrant_equivalents × titrant_molarity × titrant_volume_ml; titrant_volume_ml = n_a × M_a × V_a / (n_t × M_t); analyte_molarity = n_t × M_t × V_t / (n_a × V_a); moles = M × V_ml / 1000`

Valid at the equivalence point of a reaction that goes to completion (any acid with a strong base or base with a strong acid, and standard redox titrations); the indicator end point is assumed to coincide with it. Equivalents per formula unit let the same balance cover polyprotic acids, polybasic bases and redox reagents.

## Data Sources

- Wikipedia – Titration — https://en.wikipedia.org/wiki/Titration (reference, retrieved 2026-09-24)
- Wikipedia – Equivalence point — https://en.wikipedia.org/wiki/Equivalence_point (reference, retrieved 2026-09-24)
- OpenStax Chemistry 2e – 14.7 Acid-Base Titrations — https://openstax.org/books/chemistry-2e/pages/14-7-acid-base-titrations (textbook, retrieved 2026-09-24)

Data freshness: `static`. Deterministic formula with fixed constants; results never go stale. Inputs supplied by the caller determine the output.

## API

- `GET https://tttkmbb.com/api/v1/calculate/titration?analyte_volume_ml=…&titrant_molarity=…`
- `POST https://tttkmbb.com/api/v1/calculate/titration` with JSON body `{"inputs": {…}}`
- Response: unified envelope (`success`, `request`, `result.values`, `result.units`, `sources`, `freshness`, `timestamp`, `next_actions`, `links`); see https://tttkmbb.com/docs/response-format.md
- Schema: https://tttkmbb.com/api/v1/calculators/titration · OpenAPI operationId `calculate_titration` in https://tttkmbb.com/openapi.json
- Authentication: none. Rate limit: fair use, see https://tttkmbb.com/docs/rate-limits.md.

## MCP

- Server: `https://tttkmbb.com/mcp` (Streamable HTTP, JSON-RPC 2.0, no auth)
- Tool:  `run_calculator` with `{"calculator_id": "titration", "inputs": {…}}`

## Example

- 25.0 mL of 0.100 M H2SO4 (2 equivalents) titrated with 0.100 M NaOH: inputs `{"mode":"find_titrant_volume","analyte_volume_ml":25,"analyte_molarity":0.1,"titrant_molarity":0.1,"analyte_equivalents":2}` → `{"titrant_volume_ml":50,"moles_analyte":0.0025,"moles_titrant":0.005,"equivalents_mmol":5,"solved_for":"titrant_volume_ml"}`
- 20.0 mL of an unknown monoprotic acid neutralised by 15.0 mL of 0.200 M NaOH: inputs `{"mode":"find_analyte_concentration","analyte_volume_ml":20,"titrant_molarity":0.2,"titrant_volume_ml":15}` → `{"analyte_molarity":0.15,"moles_titrant":0.003,"moles_analyte":0.003,"equivalents_mmol":3,"solved_for":"analyte_molarity"}`

```
GET https://tttkmbb.com/api/v1/calculate/titration?mode=find_titrant_volume&analyte_volume_ml=25&analyte_molarity=0.1&titrant_molarity=0.1&analyte_equivalents=2
```

## Limitations

You need the pH during the titration or at the equivalence point of a weak acid or base (use weak-acid-ph or henderson-hasselbalch), or the reaction ratio is not captured by equivalents per formula unit (use stoichiometry with the balanced equation). Valid at the equivalence point of a reaction that goes to completion (any acid with a strong base or base with a strong acid, and standard redox titrations); the indicator end point is assumed to coincide with it. Equivalents per formula unit let the same balance cover polyprotic acids, polybasic bases and redox reagents. All values are computed from the formula above; no measurement or live data is involved.

## FAQ

**How do I standardise a titrant of unknown concentration?**

The balance is symmetric, so swap the roles: enter the unknown titrant as the analyte (its delivered volume as analyte_volume_ml) and the primary standard (e.g. KHP or Na2CO3) as the titrant with its known molarity and volume, then use find_analyte_concentration.

**Which equivalents do I use for a polyprotic acid?**

The number of protons titrated up to the end point you detect: H2SO4 2, oxalic acid 2, H3PO4 1 with methyl orange (first equivalence point) or 2 with phenolphthalein (second).

**Is the end point the same as the equivalence point?**

Not exactly: the end point is where the indicator changes colour, the equivalence point is the stoichiometric balance calculated here. A suitable indicator keeps the difference within a few hundredths of a millilitre.

## Related

- [Molarity Calculator](https://tttkmbb.com/chemistry/molarity.md) — Prepare the standard titrant at the required molarity.
- [Weak Acid pH Calculator](https://tttkmbb.com/chemistry/weak-acid-ph.md) — pH of the weak acid or base being titrated.
- [Stoichiometry Calculator](https://tttkmbb.com/chemistry/stoichiometry.md) — Reactions whose ratio is not a simple equivalents count.
