Hard water contains dissolved calcium and magnesium, picked up as rain water seeps through limestone, chalk and dolomite. It is harmless to drink – it even supplies some of these minerals – but it leaves limescale in kettles, boilers and pipes, and stops soap from lathering by forming insoluble scum. Hardness is reported as the mass of calcium carbonate that would contain the same number of calcium and magnesium ions, in mg/L (ppm) as CaCO₃.
The factors 2.497 and 4.118 are the molar mass of CaCO₃ (100.086 g/mol) divided by those of calcium (40.078) and magnesium (24.305). Laboratories often measure hardness directly by titrating with EDTA, which binds calcium and magnesium 1 : 1; this calculator handles both routes.
Countries use different units – German degrees (°dH), French degrees (°fH), English Clark degrees and grains per gallon – so every result here has a unit menu. If you know the alkalinity, the calculator also splits hardness into temporary (carbonate) hardness, which boiling removes as scale, and permanent hardness, which only ion exchange or reverse osmosis removes.
How to use the Water Hardness Calculator
- Method
- Calcium (Ca²⁺)
- Magnesium (Mg²⁺)
- EDTA volume used
- EDTA molarity
- Sample volume
- Total alkalinity as CaCO₃ (optional, 0 to skip)
Results update as you type, every field has its own unit menu, and everything is calculated in your browser.
How it works
Enter calcium and magnesium (in mg/L, mmol/L or meq/L) or the EDTA titration data. The calculator converts each ion to its CaCO₃ equivalent and adds them, then classifies the result on the USGS scale. Carbonate hardness is the smaller of total hardness and alkalinity (both as CaCO₃).
Worked example
A water sample contains 48 mg/L calcium and 12 mg/L magnesium. Calcium hardness = 2.4973 × 48 = 119.9 mg/L and magnesium hardness = 4.1179 × 12 = 49.4 mg/L, so total hardness is 169.3 mg/L as CaCO₃ – “hard” – equal to 9.48 °dH, 16.9 °fH, 9.89 gpg or 1.69 mmol/L. With an alkalinity of 150 mg/L as CaCO₃, 150 mg/L is carbonate (temporary) hardness and 19.3 mg/L is permanent hardness.
Hardness units
| Unit | mg/L as CaCO₃ |
|---|---|
| 1 mmol/L | 100.09 |
| 1 meq/L | 50.04 |
| 1 °dH (German) | 17.848 |
| 1 °e (Clark, English) | 14.254 |
| 1 °fH (French) | 10 |
| 1 gpg (US grain per gallon) | 17.118 |
Inputs explained
| Field | What to enter |
|---|---|
| Method | Choose one: Calcium and magnesium concentrations, EDTA titration |
| Calcium (Ca²⁺) | Units: mg/L, ppm, mmol/L, meq/L |
| Magnesium (Mg²⁺) | Units: mg/L, ppm, mmol/L, meq/L |
| EDTA volume used | Units: mL, L, µL, cm³ (cc), fl oz (US) |
| EDTA molarity | Units: mol/L (M), mmol/L (mM), µmol/L (µM), nmol/L (nM), mol/m³ |
| Sample volume | Units: mL, L, µL, cm³ (cc), fl oz (US) |
| Total alkalinity as CaCO₃ (optional, 0 to skip) | Units: mg/L as CaCO₃, meq/L, °dH |
What each result means
- Calcium hardness = 2.4973×[Calcium (Ca²⁺)]
- Magnesium hardness = 4.1179×[Magnesium (Mg²⁺)]
- German degrees = [Total hardness]÷17.848
- Grains per US gallon = [Total hardness]÷17.118
- Calcium + magnesium = [Total hardness]÷100.086
Formula
Hardness (mg/L CaCO₃) = 2.497 × [Ca²⁺] + 4.118 × [Mg²⁺] (mg/L)
EDTA titration: hardness = V(EDTA) × M(EDTA) × 100,086 ÷ V(sample)
Carbonate hardness = min(total hardness, alkalinity) · Non-carbonate = total − carbonate
Worked example
Inputs — Method: Calcium and magnesium concentrations; Calcium (Ca²⁺): 48 mg/L; Magnesium (Mg²⁺): 12 mg/L; Total alkalinity as CaCO₃ (optional, 0 to skip): 150 mg/L as CaCO₃.
Results — Calcium hardness = 119.87 mg/L CaCO₃; Magnesium hardness = 49.41 mg/L CaCO₃; Total hardness = 169.29 mg/L as CaCO₃; Classification = Hard (121–180 mg/L); German degrees = 9.48 °dH; Grains per US gallon = 9.89 gpg; Calcium + magnesium = 1.691 mmol/L; Carbonate (temporary) hardness = 150 mg/L as CaCO₃; Non-carbonate (permanent) hardness = 19.29 mg/L as CaCO₃.
Key terms
- Water hardness
- Concentration of calcium and magnesium expressed as CaCO₃.
- Carbonate hardness
- Hardness balanced by bicarbonate/carbonate alkalinity; removed by boiling.
- Non-carbonate hardness
- Hardness balanced by other anions; not removed by boiling.
- °dH
- German degree: 10 mg/L CaO, equal to 17.848 mg/L CaCO₃.
- EDTA
- Ethylenediaminetetraacetic acid, a chelating agent that binds metal ions 1 : 1.
Frequently asked questions
How do I calculate water hardness from calcium and magnesium?
Hardness = 2.497 × Ca + 4.118 × Mg (mg/L). 48 mg/L Ca and 12 mg/L Mg give 119.9 + 49.4 = 169.3 mg/L as CaCO₃ – hard water.
What counts as hard water?
On the USGS scale 0–60 mg/L is soft, 61–120 moderately hard, 121–180 hard and above 180 very hard.
How do I convert mg/L to °dH or gpg?
Divide by 17.848 for German degrees and by 17.118 for grains per US gallon; 1 °fH equals 10 mg/L CaCO₃.
How does the EDTA titration work?
EDTA binds Ca²⁺ and Mg²⁺ 1 : 1 at pH 10 with Eriochrome Black T as indicator. 12.5 mL of 0.0100 M EDTA for a 50 mL sample gives 12.5 × 0.01 ÷ 50 × 100,086 = 250 mg/L.
What is the difference between temporary and permanent hardness?
Temporary (carbonate) hardness is the part balanced by bicarbonate and precipitates as limescale on boiling; permanent hardness is balanced by sulfate or chloride and stays after boiling.
Is hard water bad for health?
No health-based limit exists; WHO notes hardness mainly affects taste and scaling, and some studies associate hard water with small cardiovascular benefits.
How do water softeners work?
Ion-exchange resins swap calcium and magnesium for sodium (or potassium), lowering hardness to near zero.