Water Hardness Calculator
Calculate the total hardness of water from calcium and magnesium or an EDTA titration, convert ppm, mg/L as CaCO₃, grains per gallon, °dH, °fH and mmol/L, find your water softener hardness setting, and split carbonate from non-carbonate hardness, with every step, a figure and four charts.
By StatsUnlock Team · Formulas from APHA Standard Methods 2340, IUPAC atomic weights and the USGS hardness classes, checked against published water chemistry · Last updated:
⚡ 0. Quick Answer
A water hardness calculator uses total hardness (mg/L as CaCO₃) = 2.497 × Ca + 4.118 × Mg, with calcium and magnesium in mg/L. For Ca = 40 mg/L and Mg = 10 mg/L: 99.9 + 41.2 = 141.1 mg/L as CaCO₃ (141 ppm), which is 8.24 grains per gallon and 7.90 °dH: hard water on the USGS scale.
Rule of thumb: under 60 mg/L (3.5 gpg) is soft; over 120 mg/L (7 gpg) is hard enough that a water softener is often worth considering. Set the softener to your hardness in grains per gallon, plus 4 for each ppm of iron.
⭐ Key Takeaways
- A water hardness calculator turns Ca 40 and Mg 10 mg/L into 141.1 mg/L as CaCO₃ = 8.24 gpg = 7.90 °dH = 1.41 mmol/L.
- EDTA titration: 12.5 mL of 0.01 M EDTA for a 50 mL sample is 250.2 mg/L as CaCO₃; each 1 mL is 20.02 mg/L.
- 1 grain per gallon = 17.12 ppm; 1 °dH = 17.85 ppm; 1 °fH = 10 ppm; 1 mmol/L = 100.09 ppm.
- Water softener setting = hardness in gpg + 4 × iron (ppm); 15 gpg with 1 ppm iron is 19 gpg.
- Carbonate (temporary) hardness = the smaller of hardness and alkalinity; the rest is non-carbonate (permanent).
📚 1. What Is Water Hardness and How Is It Calculated?
Water hardness is the total of the dissolved divalent metal ions, almost entirely calcium (Ca²⁺) and magnesium (Mg²⁺), picked up as water passes through limestone, dolomite and gypsum. Because the two ions have different masses, hardness is reported as the mass of calcium carbonate that would contain the same number of ions: mg/L as CaCO₃, which equals ppm as CaCO₃. Hard water forms scale in kettles, pipes and water heaters and stops soap from lathering; it is not a health hazard, and reviews of drinking-water studies link magnesium-rich hard water with modestly lower cardiovascular mortality (Monarca et al., 2006). A water hardness calculator applies the conversion factors exactly, from ions, from a titration or from another unit.
A worked one-liner: TH = 2.497 × 40 + 4.118 × 10 = 99.9 + 41.2 = 141.1 mg/L as CaCO₃; ÷ 17.12 = 8.24 gpg; ÷ 17.85 = 7.90 °dH.
Who uses it: chemistry students doing the EDTA hardness practical; water and wastewater operators; well owners reading a lab report; homeowners setting a water softener or dishwasher; aquarium keepers converting °dH (GH); and engineers designing lime softening. One page replaces separate hardness, ppm to gpg and softener calculators.
Quick answers to the questions people ask most
How do you calculate the hardness of water?
Multiply calcium in mg/L by 2.497 and magnesium in mg/L by 4.118, then add them. The result is total hardness in mg/L as CaCO₃, the same number as ppm. For Ca 40 and Mg 10 mg/L, 99.9 + 41.2 gives 141.1 mg/L. Without ion data, titrate with EDTA instead.
How do you calculate hardness of water in ppm as CaCO₃?
Convert each ion to its CaCO₃ equivalent with the ratio of molar masses: 100.086 ÷ 40.078 = 2.497 for calcium and 100.086 ÷ 24.305 = 4.118 for magnesium. Add the two. Because 1 mg/L is 1 ppm in dilute water, 141.1 mg/L as CaCO₃ is 141.1 ppm as CaCO₃.
How is water hardness calculated from an EDTA titration?
EDTA binds calcium and magnesium one to one at pH 10. Total hardness = volume of EDTA (mL) × molarity × 100,086 ÷ sample volume (mL). For 12.5 mL of 0.01 M EDTA and a 50 mL sample: 12.5 × 0.01 × 100,086 ÷ 50 = 250.2 mg/L as CaCO₃. Subtract any reagent blank first.
How do you convert ppm to grains per gallon?
Divide ppm (mg/L as CaCO₃) by 17.12. One grain is 64.8 mg and one US gallon is 3.785 L, so 1 grain per gallon is 17.12 mg/L. For example, 200 ppm is 11.68 gpg and 10 gpg is 171.2 ppm. Water softeners in the US are set and rated in grains.
How do you calculate a water softener hardness setting?
Start with hardness in grains per gallon, then add 4 for each ppm of dissolved iron, and round up. Water at 15 gpg with 1 ppm iron needs a setting of 19 gpg. Capacity needed is people × about 75 gallons a day × that setting × days between regenerations.
What is the scale for soft and hard water?
The USGS classes are 0 to 60 mg/L soft, 61 to 120 moderately hard, 121 to 180 hard, and over 180 very hard. In grains per gallon, under 1 is soft, 3.5 to 7 moderately hard and over 10.5 very hard. Germany uses mmol/L: under 1.5 soft, over 2.5 hard.
| Unit | Equals (mg/L as CaCO₃) | Where you see it | Headline water |
|---|---|---|---|
| mg/L as CaCO₃ (ppm) | 1 | Lab reports, US utilities | 141.1 |
| Grains per US gallon (gpg) | 17.12 | Water softeners, test strips | 8.24 |
| German degree (°dH) | 17.85 | Europe, dishwashers, aquariums (GH) | 7.90 |
| French degree (°fH) | 10 | France, Switzerland, Belgium | 14.11 |
| English (Clark) degree (°e) | 14.25 | Older UK sources | 9.90 |
| mmol/L | 100.09 | EU legislation, research | 1.41 |
🧮 2. Enter Your Water Data
Other divalent ions (optional, same units)
Enter the ion itself (Ca = 40 mg/L), not “Ca hardness as CaCO₃”. Leave optional fields blank if not measured.
Glassware and reagent tolerances (for the uncertainty)
Eriochrome Black T at pH 10 (wine red to blue) gives Ca + Mg. A second titration at pH 12 to 13 with murexide or calcon gives calcium alone.
US homes use about 60 to 80 gallons per person per day. Leave capacity blank to get a suggested size.
One sample per line: calcium (mg/L), magnesium (mg/L) and an optional label, separated by commas, tabs or spaces. A header row is skipped.
📊 3. Results and Step-by-Step Working
Working (Given, Required, Equation, Substitute, Solve)
Uncertainty budget
Step by step
Full results table
Your water, drawn from the numbers
Charts
Four plots that change with the mode: where the hardness comes from, its class, the units and how it responds to the inputs.
1.
2.
3.
4.
🧠 4. Understanding Your Water Hardness Result, In Detail
4.1 What the result means
___
4.2 The formula
___
4.3 The detail that changes the answer
___
4.4 Context
___
4.5 What to do next
___
4.6 Why express hardness as CaCO₃?
Calcium (40.078 g/mol) and magnesium (24.305 g/mol) carry the same charge, so one millimole of either removes the same amount of soap and forms the same amount of scale. Adding their masses directly would undercount magnesium. Converting both to the mass of CaCO₃ (100.086 g/mol) that contains the same number of ions puts them on one scale: 1 mmol/L of hardness is always 100.09 mg/L as CaCO₃, whichever ion supplies it. The factors 2.497 and 4.118 come straight from the IUPAC atomic weights (Prohaska et al., 2022).
4.7 Temporary and permanent hardness
Hardness paired with bicarbonate is carbonate or temporary hardness: heating drives off CO₂ and deposits CaCO₃ as scale, which is why kettles fur up. Hardness paired with sulfate, chloride or nitrate is non-carbonate or permanent hardness and survives boiling. Because alkalinity is also reported as CaCO₃, the split is simply the smaller of the two numbers.
4.8 Hardness and health
Hardness is an aesthetic and engineering issue, not a contaminant, and WHO sets no health-based guideline value. Observational studies associate magnesium in drinking water with lower cardiovascular mortality (Catling et al., 2008; Jiang et al., 2016), and hard water is linked with eczema in infants (Perkin et al., 2016), although a randomized trial of household softeners found no clear benefit for children with eczema (Thomas et al., 2011).
✍ 5. How to Write Water Hardness in a Report: Detailed Results
A hardness value in a report needs the number, the unit and its basis (mg/L as CaCO₃, not just mg/L), the method (calculation from Ca and Mg, or EDTA titration) and, for measured values, the uncertainty. The seven write-ups below are filled from the water hardness calculator; they show the headline example until you press Calculate.
Showing the headline example (Ca 40 mg/L, Mg 10 mg/L). Press Calculate above to fill all seven write-ups with your own result.
5.1 Style rules
| Rule | Write | Avoid |
|---|---|---|
| State the basis | 141 mg/L as CaCO₃ | 141 mg/L hardness |
| Name the method | by EDTA titration (Standard Methods 2340 C) | hardness was measured |
| Give a second unit for mixed readers | 141 mg/L as CaCO₃ (8.2 gpg) | 8.24 gpg only, in a European report |
| Give the class with its scale | hard (USGS) | “hard” with no scale |
| Match decimals to the method | 250 ± 3 mg/L | 250.2154 mg/L |
| Keep ions and hardness apart | Ca 40 mg/L; Ca hardness 99.9 mg/L as CaCO₃ | “calcium 99.9 mg/L” |
5.2 Seven ready-to-copy write-ups
∑ 6. What Is the Formula for Calculating Hardness of Water? All Formulas Used
🔀 7. How Do You Calculate Water Hardness? Flowchart, Step by Step
The same worked problem as Sections 0, 9, 10, 11 and 14: calcium 40 mg/L and magnesium 10 mg/L.
📝 8. How to Use This Water Hardness Calculator
- Pick what you want to calculate. Choose a mode in Section 2: hardness from calcium and magnesium, from an EDTA titration, a unit conversion, a water softener setting, or carbonate and non-carbonate hardness.
- Load a sample or type your values. Twelve worked problems are in the sample menu. Sample 1 is the headline problem. Nothing is calculated until you press Calculate Hardness.
- Check the units of your data. Calcium and magnesium can be in mg/L of the ion, mmol/L or meq/L. Values already reported as CaCO3 go in the converter instead.
- Add optional ions or alkalinity. Strontium, iron, manganese and barium count toward hardness; total alkalinity splits carbonate from non-carbonate hardness.
- For a titration, enter volumes and molarity. EDTA volume, its molarity and the sample volume; optionally a reagent blank, a calcium-only titration and glassware tolerances.
- For a softener, describe the household. Hardness, iron, number of people, gallons per person and days between regenerations; add your softener capacity to get its regeneration interval.
- Press Calculate Hardness. Press the button or Enter. The hardness in every unit, its class, a Verified badge, the formula and every step appear in Section 3.
- Read the figure and charts. The figure places your water on the USGS hardness scale; four charts show where the hardness comes from, its class, its units and its sensitivity.
- Copy the write-up. Section 5 fills seven ready texts for a report, a log, code, an exam, chat, a results paragraph and a table.
- Download or run a batch. Download Doc or PDF, or calculate many samples at once from a CSV of calcium and magnesium in the Batch tab.
📈 9. How to Calculate Water Hardness in Excel
Excel has no hardness function, but the formulas are one line each. The sheet repeats the headline problem (Ca 40 mg/L, Mg 10 mg/L), so the numbers match Sections 0, 7, 10, 11 and 14.
=2.497*A2+4.118*B2. It returns 141.06 (141.07 with exact factors).9.1 The formulas you need
| You want | Excel formula | Note |
|---|---|---|
| Total hardness, mg/L as CaCO₃ | =2.497*A2+4.118*B2 | Standard Methods 2340 B |
| Exact factors | =100.086*(A2/40.078+B2/24.305) | 141.07 |
| Grains per gallon | =E2/17.1185 | 8.24 |
| German degrees | =E2/17.848 | 7.90 °dH |
| mmol/L | =E2/100.086 | 1.41 |
| EDTA titration | =(A2-B2)*C2*100086/D2 | V, blank, M, V(sample) |
| USGS class | =IFS(E2<=60,"Soft",E2<=120,"Moderately hard",E2<=180,"Hard",TRUE,"Very hard") | Excel 2019+ |
| Softener setting | =ROUNDUP(F2+4*G2,0) | G2 = iron, ppm |
| Carbonate hardness | =MIN(E2,H2) | H2 = alkalinity as CaCO₃ |
9.2 Step by step
1 Enter the ions
Calcium in A2, magnesium in B2, in mg/L. Numbers only.
A2 holds 40, B2 holds 10.
2 Calcium and magnesium hardness
In C2 type =A2*100.086/40.078; in D2 type =B2*100.086/24.305.
C2 shows 99.89; D2 shows 41.18.
3 Total hardness
In E2 type =C2+D2.
E2 shows 141.07 mg/L as CaCO₃.
4 Grains per gallon
In F2 type =E2/17.1185.
F2 shows 8.24 gpg: hard water.
9.3 Many samples
Paste calcium and magnesium for every sample into columns A and B, select C2:F2 and fill down. Add the IFS formula in G to label each sample soft, moderately hard, hard or very hard.
9.4 Why Excel may differ from R or Python
| Situation | What happens | Fix |
|---|---|---|
| Rounded factors | 2.497 and 4.118 give 141.06; exact molar masses give 141.07 | Use one set of factors throughout |
| ROUND | Excel rounds half away from zero; R and Python round half to even | Round only the final value |
| Text in cells | “40 mg/L” is text and gives #VALUE! | Units in the header, numbers in the cells |
9.5 Charting
Select columns C and D and insert a Stacked Bar chart to show calcium and magnesium hardness for each sample. Add vertical lines at 60, 120 and 180 for the USGS classes.
9.6 Errors you may see
#VALUE!: a unit typed into a number cell.#DIV/0!: the sample volume cell is empty.- A hardness 2.5 times too high: the calcium value was already “as CaCO₃”.
📈 10. How to Calculate Water Hardness in R
A complete, copy-and-run script that reproduces the water hardness calculator for the headline problem. It calculates total hardness from calcium 40 mg/L and magnesium 10 mg/L, converts it to every unit, classifies it, works an EDTA titration with its uncertainty, sizes a water softener and saves one 300 dpi figure.
10.1 The complete script
R, base only, saves water_hardness.png
# Water hardness calculator in base R (StatsUnlock)
M <- c(Ca = 40.078, Mg = 24.305, CaCO3 = 100.086, CaO = 56.077)
hardness <- function(ca, mg) {
if (any(c(ca, mg) < 0)) stop("concentrations cannot be negative")
M["CaCO3"] * (ca / M["Ca"] + mg / M["Mg"]) # mg/L as CaCO3
}
units <- c(gpg = 64.79891 / 3.785411784, dH = 10 * M[["CaCO3"]] / M[["CaO"]], fH = 10,
e = 64.79891 / 4.54609, mmol = M[["CaCO3"]], meq = M[["CaCO3"]] / 2)
usgs <- function(th) cut(th, c(-Inf, 60, 120, 180, Inf),
labels = c("Soft", "Moderately hard", "Hard", "Very hard"))
# headline: Ca 40 mg/L, Mg 10 mg/L
ca <- 40; mg <- 10
th <- unname(hardness(ca, mg))
cat(sprintf("Ca hardness %.1f + Mg hardness %.1f = TH %.2f mg/L as CaCO3\n",
2.497 * ca, 4.118 * mg, th))
print(round(th / units, 3))
cat("USGS class:", as.character(usgs(th)), "\n")
# EDTA titration: 12.5 mL of 0.01 M EDTA, 50 mL sample, tolerances a
v <- 12.5; m <- 0.01; vs <- 50
th_t <- v * m * 100086 / vs
urel <- sqrt((0.05 / sqrt(3) / v)^2 + (0.0001 / sqrt(3) / m)^2 + (0.05 / sqrt(3) / vs)^2)
cat(sprintf("EDTA: TH = %.1f +/- %.1f mg/L (U, k = 2)\n", th_t, 2 * urel * th_t))
# softener: 15 gpg, 1 ppm iron, 4 people x 75 gal, 7 days
setting <- 15 + 4 * 1; per_day <- 4 * 75 * setting
cat(sprintf("Softener setting %d gpg; %d grains/day; %d grains for 7 days\n",
setting, per_day, per_day * 7))
png("water_hardness.png", width = 7, height = 4, units = "in", res = 300)
barplot(matrix(c(2.497 * ca, 4.118 * mg)), horiz = TRUE, col = c("#2563eb", "#0d9488"),
xlim = c(0, 250), xlab = "mg/L as CaCO3", legend.text = c("Ca", "Mg"))
abline(v = c(60, 120, 180), lty = 2, col = "grey40")
invisible(dev.off())
10.2 Output
Ca hardness 99.9 + Mg hardness 41.2 = TH 141.07 mg/L as CaCO3
gpg dH fH e mmol meq
8.241 7.904 14.107 9.897 1.409 2.819
USGS class: Hard
EDTA: TH = 250.2 +/- 3.1 mg/L (U, k = 2)
Softener setting 19 gpg; 5700 grains/day; 39900 grains for 7 days10.3 Traps
- hardness() is vectorized: pass whole columns of a data frame.
- cut() labels the USGS class; the intervals are closed on the right (60 is soft).
- Use mg/L of the ion, not values already “as CaCO₃”.
10.4 What each part does
| Block | Purpose |
|---|---|
| Constants | IUPAC molar masses; factors 2.497 and 4.118 computed, not typed |
| hardness() | Checks for negative values, then 100.086 × (Ca/40.078 + Mg/24.305) |
| Units and class | Divides by each unit factor and applies the USGS classes |
| Middle blocks | An EDTA titration with its expanded uncertainty and a 7-day water softener sizing |
| Last block | Stacked bar of calcium and magnesium hardness against the USGS class limits, saved at 300 dpi |
10.5 Adapting it
Change ca and mg for your sample, or pass whole columns: the functions are vectorized and work on a data frame of many samples at once.
📈 11. How to Calculate Water Hardness in Python
A complete, copy-and-run script that reproduces the water hardness calculator for the headline problem. It calculates total hardness from calcium 40 mg/L and magnesium 10 mg/L, converts it to every unit, classifies it, works an EDTA titration with its uncertainty, sizes a water softener and saves one 300 dpi figure.
Install once: pip install numpy matplotlib
11.1 The complete script
Python with NumPy and Matplotlib, saves water_hardness.png
# Water hardness calculator in Python (StatsUnlock)
import numpy as np
import matplotlib.pyplot as plt
M = {"Ca": 40.078, "Mg": 24.305, "CaCO3": 100.086, "CaO": 56.077}
UNITS = {"gpg": 64.79891 / 3.785411784, "dH": 10 * M["CaCO3"] / M["CaO"], "fH": 10.0,
"e": 64.79891 / 4.54609, "mmol": M["CaCO3"], "meq": M["CaCO3"] / 2}
def hardness(ca, mg):
"""Total hardness, mg/L as CaCO3, from Ca and Mg in mg/L."""
ca, mg = np.asarray(ca, float), np.asarray(mg, float)
if (ca < 0).any() or (mg < 0).any():
raise ValueError("concentrations cannot be negative")
return M["CaCO3"] * (ca / M["Ca"] + mg / M["Mg"])
def usgs(th):
return "Soft" if th <= 60 else "Moderately hard" if th <= 120 else "Hard" if th <= 180 else "Very hard"
ca, mg = 40, 10 # headline sample, mg/L
th = float(hardness(ca, mg))
print(f"Ca hardness {2.497 * ca:.1f} + Mg hardness {4.118 * mg:.1f} = TH {th:.2f} mg/L as CaCO3")
print({k: round(th / f, 3) for k, f in UNITS.items()})
print("USGS class:", usgs(th))
v, m, vs = 12.5, 0.01, 50 # EDTA titration
th_t = v * m * 100086 / vs
urel = np.sqrt((0.05 / np.sqrt(3) / v) ** 2 + (0.0001 / np.sqrt(3) / m) ** 2 + (0.05 / np.sqrt(3) / vs) ** 2)
print(f"EDTA: TH = {th_t:.1f} +/- {2 * urel * th_t:.1f} mg/L (U, k = 2)")
setting = 15 + 4 * 1 # softener: 15 gpg + 4 x 1 ppm iron
per_day = 4 * 75 * setting
print(f"Softener setting {setting} gpg; {per_day} grains/day; {per_day * 7} grains for 7 days")
fig, ax = plt.subplots(figsize=(7, 3))
ax.barh([0], [2.497 * ca], color="#2563eb", label="Ca")
ax.barh([0], [4.118 * mg], left=[2.497 * ca], color="#0d9488", label="Mg")
for x in (60, 120, 180):
ax.axvline(x, ls="--", c="grey")
ax.set_xlim(0, 250); ax.set_yticks([]); ax.set_xlabel("mg/L as CaCO3"); ax.legend()
fig.tight_layout(); fig.savefig("water_hardness.png", dpi=300)
11.2 Output
Ca hardness 99.9 + Mg hardness 41.2 = TH 141.07 mg/L as CaCO3
{'gpg': 8.241, 'dH': 7.904, 'fH': 14.107, 'e': 9.897, 'mmol': 1.409, 'meq': 2.819}
USGS class: Hard
EDTA: TH = 250.2 +/- 3.1 mg/L (U, k = 2)
Softener setting 19 gpg; 5700 grains/day; 39900 grains for 7 days11.3 Traps
- hardness() accepts lists or arrays, so a pandas column works directly.
- Use / not // so integer inputs are not truncated.
- Raise an error for negative concentrations instead of returning a number.
11.4 What each part does
| Block | Purpose |
|---|---|
| Constants | IUPAC molar masses; factors 2.497 and 4.118 computed, not typed |
| hardness() | Checks for negative values, then 100.086 × (Ca/40.078 + Mg/24.305) |
| Units and class | Divides by each unit factor and applies the USGS classes |
| Middle blocks | An EDTA titration with its expanded uncertainty and a 7-day water softener sizing |
| Last block | Stacked bar of calcium and magnesium hardness against the USGS class limits, saved at 300 dpi |
11.5 Adapting it
Change ca and mg for your sample, or pass whole columns: the functions are vectorized and work on a data frame of many samples at once.
📋 12. Water Hardness Conversion Charts and Scales
12.1 Grains per gallon to ppm, °dH, °fH and mmol/L
| gpg | ppm (mg/L CaCO₃) | °dH | °fH | mmol/L | USGS class |
|---|---|---|---|---|---|
| 1 | 17.1 | 0.96 | 1.71 | 0.17 | soft |
| 2 | 34.2 | 1.92 | 3.42 | 0.34 | soft |
| 3 | 51.4 | 2.88 | 5.14 | 0.51 | soft |
| 3.5 | 59.9 | 3.36 | 5.99 | 0.60 | soft |
| 4 | 68.5 | 3.84 | 6.85 | 0.68 | moderately hard |
| 5 | 85.6 | 4.80 | 8.56 | 0.86 | moderately hard |
| 6 | 102.7 | 5.75 | 10.27 | 1.03 | moderately hard |
| 7 | 119.8 | 6.71 | 11.98 | 1.20 | moderately hard |
| 8 | 136.9 | 7.67 | 13.69 | 1.37 | hard |
| 9 | 154.1 | 8.63 | 15.41 | 1.54 | hard |
| 10 | 171.2 | 9.59 | 17.12 | 1.71 | hard |
| 10.5 | 179.7 | 10.07 | 17.97 | 1.80 | hard |
| 12 | 205.4 | 11.51 | 20.54 | 2.05 | very hard |
| 15 | 256.8 | 14.39 | 25.68 | 2.57 | very hard |
| 20 | 342.4 | 19.18 | 34.24 | 3.42 | very hard |
| 25 | 428.0 | 23.98 | 42.80 | 4.28 | very hard |
| 30 | 513.5 | 28.77 | 51.35 | 5.13 | very hard |
1 gpg = 64.79891 mg ÷ 3.785412 L = 17.1185 mg/L; 1 °dH = 17.848 mg/L. Exact. Last checked: October 2026.
12.2 ppm to grains per gallon chart
| ppm | gpg | ppm | gpg | ppm | gpg |
|---|---|---|---|---|---|
| 0 | 0.00 | 200 | 11.68 | 400 | 23.37 |
| 25 | 1.46 | 225 | 13.14 | 425 | 24.83 |
| 50 | 2.92 | 250 | 14.60 | 450 | 26.29 |
| 75 | 4.38 | 275 | 16.06 | 475 | 27.75 |
| 100 | 5.84 | 300 | 17.53 | 500 | 29.21 |
| 125 | 7.30 | 325 | 18.99 | 525 | 30.67 |
| 150 | 8.76 | 350 | 20.45 | 550 | 32.13 |
| 175 | 10.22 | 375 | 21.91 | 575 | 33.59 |
gpg = ppm ÷ 17.1185. Last checked: October 2026.
12.3 Water hardness scales
| Class | USGS (mg/L CaCO₃) | Softener industry (gpg) | Germany (mmol/L) |
|---|---|---|---|
| Soft | 0 to 60 | under 1 (soft), 1 to 3.5 (slightly hard) | under 1.5 (under 8.4 °dH) |
| Moderately hard / medium | 61 to 120 | 3.5 to 7 | 1.5 to 2.5 (8.4 to 14 °dH) |
| Hard | 121 to 180 | 7 to 10.5 | over 2.5 (over 14 °dH) |
| Very hard | over 180 | over 10.5 | (no separate class) |
USGS classes as used in US Geological Survey water-quality reports; softener classes as printed by the water treatment industry; German classes from the Washing and Cleaning Agents Act. Last checked: October 2026.
12.4 Hardness factors for each ion
| Ion | Molar mass (g/mol) | mg/L as CaCO₃ per mg/L | per mmol/L | per meq/L |
|---|---|---|---|---|
| Ca²⁺ | 40.078 | 2.4973 | 100.086 | 50.043 |
| Mg²⁺ | 24.305 | 4.1179 | 100.086 | 50.043 |
| Sr²⁺ | 87.62 | 1.1423 | 100.086 | 50.043 |
| Fe²⁺ | 55.845 | 1.7922 | 100.086 | 50.043 |
| Mn²⁺ | 54.938 | 1.8218 | 100.086 | 50.043 |
| Ba²⁺ | 137.33 | 0.7288 | 100.086 | 50.043 |
| Zn²⁺ | 65.38 | 1.5308 | 100.086 | 50.043 |
Molar masses from the IUPAC standard atomic weights (Prohaska et al., 2022); CaCO₃ = 100.086 g/mol. Last checked: October 2026.
12.5 Water softener size by household and hardness
| People | Hardness (gpg) | Grains per day | Grains for 7 days | Suggested size |
|---|---|---|---|---|
| 1 | 5 | 375 | 2,625 | 16,000 |
| 1 | 10 | 750 | 5,250 | 16,000 |
| 1 | 15 | 1,125 | 7,875 | 16,000 |
| 1 | 20 | 1,500 | 10,500 | 16,000 |
| 1 | 25 | 1,875 | 13,125 | 16,000 |
| 2 | 5 | 750 | 5,250 | 16,000 |
| 2 | 10 | 1,500 | 10,500 | 16,000 |
| 2 | 15 | 2,250 | 15,750 | 16,000 |
| 2 | 20 | 3,000 | 21,000 | 24,000 |
| 2 | 25 | 3,750 | 26,250 | 32,000 |
| 3 | 5 | 1,125 | 7,875 | 16,000 |
| 3 | 10 | 2,250 | 15,750 | 16,000 |
| 3 | 15 | 3,375 | 23,625 | 24,000 |
| 3 | 20 | 4,500 | 31,500 | 32,000 |
| 3 | 25 | 5,625 | 39,375 | 40,000 |
| 4 | 5 | 1,500 | 10,500 | 16,000 |
| 4 | 10 | 3,000 | 21,000 | 24,000 |
| 4 | 15 | 4,500 | 31,500 | 32,000 |
| 4 | 20 | 6,000 | 42,000 | 48,000 |
| 4 | 25 | 7,500 | 52,500 | 64,000 |
| 5 | 5 | 1,875 | 13,125 | 16,000 |
| 5 | 10 | 3,750 | 26,250 | 32,000 |
| 5 | 15 | 5,625 | 39,375 | 40,000 |
| 5 | 20 | 7,500 | 52,500 | 64,000 |
| 5 | 25 | 9,375 | 65,625 | 80,000 |
| 6 | 5 | 2,250 | 15,750 | 16,000 |
| 6 | 10 | 4,500 | 31,500 | 32,000 |
| 6 | 15 | 6,750 | 47,250 | 48,000 |
| 6 | 20 | 9,000 | 63,000 | 64,000 |
| 6 | 25 | 11,250 | 78,750 | 80,000 |
75 US gallons per person per day; add 4 gpg per ppm of iron before using the table. Last checked: October 2026.
12.6 EDTA titration quick lookup (0.0100 M EDTA)
| EDTA (mL) | 50 mL sample (mg/L CaCO₃) | 100 mL sample (mg/L CaCO₃) | 25 mL sample (mg/L CaCO₃) |
|---|---|---|---|
| 1 | 20.0 | 10.0 | 40.0 |
| 2 | 40.0 | 20.0 | 80.1 |
| 3 | 60.1 | 30.0 | 120.1 |
| 5 | 100.1 | 50.0 | 200.2 |
| 7.5 | 150.1 | 75.1 | 300.3 |
| 10 | 200.2 | 100.1 | 400.3 |
| 12.5 | 250.2 | 125.1 | 500.4 |
| 15 | 300.3 | 150.1 | 600.5 |
| 20 | 400.3 | 200.2 | 800.7 |
| 25 | 500.4 | 250.2 | 1,000.9 |
TH = V × 0.0100 × 100,086 ÷ V(sample); for 0.0200 M EDTA, double every value. Last checked: October 2026.
📈 13. Water Hardness Calculation Examples: Worked Problems
Eight worked problems that cover what a water hardness calculator meets: a textbook ion calculation, an EDTA practical, a utility report, a well-water softener, an aquarium, a European dishwasher, boiler scale and the classic mistake. Each number was checked in Python.
Ca 48 mg/L and Mg 24 mg/L
Two factors and a sum.
A water sample contains 48 mg/L of calcium and 24 mg/L of magnesium. Calculate the total hardness in ppm as CaCO₃.
| Quantity | Value | Note |
|---|---|---|
| Calcium hardness | 119.9 mg/L | 48 × 2.497 |
| Magnesium hardness | 98.8 mg/L | 24 × 4.118 |
| Total hardness | 218.7 mg/L as CaCO₃ | 12.78 gpg, very hard |
What it means: Per milligram, magnesium adds 1.65 times as much hardness as calcium.
How to write it: "Total hardness was 218.7 mg/L as CaCO₃ (Ca 48 mg/L, Mg 24 mg/L)."
EDTA titration with a calcium titration
pH 10, then pH 12.
A 50.0 mL sample needs 15.6 mL of 0.0100 M EDTA at pH 10 (Eriochrome Black T) and 10.4 mL at pH 12 (murexide).
| Quantity | Value | Note |
|---|---|---|
| Total hardness | 312.3 mg/L | 15.6 × 0.01 × 100,086 ÷ 50 |
| Calcium hardness | 208.2 mg/L | 10.4 mL |
| Magnesium hardness | 104.1 mg/L | difference |
What it means: Magnesium hardness is found by difference, so its uncertainty is the larger.
How to write it: "Total hardness 312.3 mg/L as CaCO₃ (Ca hardness 208.2, Mg hardness 104.1)."
180 ppm in grains per gallon
Divide by 17.12.
A city water report lists hardness as 180 ppm. The softener asks for grains per gallon.
| Quantity | Value | Note |
|---|---|---|
| Grains per gallon | 10.52 gpg | 180 ÷ 17.1185 |
| German degrees | 10.09 °dH | 180 ÷ 17.848 |
| Classes | hard (USGS); very hard (softener scale) | different limits |
What it means: Always quote the number, not just the word.
How to write it: "Hardness 180 mg/L as CaCO₃ (10.52 gpg)."
25 gpg with 2 ppm iron, 5 people
Compensate, then size.
A family of five on a well with 25 gpg hardness and 2 ppm iron wants weekly regeneration.
| Quantity | Value | Note |
|---|---|---|
| Setting | 33 gpg | 25 + 4 × 2 |
| Grains per day | 12,375 | 5 × 75 × 33 |
| 7-day capacity | 86,625 grains | → 96,000-grain unit |
| Salt | about 26 lb/week | at 3,350 grains/lb |
What it means: Above about 10 ppm iron, fit an iron filter first.
How to write it: "Softener set to 33 gpg; 96,000-grain unit for 7-day regeneration."
GH 8 °dH in ppm
German degrees.
An aquarium test kit reads general hardness (GH) of 8 °dH.
| Quantity | Value | Note |
|---|---|---|
| ppm as CaCO₃ | 142.8 | 8 × 17.848 |
| mmol/L | 1.43 | 8 × 0.1783 |
| USGS class | hard |
What it means: °dH is based on CaO, so 1 °dH is 1.785 °fH.
How to write it: "GH 8 °dH (142.8 mg/L as CaCO₃)."
2.8 mmol/L in °dH
A European utility unit.
A German utility reports 2.8 mmol/L. The dishwasher needs °dH.
| Quantity | Value | Note |
|---|---|---|
| mg/L as CaCO₃ | 280.2 | 2.8 × 100.086 |
| °dH | 15.7 | ÷ 17.848, or 2.8 × 5.61 |
| German class | hard (over 2.5 mmol/L) |
What it means: 1 mmol/L = 5.61 °dH.
How to write it: "Hardness 2.8 mmol/L (15.7 °dH)."
TH 300 with alkalinity 120
Mostly permanent.
A process water has total hardness 300 mg/L and alkalinity 120 mg/L, both as CaCO₃.
| Quantity | Value | Note |
|---|---|---|
| Carbonate hardness | 120 mg/L | min(300, 120) |
| Non-carbonate hardness | 180 mg/L | 300 − 120 |
| Excess alkalinity | 0 | alk below TH |
What it means: Lime softening alone will not soften this water; soda ash or ion exchange is needed.
How to write it: "Carbonate hardness 120 mg/L, non-carbonate hardness 180 mg/L (as CaCO₃)."
Adding the ions
Ca + Mg is not hardness.
A student adds Ca 40 mg/L and Mg 10 mg/L and reports hardness as 50 mg/L.
| Quantity | Value | Note |
|---|---|---|
| Wrong | 50 mg/L | ion masses added |
| Right | 141.1 mg/L as CaCO₃ | each ion as CaCO₃ |
| Error | −65% | and the wrong class (soft vs hard) |
What it means: Always convert each ion to CaCO₃ before adding.
How to write it: "Total hardness 141.1 mg/L as CaCO₃, not 50 mg/L."
✏️ 14. How Do You Calculate Water Hardness by Hand and by EDTA Titration? Steps
The written method, calculator keys and the EDTA titration procedure, for the headline problem: Ca 40 mg/L and Mg 10 mg/L.
14.1 The written method
- Check the units. Ca and Mg in mg/L of the ion.
- Calcium hardness. 40 × 2.497 = 99.9 mg/L as CaCO₃.
- Magnesium hardness. 10 × 4.118 = 41.2 mg/L as CaCO₃.
- Add. 99.9 + 41.2 = 141.1 mg/L (ppm) as CaCO₃.
- Convert. 141.1 ÷ 17.12 = 8.24 gpg; ÷ 17.85 = 7.90 °dH.
- Check. 40/40.078 + 10/24.305 = 1.409 mmol/L × 100.086 = 141.1 ✓
14.2 On a calculator
| Step | Keys | Display |
|---|---|---|
| Total hardness | 2.497×40+4.118×10= | 141.06 |
| To gpg | Ans÷17.1185= | 8.24 |
| EDTA | 12.5×0.01×100086÷50= | 250.215 |
14.3 Lab SOP: total hardness by EDTA titration (Standard Methods 2340 C)
Purpose
Determine total hardness of a water sample as mg/L CaCO₃.
Equipment and reagents
50 mL burette (Class A); 50 mL volumetric pipette; 250 mL conical flasks; 0.0100 M Na₂EDTA standardized against a CaCO₃ standard; ammonia buffer (pH 10); Eriochrome Black T indicator; distilled water.
Hazards and controls
Ammonia buffer is corrosive and irritating: use in a fume hood with goggles and gloves. EDTA is low hazard. Dispose of waste per local rules.
Procedure
- Pipette 50.0 mL of sample into a flask.
- Add 1 to 2 mL of buffer to reach pH 10.0 ± 0.1.
- Add 1 to 2 drops of Eriochrome Black T: the solution turns wine red.
- Titrate with EDTA, swirling, until the last reddish tinge turns pure blue. Finish within 5 minutes of adding buffer.
- Repeat until duplicates agree within 0.1 mL; titrate a distilled-water blank.
- TH = (V − Vblank) × M × 100,086 ÷ 50.
Record sheet
| Item | Value | Unit |
|---|---|---|
| Titrations | 12.50, 12.45, 12.55 | mL |
| Mean | 12.50 | mL |
| Blank | 0.00 | mL |
| Total hardness | 250.2 ± 3.1 | mg/L as CaCO₃ |
Acceptance criteria
Duplicates within 0.1 mL; a check standard within ± 5% of its value. These are teaching-lab criteria; follow your laboratory’s SOP where they differ.
Sources of error and their direction
- Overshooting the endpoint: high.
- No blank correction: high.
- pH too low: fuzzy endpoint, usually high.
- Iron, copper or aluminum present: endpoint blocked, high or no endpoint.
- Unstandardized EDTA: either way.
14.4 Practice problems
1. Ca 60 mg/L, Mg 12 mg/L. Total hardness?
199.3 mg/L as CaCO₃
2. Convert 250 ppm to gpg.
14.60 gpg
3. Convert 12 gpg to ppm.
205.4 ppm
4. Convert 10 °dH to ppm.
178.5 ppm
5. 9.8 mL of 0.0100 M EDTA for a 50 mL sample. Hardness?
196.2 mg/L
6. Ca 1.5 mmol/L and Mg 0.6 mmol/L. Hardness in mg/L?
210.2 mg/L
7. 20 gpg and 0.5 ppm iron. Softener setting?
22 gpg
8. 3 people, 12 gpg, 75 gal each. Grains per day?
2,700 grains
9. TH 200, alkalinity 260. Carbonate and non-carbonate?
CH 200, NCH 0, excess alkalinity 60
10. Classify 95 mg/L on the USGS scale.
moderately hard
14.5 Mistakes that lose marks
- Adding the ion masses instead of their CaCO₃ equivalents.
- Forgetting “as CaCO₃” in the unit.
- Using mL instead of L for the sample volume.
- Leaving out the blank.
- Confusing °dH and °fH.
- Classifying without naming the scale.
14.6 Check-yourself and lab questions
Check: Why multiply calcium by 2.497?
100.086 ÷ 40.078: it expresses the calcium as the CaCO₃ with the same number of ions.
Check: Why does magnesium have a larger factor than calcium?
It is lighter (24.3 g/mol), so each milligram contains more ions.
Check: How many ppm is 1 gpg?
17.12 ppm.
Check: What does carbonate hardness depend on?
The smaller of total hardness and alkalinity.
Lab: Why buffer the titration at pH 10?
EDTA binds Ca and Mg strongly and Eriochrome Black T changes color sharply there.
Lab: Why does the pH 12 titration give calcium only?
Magnesium precipitates as Mg(OH)₂ and does not react.
Lab: Why run a reagent blank?
Trace hardness in the buffer and water would otherwise be counted.
Lab: Duplicate titrations differ by 0.3 mL. What next?
Repeat: they should agree within about 0.1 mL.
✅ 15. Which Hardness Method and Unit Should You Use?
| Situation | Use | Calculator mode | Example |
|---|---|---|---|
| A lab report lists Ca and Mg | 2.497 Ca + 4.118 Mg | Calcium and magnesium | Ca 40, Mg 10 → 141.1 mg/L |
| Chemistry practical, titration | EDTA, Eriochrome Black T | EDTA titration | 12.5 mL, 0.01 M, 50 mL → 250.2 mg/L |
| A test strip or utility report in another unit | Unit conversion | Convert units | 200 ppm = 11.68 gpg |
| Setting or buying a water softener | Grains per gallon | Water softener | 15 gpg + 1 ppm iron → 19 gpg |
| Scale, boilers, lime softening | Carbonate split | Carbonate hardness | TH 250, Alk 180 → NCH 70 |
| Aquarium GH or a European dishwasher | °dH or mmol/L | Convert units | 8 °dH = 142.8 mg/L |
- You have ICP or AAS results for Ca and Mg.
- You want calcium and magnesium hardness separately.
- You want to include Sr, Fe or Mn.
- No instrument data is available.
- You need a quick routine check (Standard Methods 2340 C).
- Teaching complexometric titration (Yappert & DuPré, 1997).
🔧 16. Common Water Hardness Calculation Mistakes
Almost every wrong hardness value comes from a unit basis, a factor or the titration endpoint. The water hardness calculator guards against each one below.
| Symptom | Cause | Fix |
|---|---|---|
| Hardness equals Ca + Mg (50 mg/L) | Added ion masses without the factors | 2.497 Ca + 4.118 Mg = 141.1 mg/L |
| Hardness far too high | Multiplied a value already “as CaCO₃” by 2.497 | Check the basis on the report |
| Answer 1000 times off | Mixed mmol/L and mg/L, or mL and L | Choose the right unit in the calculator |
| Titration result too high | No reagent blank, or overshot endpoint | Subtract the blank; add EDTA dropwise near blue |
| Endpoint fades or never turns blue | pH not 10, or Fe, Cu or Al interferes | Fresh buffer; add cyanide-free masking agent per method |
| Calcium titration greater than total | Murexide endpoint read late, or pH below 12 | pH 12 to 13 so Mg(OH)₂ precipitates |
| Softener lets hard water through | Setting ignores iron or is below true hardness | Add 4 gpg per ppm iron; retest |
| TDS meter used as hardness | TDS includes Na, Cl, SO₄ | Use a hardness test or Ca and Mg |
| °dH treated as mg/L ÷ 10 | Confused °dH with °fH | 1 °dH = 17.85 mg/L; 1 °fH = 10 mg/L |
| Excel gives a hardness of 0 | Numbers stored as text (“40 mg/L”) | Numbers only in the cell |
⚠️ 17. Assumptions and Limitations
| Assumption | How to check | If it fails |
|---|---|---|
| Ca and Mg carry nearly all hardness | Sr, Fe, Mn, Ba usually under 5% | Enter the other ions |
| Ion values are dissolved, in mg/L | Lab report units and filtration | Choose mmol/L or meq/L |
| EDTA reacts 1:1 at pH 10 | Buffer pH, standardized EDTA | Restandardize; check the buffer |
| Tolerances are rectangular | Class A glassware tolerances | Use your own tolerances; add endpoint repeatability |
| Softener rule: + 4 gpg per ppm iron | Softener manual | Use the manufacturer’s factor; above about 10 ppm, use an iron filter |
| 75 gallons per person per day | Water bills | Enter your own daily use |
| Alkalinity is bicarbonate | pH below about 8.3 | At higher pH, split carbonate and hydroxide alkalinity first |
Hardness is not regulated as a health contaminant in the US; several EU countries set minimum or recommended calcium and magnesium levels (Kožíšek, 2020). This calculator gives chemistry and softener sizing, not medical or engineering certification.
🎯 18. Conclusion
Your result
The water hardness calculator gives 141.1 mg/L CaCO₃ (8.24 gpg, 7.90 °dH): hard water. Hardness = 2.497 Ca + 4.118 Mg, in mg/L as CaCO₃.
What the water hardness calculator does
Water hardness is one idea, divalent metal ions counted as CaCO₃, reported in half a dozen units and measured in two main ways. This water hardness calculator works from calcium and magnesium or an EDTA titration, converts between ppm, gpg, °dH, °fH, °e and mmol/L, sizes and sets a water softener, and splits carbonate from non-carbonate hardness, with every step shown.
Watch out for
- mg/L of the ion is not mg/L as CaCO₃.
- Subtract the titration blank.
- 1 gpg = 17.12 ppm, not 17.
- Add iron to the softener setting.
- Name the class’s scale.
Next steps
To make EDTA and calcium standards, use the molarity calculator and dilution calculator; for brine strength, the specific gravity calculator. Whatever the unit, start and finish with the water hardness calculator.
❓ 19. Frequently Asked Questions
Q1. How do you calculate the hardness of water?
Multiply the calcium concentration in mg/L by 2.497 and the magnesium concentration in mg/L by 4.118, then add the two results. The total is hardness in mg/L as CaCO3, which is the same number as ppm as CaCO3. For calcium 40 mg/L and magnesium 10 mg/L, 99.9 + 41.2 gives 141.1 mg/L, which is hard water.
Q2. What is the formula for calculating hardness of water?
Total hardness (mg/L as CaCO3) = 2.497 × Ca + 4.118 × Mg, with both ions in mg/L. This is the calculation method in Standard Methods 2340 B. The factors are the molar mass of calcium carbonate, 100.086, divided by 40.078 for calcium and 24.305 for magnesium, so each ion is counted as the CaCO3 it equals.
Q3. How do you calculate hardness of water in ppm as CaCO3?
Work out the hardness in mg/L as CaCO3 with 2.497 × Ca + 4.118 × Mg, then read it as ppm, because 1 mg/L equals 1 ppm in fresh water. If your data are in mmol/L, add calcium and magnesium in mmol/L and multiply by 100.086. For 1.2 and 0.4 mmol/L, 1.6 × 100.086 = 160.1 ppm as CaCO3.
Q4. How do you calculate total hardness from an EDTA titration?
Total hardness = volume of EDTA in mL × EDTA molarity × 100,086 ÷ sample volume in mL. EDTA reacts one to one with calcium and magnesium at pH 10 with Eriochrome Black T. For 12.5 mL of 0.01 M EDTA and a 50 mL sample, 12.5 × 0.01 × 100,086 ÷ 50 = 250.2 mg/L as CaCO3.
Q5. How do you calculate calcium and magnesium hardness separately?
Run a second EDTA titration at pH 12 to 13 with murexide or calcon indicator. Magnesium precipitates as hydroxide, so only calcium reacts. Calcium hardness comes from that volume with the same formula, and magnesium hardness is total hardness minus calcium hardness. From ion data, calcium hardness is 2.497 × Ca and magnesium hardness 4.118 × Mg.
Q6. How do you convert ppm to grains per gallon?
Divide ppm, or mg/L as CaCO3, by 17.12. One grain is 64.8 milligrams and one US gallon is 3.785 liters, so one grain per gallon is 17.12 mg/L. For example, 200 ppm is 11.68 gpg, 171 ppm is 10 gpg, and 60 ppm, the upper limit of soft water, is 3.5 gpg.
Q7. How do you convert grains per gallon to ppm?
Multiply grains per gallon by 17.12. So 10 gpg is 171.2 ppm as CaCO3, 15 gpg is 256.8 ppm, and 1 gpg is 17.1 ppm. Some test kits round the factor to 17.1 or 17; the exact value is 17.1185. Water softeners in the United States are set in grains per gallon, while utilities report ppm.
Q8. What is a German degree of hardness (°dH)?
One German degree, °dH or dGH, is 10 mg/L of calcium oxide, which equals 17.85 mg/L as CaCO3 or 0.178 mmol/L. To convert, multiply °dH by 17.85 for ppm, or divide ppm by 17.85. Aquarium general hardness (GH) and many European dishwashers use °dH: 8 °dH is about 143 ppm.
Q9. What is the water hardness scale?
The USGS scale is 0 to 60 mg/L as CaCO3 soft, 61 to 120 moderately hard, 121 to 180 hard, and over 180 very hard. The water softener scale in grains per gallon is under 1 soft, 1 to 3.5 slightly hard, 3.5 to 7 moderately hard, 7 to 10.5 hard and over 10.5 very hard.
Q10. How do you calculate water softener hardness setting?
Convert your hardness to grains per gallon, add 4 grains for every ppm of dissolved iron, and round up. That number is the hardness setting on the control valve. For 15 gpg and 1 ppm iron, the setting is 19 gpg. If softened water still tests hard, raise the setting by 1 or 2 grains.
Q11. What size water softener do I need?
Multiply people by daily use per person, usually about 75 gallons, then by the compensated hardness in grains per gallon, to get grains removed per day. Multiply by the days you want between regenerations, often 7. For 4 people at 19 gpg, 4 × 75 × 19 × 7 = 39,900 grains, so a 40,000-grain softener.
Q12. How many days between water softener regenerations?
Divide the softener capacity in grains by the grains removed per day, then keep about one day in reserve. A 32,000-grain softener in a home using 4,500 grains a day lasts 7.1 days to exhaustion, so it regenerates every 6 days. Gallons between regenerations equal capacity divided by the hardness setting.
Q13. What is the difference between carbonate and non-carbonate hardness?
Carbonate, or temporary, hardness is calcium and magnesium balanced by bicarbonate, and boiling turns it into scale. Non-carbonate, or permanent, hardness is balanced by sulfate, chloride or nitrate and stays in solution. Carbonate hardness equals the smaller of total hardness and alkalinity, both as CaCO3; non-carbonate hardness is the remainder.
Q14. Is mg/L the same as ppm for water hardness?
For fresh water, yes. One liter of dilute water weighs about one kilogram, so 1 mg/L is 1 part per million by mass. Both must be expressed as CaCO3 to be hardness values. A report giving calcium as 40 mg/L means 40 ppm of calcium ion, which is 99.9 ppm of hardness as CaCO3.
Q15. How do you convert mmol/L hardness to mg/L as CaCO3?
Multiply mmol/L by 100.086, the molar mass of calcium carbonate. 1 mmol/L of hardness is 100.09 mg/L as CaCO3, 2.5 mmol/L is 250.2 mg/L, and 1.5 mmol/L, the German limit between soft and medium water, is 150.1 mg/L. For milliequivalents per liter, multiply by 50.04 instead, because each divalent ion carries two equivalents.
Q16. Does a TDS meter measure water hardness?
No. A TDS meter measures electrical conductivity and estimates all dissolved solids, including sodium, potassium, chloride, sulfate and nitrate. Hardness counts only calcium, magnesium and other divalent metals. Softened water can have a high TDS but near zero hardness. Use a hardness test strip, an EDTA titration or a laboratory calcium and magnesium analysis.
Q17. Is hard water bad for your health?
Hard water is not a health hazard, and the WHO sets no health-based limit for hardness. Reviews of observational studies link magnesium in drinking water with lower cardiovascular mortality. Hard water is associated with infant eczema, but a randomized trial of household softeners found no clear benefit. Its main effects are scale, soap use and appliance life.
Q18. How much sodium does a water softener add?
Ion exchange replaces each calcium or magnesium ion with two sodium ions. Softening 1 grain per gallon adds about 7.5 to 8 mg/L of sodium, or about 0.46 mg/L of sodium per mg/L of hardness removed. Water at 15 gpg gains about 115 to 120 mg/L of sodium. Potassium chloride salt or a bypassed drinking tap avoids this.
Q19. How do you calculate water hardness in Excel?
Put calcium in A2 and magnesium in B2, then type =2.497*A2+4.118*B2 for hardness in mg/L as CaCO3. Divide by 17.1185 for grains per gallon and by 17.848 for °dH. For a titration, use =(A2-B2)*C2*100086/D2 with EDTA volume, blank, molarity and sample volume. Fill the formulas down to calculate many samples at once.
Q20. What is the hardness of rain, tap and well water?
Rainwater is usually soft, under 10 mg/L as CaCO3. Tap water varies with its source, from soft to over 300 mg/L, and surveys of tap and bottled waters find calcium and magnesium vary widely between brands and cities. Wells in limestone and chalk are often very hard. Check your utility report or test it yourself.
📑 20. Cite This Tool
StatsUnlock. (2026). Water hardness calculator [Interactive laboratory tool]. https://statsunlock.com/water-hardness-calculator/@misc{statsunlock_water_hardness_calculator_2026, title={Water Hardness Calculator}, author={{StatsUnlock Team}}, year={2026}, note={Interactive laboratory tool}, url={https://statsunlock.com/water-hardness-calculator/}}Total hardness was calculated from calcium and magnesium as 2.497[Ca] + 4.118[Mg] mg/L as CaCO3 (APHA Standard Methods 2340 B) using the StatsUnlock Water Hardness Calculator (2026).🔗 21. Related Tools
Make 0.0100 M EDTA and CaCO3 standards.
Dilute stock EDTA or calcium standards.
Indicator and buffer solutions by percent.
Write ion concentrations in mol/L clearly.
Brine and salt solution strength.
Water heater and boiler temperatures in °C and °F.
Mass and velocity: a physics companion for lab classes.
Hooke’s law: a physics companion for lab classes.
More lab, chemistry and measurement tools from StatsUnlock, with worked steps, code and references.
📖 22. Glossary of Terms
| Term | Plain-English meaning |
|---|---|
| Alkalinity | Acid-neutralizing capacity, mostly bicarbonate, reported as mg/L CaCO₃. |
| Calcium hardness | The part of hardness from calcium: 2.497 × Ca. |
| Carbonate (temporary) hardness | Hardness balanced by bicarbonate; removed by boiling. |
| Compensated hardness | Softener setting: hardness in gpg plus an allowance for iron. |
| °dH | German degree: 10 mg/L CaO = 17.85 mg/L CaCO₃. |
| °e | English or Clark degree: 1 grain per imperial gallon = 14.25 mg/L. |
| EDTA | Ethylenediaminetetraacetic acid; binds Ca and Mg 1:1. |
| Eriochrome Black T | Indicator: wine red with Mg, blue when free, at pH 10. |
| °fH | French degree: 10 mg/L CaCO₃. |
| Grain per gallon (gpg) | 64.8 mg per US gallon = 17.12 mg/L as CaCO₃. |
| Ion exchange | Resin swaps Ca and Mg for Na or K. |
| Magnesium hardness | The part of hardness from magnesium: 4.118 × Mg. |
| meq/L | Milliequivalents per liter; 1 meq/L = 50.04 mg/L as CaCO₃. |
| mg/L as CaCO₃ | Hardness expressed as the equivalent mass of calcium carbonate; = ppm. |
| Murexide | Indicator for calcium alone at pH 12 to 13. |
| Non-carbonate (permanent) hardness | Hardness balanced by sulfate, chloride or nitrate. |
| Regeneration | Flushing the softener resin with brine to restore capacity. |
| Scale | CaCO₃ deposit from heated hard water. |
| Total hardness | Sum of all divalent metal ions as CaCO₃. |
| USGS scale | Soft 0 to 60, moderate 61 to 120, hard 121 to 180, very hard over 180 mg/L. |
📚 23. References
Peer-reviewed sources behind this water hardness calculator: IUPAC atomic weights, EDTA complexometric titration, ion-exchange softening, calcium and magnesium in tap and bottled water, hardness and health, regulation, and measurement uncertainty. Standards (APHA Standard Methods 2340 B and C, JCGM 100:2008, NSF/ANSI 44) are named where they are used. Every DOI checked October 2026.
- Apell, J. N., & Boyer, T. H. (2010). Combined ion exchange treatment for removal of dissolved organic matter and hardness. Water Research, 44(8), 2419–2430. https://doi.org/10.1016/j.watres.2010.01.004
- Azoulay, A., Garzon, P., & Eisenberg, M. J. (2001). Comparison of the mineral content of tap water and bottled waters. Journal of General Internal Medicine, 16(3), 168–175. https://doi.org/10.1111/j.1525-1497.2001.04189.x
- Brastad, K. S., & He, Z. (2013). Water softening using microbial desalination cell technology. Desalination, 309, 32–37. https://doi.org/10.1016/j.desal.2012.09.015
- Catling, L. A., Abubakar, I., Lake, I. R., Swift, L., & Hunter, P. R. (2008). A systematic review of analytical observational studies investigating the association between cardiovascular disease and drinking water hardness. Journal of Water and Health, 6(4), 433–442. https://doi.org/10.2166/wh.2008.054
- Cole, T. J. (2015). Too many digits: The presentation of numerical data. Archives of Disease in Childhood, 100(7), 608–609. https://doi.org/10.1136/archdischild-2014-307149
- Danby, S. G., Brown, K., Wigley, A. M., Chittock, J., Pyae, P. K., Flohr, C., & Cork, M. J. (2018). The effect of water hardness on surfactant deposition after washing and subsequent skin irritation in atopic dermatitis patients and healthy control subjects. Journal of Investigative Dermatology, 138(1), 68–77. https://doi.org/10.1016/j.jid.2017.08.037
- Goldberg, D. (1991). What every computer scientist should know about floating-point arithmetic. ACM Computing Surveys, 23(1), 5–48. https://doi.org/10.1145/103162.103163
- Jiang, L., He, P., Chen, J., Liu, Y., Liu, D., Qin, G., & Tan, N. (2016). Magnesium levels in drinking water and coronary heart disease mortality risk: A meta-analysis. Nutrients, 8(1), 5. https://doi.org/10.3390/nu8010005
- Kožíšek, F. (2020). Regulations for calcium, magnesium or hardness in drinking water in the European Union member states. Regulatory Toxicology and Pharmacology, 112, 104589. https://doi.org/10.1016/j.yrtph.2020.104589
- Kragten, J. (1994). Calculating standard deviations and confidence intervals with a universally applicable spreadsheet technique. Analyst, 119(10), 2161–2165. https://doi.org/10.1039/AN9941902161
- Monarca, S., Donato, F., Zerbini, I., Calderon, R. L., & Craun, G. F. (2006). Review of epidemiological studies on drinking water hardness and cardiovascular diseases. European Journal of Cardiovascular Prevention & Rehabilitation, 13(4), 495–506. https://doi.org/10.1097/01.hjr.0000214608.99113.5c
- Morr, S., Cuartas, E., Alwattar, B., & Lane, J. M. (2006). How much calcium is in your drinking water? A survey of calcium concentrations in bottled and tap water and their significance for medical treatment and drug administration. HSS Journal, 2(2), 130–135. https://doi.org/10.1007/s11420-006-9000-9
- Newell, D. B., Cabiati, F., Fischer, J., Fujii, K., Karshenboim, S. G., Margolis, H. S., de Mirandés, E., Mohr, P. J., Nez, F., Pachucki, K., Quinn, T. J., Taylor, B. N., Wang, M., Wood, B. M., & Zhang, Z. (2018). The CODATA 2017 values of h, e, k, and NA for the revision of the SI. Metrologia, 55(1), L13–L16. https://doi.org/10.1088/1681-7575/aa950a
- Perkin, M. R., Craven, J., Logan, K., Strachan, D., Marrs, T., Radulovic, S., Campbell, L. E., MacCallum, S. F., McLean, W. H. I., Lack, G., & Flohr, C. (2016). Association between domestic water hardness, chlorine, and atopic dermatitis risk in early life: A population-based cross-sectional study. Journal of Allergy and Clinical Immunology, 138(2), 509–516. https://doi.org/10.1016/j.jaci.2016.03.031
- Prohaska, T., Irrgeher, J., Benefield, J., Böhlke, J. K., Chesson, L. A., Coplen, T. B., Ding, T., Dunn, P. J. H., Gröning, M., Holden, N. E., Meijer, H. A. J., Moossen, H., Possolo, A., Takahashi, Y., Vogl, J., Walczyk, T., Wang, J., Wieser, M. E., Yoneda, S., Zhu, X.-K., & Meija, J. (2022). Standard atomic weights of the elements 2021 (IUPAC Technical Report). Pure and Applied Chemistry, 94(5), 573–600. https://doi.org/10.1515/pac-2019-0603
- Rubenowitz, E., Molin, I., Axelsson, G., & Rylander, R. (2000). Magnesium in drinking water in relation to morbidity and mortality from acute myocardial infarction. Epidemiology, 11(4), 416–421. https://doi.org/10.1097/00001648-200007000-00009
- Thomas, K. S., Dean, T., O’Leary, C., Sach, T. H., Koller, K., Frost, A., Williams, H. C., & the SWET Trial Team. (2011). A randomised controlled trial of ion-exchange water softeners for the treatment of eczema in children. PLoS Medicine, 8(2), e1000395. https://doi.org/10.1371/journal.pmed.1000395
- Tiesinga, E., Mohr, P. J., Newell, D. B., & Taylor, B. N. (2021). CODATA recommended values of the fundamental physical constants: 2018. Reviews of Modern Physics, 93(2), 025010. https://doi.org/10.1103/RevModPhys.93.025010
- Yang, C.-Y. (1998). Calcium and magnesium in drinking water and risk of death from cerebrovascular disease. Stroke, 29(2), 411–414. https://doi.org/10.1161/01.STR.29.2.411
- Yappert, M. C., & DuPré, D. B. (1997). Complexometric titrations: Competition of complexing agents in the determination of water hardness with EDTA. Journal of Chemical Education, 74(12), 1422. https://doi.org/10.1021/ed074p1422
