RO/DI water is close to empty: no calcium, no magnesium, no buffer. Plants need the first two and your pH needs the third. GH (calcium plus magnesium) and KH (carbonate buffer) are set separately, by separate salts, so you can hit each target exactly. Enter the water you're making and the hardness you want; this gives grams of each salt.
| Salt | Grams | Raises |
|---|
| Ion added | mg/L | mmol/L |
|---|
A TDS pen reads conductivity and converts it with its own factor, so its number won't match the mg/L total exactly.
1 °dGH = 10 mg CaO/L = 10 ÷ 56.077 = 0.178326 mmol/L of Ca + Mg
1 °dKH = the same in alkalinity = 0.356652 mmol/L HCO3⁻ (bicarbonate is
monovalent, so twice the moles)
1 °dH = 17.848 ppm as CaCO3
ΔGH = target − source, ΔKH = target − source
Split GH between Ca and Mg (r = Ca:Mg by mass):
molar ratio q = r × 24.305 ÷ 40.078
n_Mg = n_GH ÷ (1 + q), n_Ca = n_GH − n_Mg (mmol/L)
grams = mmol/L × molar mass (g/mol) × litres ÷ 1000
CaSO4·2H2O 172.164 CaSO4 136.134
MgSO4·7H2O 246.466 MgSO4 120.361
KHCO3 100.114 NaHCO3 84.006
CaSO4 and MgSO4 raise GH only; KHCO3 and NaHCO3 raise KH only.