Water hardness unit converter

Water hardness is written in several units — ppm and mg/L (the same number), grains per gallon (gpg), German degrees (°dH), French degrees (°fH), and millimoles per litre. They all measure the same dissolved calcium and magnesium; different fields just settled on different scales — labs weigh it as mg/L, US softeners count grains per gallon (a grain is an old weight of about 65 mg), and Europe uses degrees. This hub holds the master factor table and every dedicated converter. For a single all-units instrument, use the water hardness calculator; to read a number on the scale, see the hardness scale.

One water — 140 mg/L — on five rulersmg/L250140gpg158.2°dH147.8°fH2514mmol/L2.51.4
The markers line up because it's one water sample — only the ruler underneath changes.

Factors

Master factor table

One unit of each row, expressed in every column unit.
1 of ↓mg/L (= ppm)gpg°dH°fHmmol/L
mg/L (= ppm)10.058420.056030.10.009991
gpg17.1210.95911.7120.171
°dH17.851.04311.7850.1783
°fH100.58420.560310.09991
mmol/L100.15.8475.60810.011

Understanding the units

What each hardness unit actually measures

Every hardness unit reports the same thing — dissolved calcium and magnesium — but each was defined by a different field for a different instrument, so the numbers look nothing alike. The reference unit is mg/L as calcium carbonate, and ppm is the same number under a different name. Everything else on this page is a fixed multiple of that reference. The scale below is the master table above, unpacked one definition at a time.

mg/L and ppm — the reference

Milligrams per litre as calcium carbonate is what laboratories weigh directly: the mass of hardness minerals in one litre of water, restated as if it were all calcium carbonate. In dilute water one litre weighs essentially one kilogram, so a milligram per litre is one part in a million — which is why ppm and mg/L are the identical number for hardness. When a report says 150 ppm, 150 mg/L, and 150 mg/L as CaCO₃, all three are the same measurement. There is nothing to convert between them.

gpg — the US softener unit

Grains per gallon is the unit water softeners are set in, and it is a mass-per-volume figure like mg/L, just in older units. One grain is 64.79891 mg, and a US gallon is 3.785412 L, so one grain per gallon works out to 64.79891 ÷ 3.785412 = 17.118 mg/L. That is the whole conversion: multiply gpg by 17.118 to reach mg/L, or divide mg/L by 17.118 to reach gpg. Charts that round the factor to 17.1 differ by about a tenth of a percent.

°dH — the German degree

The German degree, written °dH and sometimes labelled dGH on aquarium kits, comes from a different chemical basis: one °dH is 10 mg/L of calcium oxide (CaO), not calcium carbonate. Restating that as calcium carbonate scales it by the molar-mass ratio, 100.087 ÷ 56.077, so one °dH equals 17.848 mg/L. Because 17.848 is close to the grain factor of 17.118, a gpg and a °dH are within about four percent of each other — near, but not the same.

°fH — the French degree

The French degree, °fH, is the tidiest of the lot: it is defined as exactly 10 mg/L of calcium carbonate, so one °fH is 10 mg/L with no rounding involved. Multiply °fH by 10 to reach mg/L, divide mg/L by 10 to reach °fH. This clean factor of ten is why French degrees appear so often in European tables next to °dH.

mmol/L — the molar unit

Some laboratories report hardness in millimoles per litre, counting molecules rather than weighing mass. One millimole of calcium carbonate weighs its molar mass, 100.087 mg, so one mmol/L equals 100.087 mg/L. Multiply mmol/L by 100.087 to reach mg/L, and divide the other way. A millimole per litre is also close to ten French degrees, since 100.087 is close to ten times ten.

Where each unit lives

Which unit each field uses

The reason so many units survive is that each field standardised on the one its instruments produced, and never switched. Water softeners are programmed in grains per gallon, so a US household setting up a softener needs gpg even though its water report almost never uses it. Knowing which unit a document is written in tells you immediately what to convert from.

US water reports and consumer confidence reports (CCRs) use ppm and mg/L, the two labels for the same reference number, so a US utility figure rarely needs converting except to program a softener. Across Europe the German degree °dH and the French degree °fH dominate labels and appliance manuals, which is why a European reading has to be brought into mg/L before it lines up with a US chart. Aquarium test kits usually print dGH, the same unit as °dH.

Analytical laboratories are the ones that reach for mmol/L, reporting hardness as a molar concentration alongside the individual calcium and magnesium figures. So the field a number came from is a reliable guide to its unit: a softener spec is gpg, a US bill is ppm or mg/L, a European manual is °dH or °fH, an aquarium kit is dGH, and a lab sheet may be mmol/L.

Both directions

How the units relate — worked both ways

Every conversion on this page is a single multiply or divide, and the reverse conversion uses the same factor, inverted — there is never a second constant to remember. Take grains: 10 gpg × 17.118 = 171 mg/L, and to go back, 171 ÷ 17.118 = 10 gpg. The multiply and the divide are the same 17.118, run in opposite directions. See gpg to ppm and ppm to gpg for that pair worked out across a full range.

German degrees behave identically with their own factor. 10 °dH × 17.848 = 178 mg/L, and 178 ÷ 17.848 ≈ 10 °dH brings it straight back. French degrees are the easy case — ten times to enter mg/L, ten into to leave — and mmol/L uses 100.087 the same way. The dedicated °dH to ppm and ppm to °dH pages show the German factor run in each direction, and mmol/L to ppm covers the molar unit.

Because each pairing is one reversible factor, you can chain them through the reference unit to reach any two units at all. Convert into mg/L, then out of mg/L into the unit you want, and the master factor table above holds every one of those factors in a single grid. The water hardness calculator does the full chain for a single value in one step.

Reference

Common hardness readings in every unit

The table below runs the hardness numbers people actually meet — a soft 17 mg/L, the 60 / 120 / 180 band thresholds, the 140 mg/L national county median, and the very-hard readings past 300 — across every unit at once. Every non-mg/L cell is computed from the same factors used everywhere on this page, so a row here matches its dedicated converter to the last rounded digit. Rows are tinted by USGS band.

The hardness numbers people run into, each read across every unit at once. Rows tinted by USGS band.
mg/L (= ppm)gpg°dH°fHmmol/LBand / note
17111.70.17Soft
502.92.850.5Soft
603.53.460.6Moderately hard
1005.85.6101Moderately hard
12076.7121.2Hard
1408.27.8141.4Hard · national county median
1508.88.4151.5Hard
18010.510.1181.8Very hard
20011.711.2202Very hard
25014.614252.5Very hard
30017.516.8303Very hard
50029.228505Very hard
100058.4561009.99Very hard
USGS/NIST unit definitions.

Converters

Every converter

Grains ↔ metric

German degrees (°dH)

Molar & identity

By . Source: Conversion factors per USGS/NIST unit definitions. Data last verified . Methodology.