Charge Balance Error Calculator
Whether a water analysis is internally consistent — and, when it is not, which measurement to suspect.
✓ Reviewed by a hydrogeologist (Ph.D.) mg/L and meq/L input ±5 % acceptance criterion Sources: Hem 1985 · Freeze & Cherry 1979
What to enter for what you want
Enter the analysis as reported — normally mg/L. Each field converts to milliequivalents internally, which is the only basis on which charges can be added.
| To find | Enter | Read it in |
|---|---|---|
| Whether the analysis balances | all eight ions | Headline (%) and the validity note |
| How much charge is missing | all eight ions | Difference, in meq/L |
| Total dissolved solids | all eight ions | TDS calculated |
| Total hardness | Ca and Mg | Total hardness as CaCO₃ |
| Ionic strength for activity corrections | all eight ions | Ionic strength |
Leave a field at zero if the species was not measured — but read the note below first, because an unmeasured ion and an absent ion produce the same number here and mean entirely different things.
Why the charges must balance
A solution cannot carry a net charge. Every water sample, however complicated, satisfies electroneutrality exactly:
\sum_{\text{cations}} m_i z_i \;=\; \sum_{\text{anions}} m_i \lvert z_i \rvert
This is not an approximation or a modelling assumption — it is a property of the water itself. So when a laboratory report fails to balance, the water is not wrong; the analysis is. That makes the charge balance the single most useful check available on a water analysis, and it costs nothing but arithmetic.
The convention is to express the imbalance as a percentage of the total:
\text{CBE} \;=\; \frac{\sum \text{cations} - \sum \text{anions}} {\sum \text{cations} + \sum \text{anions}}\times 100\ \%
with all sums in milliequivalents per litre. Note the denominator: some texts divide by the mean of the two sums rather than the total, which doubles the reported error. Always check which convention a published value used before comparing it with this one.
From mg/L to meq/L
Charges cannot be summed in mg/L, because a milligram of calcium carries twice the charge of a milligram-equivalent of sodium and neither has the same molar mass. Converting requires dividing by the equivalent weight — the molar mass divided by the absolute charge:
\text{meq/L} \;=\; \frac{\text{mg/L}}{M / \lvert z \rvert}
| Ion | M (g/mol) | z | Equivalent weight |
|---|---|---|---|
| Ca²⁺ | 40.078 | +2 | 20.039 |
| Mg²⁺ | 24.305 | +2 | 12.153 |
| Na⁺ | 22.990 | +1 | 22.990 |
| K⁺ | 39.098 | +1 | 39.098 |
| HCO₃⁻ | 61.016 | −1 | 61.016 |
| SO₄²⁻ | 96.06 | −2 | 48.030 |
| Cl⁻ | 35.453 | −1 | 35.453 |
| NO₃⁻ | 62.004 | −1 | 62.004 |
What counts as acceptable
The conventional criterion is ±5 %, and most published analyses of reasonable quality fall within ±2 %. Above 5 % something is wrong; above 10 % the analysis should not be used for geochemical modelling at all, because speciation codes will force a balance by adjusting an ion and thereby propagate the error into every result they produce.
One qualification matters for dilute waters. The percentage form is unstable when the total is small: a 0.1 meq/L discrepancy is 1 % in a mineralised groundwater but 20 % in rainwater. For very dilute samples, judge the absolute difference in meq/L rather than the percentage. The calculator reports both.
Diagnosing the imbalance
A charge balance failure tells you that something is wrong, and its sign narrows down what. This is where the check earns its keep.
Cations in excess — most often bicarbonate. HCO₃⁻ is usually not measured directly but computed from titrated alkalinity, and it is the ion most frequently missing from a partial analysis. If the water is from a carbonate terrain and the cation excess is roughly equal to the expected HCO₃⁻, that is almost certainly the explanation.
Anions in excess — check for unmeasured cations. Iron and manganese in reducing groundwater, ammonium in contaminated water, or aluminium at low pH can all carry significant charge and are routinely omitted from a standard suite.
Either direction, roughly a factor of two — suspect a valence error in the unit conversion, most often on Ca²⁺ or SO₄²⁻, where dividing by the molar mass instead of the equivalent weight halves the result.
Either direction, roughly a factor of ten — a decimal place, usually in transcription rather than in the laboratory.
Worked example
Problem. A spring in a limestone terrain returns the following analysis, in mg/L. Does it balance?
Ca 65, Mg 8.0, Na 12, K 2.0, HCO₃ 210, SO₄ 22, Cl 18, NO₃ 5.0
- Convert the cations:
Ca 65/20.039 = 3.244,Mg 8.0/12.153 = 0.658,Na 12/22.990 = 0.522,K 2.0/39.098 = 0.051meq/L - Sum:
Σ cations = 4.475 meq/L - Convert the anions:
HCO₃ 210/61.016 = 3.442,SO₄ 22/48.030 = 0.458,Cl 18/35.453 = 0.508,NO₃ 5.0/62.004 = 0.081meq/L - Sum:
Σ anions = 4.488 meq/L CBE = (4.4751 − 4.4881)/(4.4751 + 4.4881) × 100 = −0.15 %
The analysis balances comfortably. Note also that HCO₃⁻ alone accounts for 77 % of the anion charge and Ca²⁺ for 72 % of the cation charge — the signature of water that has dissolved calcite, and consistent with the limestone setting.
Now suppose the calcium had been transcribed as 85 mg/L instead of 65.
Ca 85/20.039 = 4.242, so Σ cations = 5.473 and CBE = +9.9 %. The imbalance is 0.985 meq/L, which converts back to 19.7 mg/L of Ca²⁺.
The transcription error was 20.0 mg/L, so the recovered figure is close but not exact — short by 0.3 mg/L, which is precisely the −0.013 meq/L the analysis was already out by before anything was mistyped. The balance recovers the magnitude of an error, not its exact value, because it can only ever see the net of every error present. That is still enough to point at the right species, which is what the check is for.
Frequently asked
Should I enter zero for ions that were not measured?
You have to, but understand what it does. An unmeasured ion and an absent ion are indistinguishable to this calculation, so omitting HCO₃⁻ from a carbonate water produces a large cation excess that looks like an analytical failure. If a species was not measured, treat a one-sided imbalance as a hypothesis about that species rather than as evidence of error.
Why is my rainwater sample 30 % out when the absolute difference is tiny?
Because the percentage is divided by a very small total. At 0.3 meq/L total, an absolute error of 0.05 meq/L — well within analytical precision for dilute samples — is 17 %. Judge dilute waters by the absolute difference. Standard Methods gives ±0.2 meq/L as the criterion when the anion sum is below 3 meq/L.
Does a good balance mean the analysis is correct?
No, and this is worth being clear about. The balance is necessary but not sufficient. Two compensating errors of opposite sign will cancel, and an error in a species that carries no charge — silica, dissolved organic carbon, pH itself — cannot show up at all. A balanced analysis has passed one test, not every test.
Should I let PHREEQC adjust an ion to force the balance?
Only when you know which ion is uncertain and why. Speciation codes offer to balance on a chosen species, which is legitimate if that species was genuinely estimated rather than measured — charge-balancing on pH or on Cl⁻ is common practice. Balancing on an ion that was carefully measured hides the error instead of resolving it, and every downstream saturation index inherits it.
Read further
An analysis that passes this check is exactly what goes into a speciation run. PHREEQC from Scratch #2: Analyzing Seawater with Speciation takes a water analysis of the same shape and computes what the ions are actually doing in solution.
References
- Hem, J.D. (1985) Study and Interpretation of the Chemical Characteristics of Natural Water, 3rd ed. U.S. Geological Survey Water-Supply Paper 2254.
- Freeze, R.A. & Cherry, J.A. (1979) Groundwater. Prentice-Hall, Englewood Cliffs, NJ. Chapter 3.
- APHA/AWWA/WEF (2017) Standard Methods for the Examination of Water and Wastewater, 23rd ed. Section 1030 E, Anion–Cation Balance.
- Appelo, C.A.J. & Postma, D. (2005) Geochemistry, Groundwater and Pollution, 2nd ed. Balkema, Leiden.