GH, KH, ppm and dKH: Reading Aquarium Water Numbers That Refuse to Match
Your test kit says 8 dKH, the fish profile wants 120 ppm, and the reef calculator asks for meq/L. They're all the same water measured three ways. Here's the single conversion factor that ties them together — and why GH and KH aren't interchangeable.
You test your tank and the kit reads 8 dKH. The care sheet for the fish you want lists an ideal alkalinity of “about 140 ppm.” Your reef dosing calculator asks for the number in meq/L. Three different numbers, three different units, and no obvious way to tell whether your water is right. The good news: they are all the same water, just written in three dialects. Once you know the conversion factors — and the one distinction that actually matters — the whole mess collapses into simple arithmetic.
dGH and dKH are the same scale measuring two different things
The confusing part is that hardness comes in two flavours that share a conversion factor but describe different chemistry:
- GH (general hardness), reported in °dGH, measures dissolved calcium and magnesium. This is the “hardness” that matters for fish osmoregulation, shrimp shells and plant nutrient uptake.
- KH (carbonate hardness / alkalinity), reported in °dKH, measures carbonates and bicarbonates. This is your water’s buffer — its resistance to pH swings. Low KH is why a tank’s pH can crash overnight.
Both are conventionally expressed as an equivalent concentration of calcium carbonate (CaCO₃), which is why they share the exact same unit conversions even though they measure different ions. That shared basis is the key that unlocks everything:
1 °dGH = 1 °dKH = 17.86 ppm CaCO₃ = 0.357 meq/L
So 8 dKH × 17.86 = 143 ppm — which is why that “about 140 ppm” care sheet and your “8 dKH” kit are describing identical water. Divide instead of multiply to go the other way: 120 ppm ÷ 17.86 = 6.7 dGH. The Aquarium Water Parameter Converter does this in both directions at once, so you can enter whatever unit your kit gives and read every other unit off the table.
The four units you’ll actually meet
Different corners of the hobby standardised on different units, which is the real source of the confusion:
- ppm / mg/L CaCO₃ — the default on most US liquid test kits and municipal water reports. ppm and mg/L are interchangeable for dilute aquarium water.
- °dGH / °dKH (German degrees) — the European hobbyist standard, and what most fish and plant care sheets quote. One degree ≈ 17.86 ppm.
- meq/L (milliequivalents per litre) — used in reef chemistry and lab work. 1 meq/L = 50.04 ppm, so it’s a coarser unit; a typical reef KH of 8 dKH is only about 2.9 meq/L.
- grains per US gallon — a leftover from the water-softener industry that sometimes appears on whole-house filter specs. 1 grain/gal ≈ 17.12 ppm, coincidentally close to a German degree, which causes no end of mix-ups.
Notice how close grains/gallon and German degrees are (17.12 vs 17.86). They are not the same unit, and treating a softener’s “10 grains” as “10 dGH” will quietly bias you by about 5%. When in doubt, convert everything to ppm first and compare there.
Temperature: the other number that comes in two systems
Water temperature carries the same US-versus-metric split. The conversion is the familiar one:
°C = (°F − 32) × 5/9
The converter reports °C, °F and Kelvin together, but the ranges are what matter for livestock. Most tropical community fish sit at 24–27 °C (75–80 °F). Discus want it warmer at 28–30 °C, while goldfish and other coldwater species prefer 18–22 °C. Reef tanks typically run 24–26 °C. The single most important rule when doing a water change: match the new water to the tank within about 1 °C, because a sudden temperature swing stresses fish faster than a slightly-off hardness reading ever will.
Why the target ranges matter more than the exact number
Chasing a precise hardness figure is usually a beginner’s mistake. Fish are far more tolerant of a stable parameter that’s slightly off than of a “perfect” number that swings around. What actually matters is landing in the right band for your species and keeping it there. The converter’s presets encode the common bands:
- Tropical community — GH 5–12 dGH, KH 4–8 dKH, pH 6.5–7.5. Forgiving water that suits tetras, barbs, danios and most common community fish.
- African cichlid (Rift lake) — GH 10–20 dGH, KH 10–18 dKH, pH 7.8–8.6. These fish evolved in hard, alkaline lakes and genuinely need the high buffer.
- Discus / blackwater — GH 1–5 dGH, KH 1–4 dKH, pH 6.0–7.0. Soft, acidic water; the low KH here is deliberate, but it means you must watch pH closely.
- Reef saltwater — GH 7–11 dGH, KH 8–11 dKH, pH 8.1–8.4. Corals consume carbonate constantly, so reef keepers dose to hold KH steady.
Read those side by side and a pattern jumps out: the fish that want soft water (discus) also have very low KH, which is exactly why their tanks are prone to pH crashes and demand more attention. Hard-water fish come with a big carbonate buffer built in.
Putting it together on water-change day
Here’s the practical loop. Test your tap or RO/remineralised water, convert it to whatever units your fish care sheet uses, and compare against the target band. If your tap reads 250 ppm GH but your discus want under 90 ppm (5 dGH), you know you need to cut it with RO water before it ever touches the tank. If your reef KH has drifted from 8 to 6 dKH, converting tells you how much buffer you’ve lost. The numbers only guide you once they’re all in the same unit — which is the whole job the converter does.
A note on test-kit accuracy
Hobby liquid and strip kits are approximate; strips in particular drift as they age and can be off by a full degree or more. Treat any single reading as a ballpark, retest if a number looks surprising, and trust trends over individual measurements. This guide is general aquarium-keeping information, not veterinary advice — if livestock is showing distress, prioritise stability and a water change over hitting a target number exactly.
When your kit and your care sheet won’t speak the same language, drop the reading into the Aquarium Water Parameter Converter: enter ppm, dGH, dKH, meq/L or a temperature in any scale, and read every other unit and the safe range for your species off one screen — no factor of 17.86 to remember on the side of the tank.
Try the tools from this guide
-
Aquarium Water Parameter Converter
Convert aquarium water parameters — ppm, dGH, dKH, °C / °F and meq/L — with species presets.
-
Aquarium Fish Stocking Calculator
Tank volume from dimensions plus realistic fish stocking guidance — better than "1 inch per gallon".
-
Custom Unit Converter (Build Your Own)
Define your own units of measurement and save them — perfect for niche workflows.