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.
Factors
Master factor table
| 1 of ↓ | mg/L (= ppm) | gpg | °dH | °fH | mmol/L |
|---|---|---|---|---|---|
| mg/L (= ppm) | 1 | 0.05842 | 0.05603 | 0.1 | 0.009991 |
| gpg | 17.12 | 1 | 0.9591 | 1.712 | 0.171 |
| °dH | 17.85 | 1.043 | 1 | 1.785 | 0.1783 |
| °fH | 10 | 0.5842 | 0.5603 | 1 | 0.09991 |
| mmol/L | 100.1 | 5.847 | 5.608 | 10.01 | 1 |
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.
| mg/L (= ppm) | gpg | °dH | °fH | mmol/L | Band / note |
|---|---|---|---|---|---|
| 17 | 1 | 1 | 1.7 | 0.17 | Soft |
| 50 | 2.9 | 2.8 | 5 | 0.5 | Soft |
| 60 | 3.5 | 3.4 | 6 | 0.6 | Moderately hard |
| 100 | 5.8 | 5.6 | 10 | 1 | Moderately hard |
| 120 | 7 | 6.7 | 12 | 1.2 | Hard |
| 140 | 8.2 | 7.8 | 14 | 1.4 | Hard · national county median |
| 150 | 8.8 | 8.4 | 15 | 1.5 | Hard |
| 180 | 10.5 | 10.1 | 18 | 1.8 | Very hard |
| 200 | 11.7 | 11.2 | 20 | 2 | Very hard |
| 250 | 14.6 | 14 | 25 | 2.5 | Very hard |
| 300 | 17.5 | 16.8 | 30 | 3 | Very hard |
| 500 | 29.2 | 28 | 50 | 5 | Very hard |
| 1000 | 58.4 | 56 | 100 | 9.99 | Very hard |
Converters
Every converter
Grains ↔ metric
German degrees (°dH)
Molar & identity
By Marko Visic, MPharm, BSc Physics. Source: Conversion factors per USGS/NIST unit definitions. Data last verified . Methodology.