Water Hardness Units: GPG, PPM and mg/L

Water Testing
Five glass graduated cylinders of decreasing size lined up on a lab bench, representing the different water hardness units such as grains per gallon and ppm

Grains per gallon vs ppm is a straight conversion: 1 grain per gallon (gpg) equals 17.1 parts per million (ppm), and ppm is the same as mg/L. Divide a ppm reading by 17.1 to get gpg; multiply gpg by 17.1 to get ppm. So 171 ppm is 10 gpg, and 7 gpg is 120 ppm.

That factor only holds when both numbers describe total hardness expressed as calcium carbonate. Most confusion about hardness units — and most of the cases where two labs disagree about the same water — comes from that small print, not from the arithmetic.

Grains per Gallon vs PPM: Where the 17.1 Comes From

The two units measure the same thing in different systems.

  • A grain is an old apothecary weight: 1/7,000 of a pound, or 64.8 milligrams. A grain per gallon is one grain of hardness dissolved in one US gallon (3.785 litres) of water. The unit survives almost entirely in the US water treatment industry, which is why softener control valves and sizing charts ask for it.
  • Parts per million is a ratio: one unit of hardness per million units of water. Because a litre of water weighs a kilogram, one ppm is one milligram per litre. Penn State Extension states it directly: ppm "is also equal to milligrams/liter," while a gpg "is used exclusively as a hardness unit and equals approximately 17 mg/l or ppm."

Divide 64.8 mg by 3.785 L and you get 17.118 mg/L. That's the whole conversion. Charts that use 17 or 17.14 are rounding the same figure.

Hand writing a conversion in a notebook beside a calculator, converting a water hardness reading from ppm to grains per gallon

Quick conversion table

Grains per gallonppm / mg/L as CaCO₃ppm / mg/L as CaCO₃Grains per gallon
117502.9
3.5601005.8
5861508.8
712020011.7
1017125014.6
10.518030017.5
1525740023.4
2034250029.2
2542860035.1

Round to one decimal place in gpg. Softener valves take whole numbers, so round up when you program one.

Every Hardness Unit You'll Meet, Converted

US reports use ppm, mg/L and gpg. Appliance manuals, especially for European dishwashers and coffee machines, often use German or French degrees. Lab reports and scientific papers use mmol/L. All of them describe the same calcium and magnesium; they just pick a different reference compound or volume.

UnitDefined asIn mg/L as CaCO₃In gpg
ppm / mg/L (as CaCO₃)1 mg of CaCO₃ equivalent per litre10.0584
Grain per US gallon (gpg)1 grain (64.8 mg) per US gallon17.121
German degree (°dH, dGH)10 mg of CaO per litre17.851.043
French degree (°fH, °f)10 mg of CaCO₃ per litre100.584
English / Clark degree (°e)1 grain of CaCO₃ per imperial gallon14.250.833
mmol/L1 millimole of Ca²⁺ + Mg²⁺ per litre100.095.85

Two rows in that table catch people out.

The German degree is not based on calcium carbonate. It's defined as 10 mg/L of calcium oxide, which is lighter than calcium carbonate. That's why 1 °dH (17.85 mg/L) looks almost identical to 1 gpg (17.12 mg/L) but isn't. A dishwasher asking you to set "18 °dH" wants water of about 320 mg/L, or 18.8 gpg, not 18 gpg. Close, but not interchangeable.

The English degree uses the imperial gallon. A UK source that says water is "10 grains per gallon" usually means Clark degrees, because an imperial gallon is 4.546 litres rather than 3.785. Ten Clark degrees is 8.3 US gpg. If you're reading a British forum or an old UK manual, convert before you compare.

The figures for gpg, °dH and Clark degrees match the conversion factors published for the grain per gallon (1 Clark degree = 0.8327 gpg; 1 dGH = 1.0426 gpg).

The Hardness Scale in Every Unit

The USGS classification most US sources use has four bands. Penn State and most softener dealers split the bottom band in two, adding a "slightly hard" step. Here is the combined scale with each boundary converted, so you can place a number from any report or manual:

Classificationmg/L (ppm) as CaCO₃gpgmmol/L°dH°fH
Soft0–170–1.00–0.170–1.00–1.7
Slightly hard17–601.0–3.50.17–0.601.0–3.41.7–6
Moderately hard61–1203.5–7.00.61–1.203.4–6.76–12
Hard121–1807.0–10.51.21–1.806.8–10.112–18
Very hardOver 180Over 10.5Over 1.80Over 10.1Over 18

The mg/L bands are the USGS hardness classification; the "soft" and "slightly hard" split below 60 mg/L follows Penn State Extension. Where a band tells you to treat is a separate question: the practical treatment threshold depends on the tightest appliance limit in your house, not the name of the band.

What "as CaCO₃" Actually Means

Hardness isn't one substance. It's mostly calcium and magnesium, and they weigh different amounts per unit of hardness they cause. A milligram of magnesium produces about 1.65 times the hardness of a milligram of calcium, because a magnesium atom is lighter but carries the same double charge.

To put both on one scale, chemists express hardness as the weight of calcium carbonate that would produce the same effect. That's the "as CaCO₃" on your report, and it's baked into both ppm and gpg.

Pile of pale limestone rocks, the calcium carbonate that water hardness readings in ppm and grains per gallon are expressed against

The conversion uses the ratio of molecular weights:

Hardness (mg/L as CaCO₃) = 2.497 × calcium (mg/L) + 4.118 × magnesium (mg/L)

The 2.497 is 100.09 (calcium carbonate) divided by 40.08 (calcium). The 4.118 is 100.09 divided by 24.31 (magnesium).

A worked example

An illustrative well-water lab report lists calcium 60 mg/L and magnesium 12 mg/L, with no total hardness line.

  • Calcium: 60 × 2.497 = 149.8 mg/L as CaCO₃
  • Magnesium: 12 × 4.118 = 49.4 mg/L as CaCO₃
  • Total hardness: 199.2 mg/L as CaCO₃ = 11.6 gpg

Now the mistake. Add the raw numbers (60 + 12 = 72) and divide by 17.1, and you get 4.2 gpg. That's moderately hard water that doesn't obviously need treating, when the real figure is very hard. The shortcut understates the hardness by almost two-thirds, and it's easy to make on any report that lists the metals individually. Reading which lines on a report feed a calculation is covered separately. The rule here is simple: never divide a bare calcium or magnesium figure by 17.1.

Why Two Labs Report Different Numbers for the Same Water

Send one sample to two labs and you can get two answers that are both correct. Almost every discrepancy traces to one of five reporting choices.

Lab technician pipetting water samples into a strip of vials, where the choice of test method and reporting unit can change a hardness result
What differsLab A reportsLab B reportsSame water?
Reference compound199 mg/L as CaCO₃112 mg/L as CaO (11.2 °dH)Yes
What is countedTotal hardness: 199 mg/LCalcium hardness only: 150 mg/LYes
Form of the result199 mg/L as CaCO₃Ca 60 mg/L, Mg 12 mg/LYes
MethodCalculated from Ca and Mg (instrument)EDTA titrationUsually; titration can read a little higher
Unit and rounding11.6 gpg1.99 mmol/LYes

The first three rows are the ones that produce big gaps.

Calcium hardness versus total hardness. Some reports, and many pool and aquarium kits, give calcium hardness only. It leaves out magnesium, which in dolomite country can be a third of the total or more. If one number is labelled "calcium hardness" and the other "total hardness," they aren't measuring the same thing.

Calculated versus titrated. Labs either measure calcium and magnesium on an instrument and calculate hardness with the formula above, or titrate the sample with EDTA, the same chemistry as a home drop kit. The two methods are the calculation and titration procedures of the standard reference for water analysis (Standard Methods 2340B and 2340C). Titration responds to any dissolved metal with a double charge, so iron, manganese, strontium and zinc get counted as hardness too. On a well with a lot of iron or manganese, the titrated figure can run several mg/L higher than the calculated one.

The last row rarely matters; rounding 17.118 to 17 changes a 20 gpg result by about 2 ppm. If the numbers still disagree after you've checked all five, the difference is probably the sample, not the report. The usual causes are a tap downstream of a softener, a hot-side draw or a line that sat overnight, all covered in the sampling mistakes that shift a hardness result.

Where Unit Mix-Ups Cost Money

Units become money at the point where a number goes into a sizing calculation or a control valve.

Coarse white salt crystals spilling from a glass jar, the regeneration salt whose annual use scales with hardness in grains per gallon

A softener's capacity is rated in grains. A "32,000-grain" softener can remove 32,000 grains of hardness between regenerations. That's 32,000 × 64.8 mg, or about 4.6 pounds of hardness as calcium carbonate. Daily demand is hardness in gpg × gallons used per day. A home using 300 gallons a day of 12 gpg water needs to remove 3,600 grains a day, so a 32,000-grain unit lasts about nine days at full capacity, or fewer at the more salt-efficient settings most people choose. Put 205 (ppm) into that sum instead of 12 (gpg) and the arithmetic points to a commercial-scale system.

Control valves want gpg. A valve programmed with a mg/L figure regenerates constantly and burns salt; one programmed with a raw calcium figure lets hard water through. If your only number is in ppm, divide by 17.1 and round up.

A TDS meter's "ppm" is not hardness ppm. Total dissolved solids meters read conductivity and report an estimate of everything dissolved in ppm, including sodium, chloride and sulphate. The number is often larger than the hardness and has no fixed relationship to it. As covered in the comparison of hardness strips and drop kits, a TDS meter can't stand in for either.

Utility reports use mg/L. Your annual water quality report, the Consumer Confidence Report that the EPA requires community water systems to publish, almost always lists hardness in mg/L as CaCO₃, sometimes as a range across the year. Divide by 17.1 before you compare it with a strip or a softener setting.

What to Do With Your Number

Grains per gallon vs ppm only matters once you know what the number describes. Four steps get any report into a figure you can use:

  1. Check what it is. Look for "total hardness" and "as CaCO₃" on the report. If you only have separate calcium and magnesium figures, use the 2.497 / 4.118 formula first.
  2. Convert once, to gpg. Divide mg/L or ppm by 17.1, °dH by 0.959 (or multiply by 1.043), and mmol/L by 0.171 (or multiply by 5.85).
  3. Place it on the scale above, then check it against your own appliance limits rather than the band name.
  4. If you're sizing or programming a softener, get the figure from a titration kit or a lab rather than a strip; a strip's colour band is too coarse to convert usefully. How to get that number at home walks through the method.

Frequently Asked Questions

Is ppm the same as mg/L for water hardness?

Yes, for drinking water they are interchangeable. A litre of water weighs almost exactly one kilogram, so one milligram per litre is one part per million by weight. The two only drift apart in dense liquids such as brine or seawater, which is never the case for a household hardness test. Penn State Extension states the equivalence directly.

How many ppm is 1 grain of hardness?

One grain per US gallon is 17.1 ppm (mg/L) of hardness expressed as calcium carbonate. The exact figure is 17.118, because a grain is 64.8 milligrams and a US gallon is 3.785 litres. Many charts round it to 17, which is close enough for reading a report but adds a small error when you size equipment at high hardness.

Is 200 ppm hard water?

Yes. 200 ppm as calcium carbonate is about 11.7 grains per gallon, which is above the 180 ppm line that the USGS and most extension services use for very hard water. At that level scale on water heater elements and soap waste are consistent enough that most households consider treatment.

How do I convert ppm to grains per gallon?

Divide the ppm figure by 17.1. For example, 250 ppm divided by 17.1 is 14.6 grains per gallon, and 100 ppm is 5.8 gpg. To go the other way, multiply grains per gallon by 17.1. This only works if the ppm figure is total hardness as calcium carbonate; if the report lists calcium and magnesium separately in mg/L, convert them to calcium carbonate first.

What does hardness as CaCO3 mean?

It means the calcium and magnesium in the water have been expressed as the amount of calcium carbonate that would give the same hardness. Calcium is multiplied by 2.497 and magnesium by 4.118, and the two are added. Reporting everything as calcium carbonate lets water with different mineral mixes be compared on one scale, and it is the basis of both ppm and grains per gallon on a hardness report.

Irfan Nasim

About Irfan Nasim

Irfan Nasim writes and edits Hard Water Solved. He is not a certified water-treatment professional — he researches each topic against primary sources like the EPA, CDC, NSF, and USGS before writing it up, so the site stays grounded in evidence rather than sales claims.