HomeCalculatorsChemistryHenderson–Hasselbalch Calculator
Chemistry calculator

Henderson–Hasselbalch Calculator

Compute buffer pH = pKa + log10([A−]/[HA]). Accepts pKa or Ka. Runs locally. Not ICE equilibrium and not pH = −log10[H+].

Instant result
Result
—

Enter values to calculate.

Inputs—
Mode—
Formula—
Trust summary CVP VERIFIED · CVP protocol 1.0.0-proposed · Engineering assurance · Buffer pH = pKa + log10(A/HA), with pKa or Ka, + O3 mpmath tabulated buffer pH.
Input interpretation
Enter values to calculate.
Result
—
Verified scope
Buffer pH = pKa + log10(A/HA), with pKa or Ka, + O3 mpmath tabulated buffer pH.
Assurance
Engineering
Declared partition coverage
PASS · 7/7 declared partitions (alias, ka, awkward, equal, acid, base, invalid-domain) · Matrix
Deferred
Not an ICE table and not pH = −log10[H+].
Numerical scope
O2: Henderson–Hasselbalch pH vs a separate-module identity (≤2 ULP). Not an ICE table. ≤2 ULP vs O3 applies only to the published tabulated buffer vectors. Not an ICE table.
Known limitations
  • Core CVP does not include live graph, viewport, or pointer interaction.
Model
Buffer pH from Henderson–Hasselbalch. pKa may be given directly or as Ka.
Scope
Monoprotic buffer; HA and A− are the pair as given
Verification
Engine tested · Source checked · v1.0.1 · CVP VERIFIED · CVP protocol 1.0.0-proposed · Engineering assurance · Buffer pH = pKa + log10(A/HA), with pKa or Ka, + O3 mpmath tabulated buffer pH.· View Manifest · CVP overview · Specification
Versions
Calculation 1.0.1 · CVP protocol 1.0.0-proposed · Evidence 2026-09-25.o2-o3.2
Verification revision
2026-09-25.o2-o3.2 · 1/1 property · digest 2125ba6d5a14
Legacy regression
11/11 tests · Production surface contract 6/6
Trust layers
Verification VERIFIED · Production CURRENT · Overall CVP state: VERIFIED under CVP 1.0.0-proposed
Reference
O1 model · O3 expected_values · O3 numerical_behavior · O2 expected_values · O2 numerical_behavior
Interfaces
PASS · UI (SSR) / REST / MCP — ui-ssr is query-result HTML, not a live browser session. Error-path engine·REST·MCP 1/1 (status, code, calculation_version). SSR compared on URL-canonical requested calculations; empty query is idle (not an error) and JSON-typed object/array inputs are REST/MCP-only.
Supplemental domain review
Not performed
Named expert review
Not performed
CVP suite
4/4 golden · 5/5 CVP boundary · 5/5 invalid · 1/1 property · 1/1 metamorphic · 8/8 O3 · 2/2 cross-interface · 6/6 CVP contract · Manifest
Sources
Sources
Evidence
1 legacy golden · 5 legacy boundary · legacy regression suite · 4/4 oracle-backed golden · 5/5 invalid · Artifact integrity PASS
This calculator CURRENT · Public schema 1.0.1 matches · Semantic contract ✓ · Production attested · Public/cache ✓ · Origin ✓
Semantic contract
PASS
Full verification

Manifest identity, reference classes, interfaces, suite, and production records.

Formulas

Core equations used by this calculator.

Henderson–HasselbalchpH = pKa + log₁₀([A⁻]/[HA])
pKa from KapKa = −log₁₀(Ka)
iConcentrations enter only as the ratio [A−]/[HA]. This page does not solve an ICE table and does not compute pH from [H+].

How to use

1

Enter pKa or Ka

Give one acidity encoding. Sending both is rejected.

2

Enter the buffer pair

[HA] and [A−] must both be greater than zero. Units cancel in the ratio.

3

Read pH

pH = pKa + log10([A−]/[HA]). Equal concentrations give pH = pKa.

Example calculations

Common configurations with formula and result.

ϟ

Equal concentrations

pKa=5, [HA]=0.1, [A−]=0.1

pH = pKa
pH=5
ϟ

Two-to-one conjugate base

pKa=5, [HA]=0.1, [A−]=0.2

pH = 5 + log10(2)
pH≈5.30103

Henderson–Hasselbalch calculator specification

Version 1.0.1 · Engine tested

Calculation status

Review policy · Evidence

Definition
Henderson–Hasselbalch: pH = pKa + log10([A−]/[HA]). pKa = −log10(Ka). Monoprotic buffer pair as given.
What it calculates
Buffer pH from Henderson–Hasselbalch. pKa may be given directly or as Ka.
Inputs
  • pKa | Ka
  • HA
  • A
Outputs
  • pH
  • pKa
  • Ka
  • HA
  • A
  • ratio
Formula
pH = pKa + log10([A−]/[HA])
Assumptions
  • Monoprotic buffer; HA and A− are the pair as given
  • Activity coefficients ≈ 1
  • Not ICE equilibrium
  • Not pH = −log10[H+]
  • Not polyprotic
Units
  • lab; HA and A as the same concentration unit
Boundary conditions
  • missing pKa and missing Ka → MISSING_REQUIRED_INPUT
  • pKa and Ka together → MIXED_INPUT_ENCODING
  • HA ≤ 0 or A ≤ 0 → VALUE_MUST_BE_POSITIVE
  • Ka ≤ 0 → VALUE_MUST_BE_POSITIVE
Example
pKa=5 HA=0.1 A=0.2 → pH=5+log10(2)
Validation cases

3 published on this page · 11/11 tests · Production surface contract 6/6 · View evidence

  • pKa=5 HA=0.1 A=0.1 → pH=5
  • pKa=5 HA=0.1 A=0.2 → pH=5+log10(2)
  • HA=0.1 A=0.1 → MISSING_REQUIRED_INPUT
Sources
Calculation version
1.0.1

Background

Interpretation and common distinctions.

Compute buffer pH from Henderson–Hasselbalch.

Supported and not supported

Supported — pH from pKa (or Ka) and [HA], [A−] · API chemistry.acid_base.henderson_hasselbalch

Not supported — ICE tables (see /calc/chemistry/weak-acid-equilibrium), activity coefficients, polyprotic, titration curves; pH from [H+] is /calc/chemistry/ph

Agent / API notes

Capability id: chemistry.acid_base.henderson_hasselbalch · tool id: henderson-hasselbalch · pin 1.0.1.

{ "pKa": 5, "HA": 0.1, "A": 0.2 }

Alternate encoding: { "Ka": 1e-5, "HA": 0.1, "A": 0.2 }. Errors: MISSING_REQUIRED_INPUT, INVALID_NUMBER, VALUE_MUST_BE_POSITIVE, MIXED_INPUT_ENCODING.

Calculator URL is /calc/chemistry/henderson-hasselbalch. Weak-acid ICE stays on /calc/chemistry/weak-acid-equilibrium. Converters stay on /convert/chemistry.

Other calculators in this family: pH, Weak-acid ICE, Weak-base ICE, Molarity .

Frequently asked questions

Key distinctions behind the calculation.

Is this pH = −log10[H+]?

No. That identity is /calc/chemistry/ph. This page is the buffer approximation from pKa and the HA / A− pair.

Does this solve an ICE table?

No. Henderson–Hasselbalch takes the pair as given. Weak-acid ICE is /calc/chemistry/weak-acid-equilibrium. Weak-base ICE is /calc/chemistry/weak-base-equilibrium.

Can I enter Ka instead of pKa?

Yes on the web form, REST, and MCP. Do not send pKa and Ka together.

Where does this run?

Locally in the browser by default. REST and MCP call the same chemistry-engine Henderson–Hasselbalch wrapper.