Coffee Brewing Water Calculator: Epsom Salt and Bicarbonate in Distilled Water
Mineral content changes what a coffee tastes like as much as grind size does. Start from distilled water, pick a target, and this works out what to weigh — plus a concentrate recipe, because the direct doses are too small for a kitchen scale.
Why this starts from distilled water
Minerals are not a contaminant in brewing water; they are part of how the extraction works. Magnesium and calcium ions bind to the flavour compounds being pulled out of the grounds, and bicarbonate neutralises some of the acids that make it into the cup. Water with nothing in it extracts poorly and tastes hollow. Water with a great deal in it extracts unevenly and tastes flat and heavy.
The reason to begin from distilled or RO water is not that it is purer. It is that addition is the only operation available in a kitchen. If your tap water already carries 180 ppm of alkalinity, no amount of arithmetic will bring it to 40, and a calculator that pretended otherwise would be handing you a number it cannot deliver. Starting from near zero makes the target reachable, and makes it repeatable, which matters more than which profile you pick.
| Example | Water | Target hardness | Target alkalinity | Hardness salt to weigh | Alkalinity salt to weigh | For 1 L of 100x concentrate: hardness salt | For 1 L of 100x concentrate: alkalinity salt | Concentrate to add for this batch | Dissolved solids you are adding |
|---|---|---|---|---|---|---|---|---|---|
| 2 L, SCA target, Epsom + baking soda | 2.00 L | 68 ppm as CaCO3 | 40 ppm as CaCO3 | 0.335 g | 0.134 g | 16.7 g | 6.7 g | 20.0 mL | 235 mg/L |
| 1 US gallon, SCA target | 3.79 L | 68 ppm as CaCO3 | 40 ppm as CaCO3 | 0.634 g | 0.254 g | 16.7 g | 6.7 g | 37.9 mL | 235 mg/L |
| 4 L, low alkalinity for a light roast | 4.00 L | 68 ppm as CaCO3 | 25 ppm as CaCO3 | 0.670 g | 0.168 g | 16.7 g | 4.2 g | 40.0 mL | 209 mg/L |
| 1 L, higher hardness, calcium chloride | 1.00 L | 150 ppm as CaCO3 | 50 ppm as CaCO3 | 0.220 g | 0.084 g | 22.0 g | 8.4 g | 10.0 mL | 304 mg/L |
| 1.5 L, SCA target, potassium bicarbonate | 1.50 L | 68 ppm as CaCO3 | 40 ppm as CaCO3 | 0.251 g | 0.120 g | 16.7 g | 8.0 g | 15.0 mL | 247 mg/L |
| Custom 100 / 30, 500 g batch | 0.50 L | 100 ppm as CaCO3 | 30 ppm as CaCO3 | 0.123 g | 0.025 g | 24.6 g | 5.0 g | 5.0 mL | 297 mg/L |
| Unit | Litres each |
|---|---|
| Litres | 1 |
| Grams or millilitres | 0.00 |
| US gallons | 3.79 |
| US fluid ounces | 0.03 |
Definitions, not measurements. The US gallon is exactly 3.785411784 L and the US fluid ounce exactly 1/128 of it. Water is taken as 1 g per mL.
| Profile | Hardness | Alkalinity | What it is for |
|---|---|---|---|
| SCA target | 68 | 40 | The standard target figures. Start here. |
| SCA midpoint | 112 | 55 | Middle of both acceptable ranges; a touch fuller. |
| Low alkalinity | 68 | 25 | Less buffering, so more of the acidity survives. Suits light roasts. |
| Higher hardness | 150 | 50 | Near the top of the hardness range: heavier body, more scale risk in a boiler. |
| Custom | 68 | 40 | Ignored - the two number fields are used instead. |
The two SCA rows come from the published water standard for brewing specialty coffee: total hardness 50-175 ppm as CaCO3 with 68 commonly quoted as the target, and total alkalinity 40-70 ppm with 40 as the target. The other two profiles are ordinary moves inside that range, not anyone published recipe. The standard also gives a pH line and printings of it disagree (6-8 in some, 6.5-7.5 in others), so pH is left out here rather than reported as settled.
| Salt | Formula | g/mol | ppm per g/L |
|---|---|---|---|
| Epsom salt | MgSO4.7H2O | 246.47 | 406.10 |
| Calcium chloride | CaCl2.2H2O | 147.01 | 680.80 |
Arithmetic, not a measurement: molar mass of the hydrated salt against 100.087 g/mol for CaCO3, one mole of a divalent cation counting as one mole of CaCO3. Anyone with a periodic table can check these, which is why no source is cited for them.
| Salt | Formula | g/mol | ppm per g/L |
|---|---|---|---|
| Baking soda | NaHCO3 | 84.01 | 595.70 |
| Potassium bicarbonate | KHCO3 | 100.11 | 499.90 |
Same arithmetic, but alkalinity counts equivalents rather than moles: one mole of bicarbonate is half a mole of CaCO3, so the equivalent weight is 50.043 g. That factor of two is the whole reason a gram of baking soda buys far more alkalinity than a gram of Epsom salt buys hardness.
Assumptions and limits
- The starting water is distilled or from reverse osmosis, near enough to zero minerals that everything here is what you added. This matters more than it sounds: you can add minerals to water but you cannot take them out, so a calculator that started from tap water would be doing arithmetic it cannot deliver.
- Hardness and alkalinity are both reported the way the water industry reports them - as the amount of calcium carbonate that would behave the same way - which is why magnesium sulfate has a "ppm as CaCO3" figure despite containing no calcium and no carbonate.
- The salts are assumed dry. Epsom salt in particular gains and loses water of crystallisation on the shelf; a damp box weighs more than it should for the magnesium it holds, which pushes the real hardness below the target rather than above it.
- The concentrate is 100x by definition, so 10 mL of it makes 1 L. Make it in small batches and keep it refrigerated - it is unbuffered salt water with nothing in it to discourage whatever lands in it.
- Nothing here adjusts pH directly. Bicarbonate raises pH as a side effect of buffering, and how far depends on what else is in the water, so this calculator does not predict a pH figure it cannot stand behind.
- Espresso machines with boilers are the one case where the top of the hardness range is a maintenance decision rather than a taste preference: hardness is what forms scale, and scale accumulates where the water is heated and held.
Hardness and alkalinity are two separate dials
They are easy to conflate because both are quoted in the same unit, and that unit names neither of the things being measured. Both are reported as "ppm as CaCO3" - the amount of calcium carbonate that would behave equivalently - which is why a magnesium salt containing no calcium and no carbonate still gets a CaCO3 figure.
Hardness is the divalent cations: magnesium and calcium. They are the part that actively participates in extraction, and more of them generally means more body and more perceived sweetness. Magnesium is usually described as favouring brighter, fruitier notes and calcium a rounder, heavier cup, which is why the salt is a choice on this page rather than a fixed ingredient.
Alkalinity is the bicarbonate, and it does almost the opposite: it buffers. Coffee is acidic, and bicarbonate neutralises a portion of that acidity before it reaches your tongue. Raise alkalinity and a bright cup turns rounder and eventually dull; lower it and acidity comes through sharply - welcome in a washed light roast, merciless in an under-extracted one.
The practical consequence is that these two numbers should be moved separately, one at a time. A cup that is bright but thin wants more hardness. A cup that is bright to the point of sour wants more alkalinity, or a coarser grind, which is the cheaper thing to try first.
The doses are too small to weigh, and that is the real problem
Two litres of water at the SCA target needs about a third of a gram of Epsom salt and about an eighth of a gram of baking soda. A scale that reads to 0.1 g cannot tell 0.13 from 0.17, and that is a 30 percent error on the alkalinity before you have brewed anything. This is the point at which most people either buy sachets or give up.
The way around it is to weigh once, at a hundred times the scale, then measure by volume. Make one litre of concentrate using the two concentrate figures the calculator prints - those are whole grams, comfortably inside what any scale can resolve - and add 10 mL of it per litre of distilled water. That is what makes it a 100x concentrate, and it turns an impossible weighing into a syringe measurement.
One litre of concentrate treats a hundred litres of water, so make it in small batches rather than large ones. It is salt water with no preservative and nothing acidic in it, so keep it in the fridge and discard it if it ever looks like anything other than water.
Which numbers here are standards, and which are not
These are worth separating, because they carry very different weight and only one of them belongs to anybody.
The ppm-per-gram figures are arithmetic. Divide 1000 mg by the molar mass of the hydrated salt to get millimoles per litre, then multiply by 100.087 for hardness or 50.043 for alkalinity. Epsom salt at 246.47 g/mol gives 406.1; baking soda at 84.01 g/mol gives 595.7. Nobody measured these and nobody needs crediting for them - anyone with a periodic table can reproduce them in a minute, which is exactly why they are the trustworthy part of this page. The factor-of-two difference between the two multipliers is not a slip: hardness counts moles of a divalent ion, alkalinity counts equivalents of a singly charged one.
The SCA rows are a published standard, and are cited as such in the table note: total hardness 50-175 ppm as CaCO3 with 68 usually quoted as the target, and total alkalinity 40-70 ppm with 40 as the target. The standard also gives a pH line, and printings of it disagree - some show 6 to 8, others 6.5 to 7.5. Rather than pick one and present it as settled, this page leaves pH out and says why.
The two variant profiles are neither. They are ordinary moves inside the standard own range, offered because the target is a place to start from rather than a target you have missed. They are attributed to nobody because nobody published them.
Scale is a hardness problem, not a mineral problem
If the water goes through a boiler or a thermoblock, the hardness number stops being purely a matter of taste. Scale forms when hardness minerals come out of solution on a hot surface, so the rate at which a machine scales tracks hardness and temperature, and the deposit builds where the water is hottest and sits longest.
This is why the higher-hardness profile carries a caveat the others do not. At 150 ppm you are near the top of the acceptable range, and in a pour over kettle that costs you nothing - the water is not held hot and nothing is plumbed. In an espresso machine it is a maintenance decision you are making on the machine behalf, and it is worth making deliberately rather than by picking whichever row sounded richest.
Alkalinity behaves differently again. It is part of what protects boiler metal from the corrosive tendencies of very soft water, which is why the standard sets a floor on it rather than simply preferring less. Water with essentially no buffering is not the safe end of the scale; it is a different problem from the one scale represents.