| Term | Definition |
|---|---|
| TDS | Total Dissolved Solids. The sum of all mineral ions dissolved in water, in mg/L. Approximated by a conductivity pen meter. |
| GH | General Hardness. Concentration of Ca²⁺ and Mg²⁺ ions. Expressed in ppm as CaCO₃ in coffee literature. Also called total hardness. |
| KH | Carbonate Hardness, also called alkalinity. Concentration of HCO₃⁻ ions. Determines how well water resists pH change (its buffering capacity). |
| ppm | Parts per million. In water chemistry, 1 ppm = 1 mg/L. Two different ppm scales exist in coffee water literature — see Section 3. |
| ppm as CaCO₃ | A measurement convention where all ions are mathematically converted to an equivalent mass of calcium carbonate, regardless of what the actual ions are. Used by Lotus, Scott Rao, and the SCA. |
| mg/L actual | The real mass of a specific ion per litre of water, without conversion. This is what a TDS meter approximates. |
| Mother stock | A concentrated mineral solution prepared in advance. A small number of drops are added to brew water at the time of brewing. |
| Drop | One drop from a standard glass bulb pipette = 0.05 mL (20 drops per mL). Must be verified for your specific dropper before first use. |
| p.a. | Pro analysi — analytical-grade reagent purity. Superior to food-grade in consistency. Appropriate for this application. |
| CAS number | A unique identifier for each chemical compound. Use it to confirm you have the correct form of a compound from any supplier, regardless of labelling conventions. |
| Dropper flask | An amber glass bottle with a rubber bulb pipette. Amber glass protects contents from UV degradation. |
| Demineralised water | Water from which virtually all dissolved minerals have been removed. Your source: 1 µS/cm conductivity, approximately 0.5 mg/L TDS. The blank starting canvas for this system. |
Brewing coffee is the process of dissolving soluble compounds out of ground coffee beans using hot water as the solvent. The dissolved minerals already present in the water are not passive — they actively participate in this extraction process in two distinct ways.
Hardness ions (Ca²⁺ and Mg²⁺) are extraction agents. They bind to aromatic and flavour-active compounds in coffee and pull them into solution. Magnesium is particularly effective at extracting volatile aromatic compounds responsible for clarity, brightness, and floral or fruity character. Calcium contributes more to body, mouthfeel, and sweetness. Water with no minerals at all extracts coffee poorly and produces a flat, hollow-tasting cup.
Bicarbonate (HCO₃⁻) is a neutraliser. It reacts with and neutralises acids. Coffee is naturally acidic. Low bicarbonate water produces a cup that tastes bright and sometimes sharp. High bicarbonate water neutralises that acidity and produces a rounder, flatter cup. Too much bicarbonate produces a chalky or cardboard flavour. Controlling bicarbonate independently of hardness is the key innovation of multi-component water systems like Lotus.
Why not just use tap water? Tap water contains minerals, but in concentrations and ratios you cannot control, which vary by location, season, and source. Starting from demineralised water and adding precise amounts of each mineral gives you complete and reproducible control over what the water does to any given coffee.
Parts per million (ppm) is a ratio: one part of a substance for every one million parts of total solution. In water chemistry, because water has a density close to 1 g/mL, 1 ppm is numerically equal to 1 mg/L. So far, unambiguous.
The ambiguity arises because the coffee and water treatment industries use two different conventions for expressing the same ions.
Reports the real mass of each specific ion per litre of water. If you dissolve 4.0 mg of calcium ions (Ca²⁺) in one litre of water, the calcium concentration is 4.0 mg/L actual. This is what a TDS meter approximates.
Used in all Lotus, Barista Hustle, and Scott Rao recipes. Converts every ion to the mass of calcium carbonate (CaCO₃) that would contain an equivalent number of electrically charged ions. This enables direct comparison of hardness from calcium, hardness from magnesium, and alkalinity from bicarbonate using a single number, even though these are chemically different ions.
The conversion is a fixed multiplication factor for each ion:
| Ion | Multiply actual mg/L by | To get ppm as CaCO₃ |
|---|---|---|
| Ca²⁺ | × 2.497 | GH contribution |
| Mg²⁺ | × 4.118 | GH contribution |
| Na⁺ / K⁺ via HCO₃⁻ | × 0.8202 (applied to HCO₃⁻) | KH contribution |
This manual uses both conventions throughout, always labelled explicitly. When you see a number followed by "(CaCO₃)," it is Convention B. When you see "mg/L actual" or "actual TDS," it is Convention A. Your TDS meter reads approximately Convention A minus 10–20% — see Section 14.
The calibration values used throughout this manual are sourced from the Lotus Water Drops product documentation, as reproduced and discussed by Scott Rao:
The Lotus per-drop specification as stated in that source:
| Flask | Into 450 mL | Effect |
|---|---|---|
| 1 drop Ca | 10 ppm GH (CaCO₃) | Hardness |
| 1 drop Mg | 10 ppm GH (CaCO₃) | Hardness |
| 1 drop Na | 5 ppm KH (CaCO₃) | Alkalinity |
| 1 drop K | 5 ppm KH (CaCO₃) | Alkalinity |
These are Lotus product specifications, not independently verified by this author. The 450 mL volume is Lotus's chosen calibration volume because it yields clean round numbers per drop (see Section 11). All stock preparation quantities in Section 8 are calculated to reproduce these exact per-drop deliveries.
The water chemistry community has independently reverse-engineered Lotus stock concentrations by working backwards from the published per-drop values. The results are consistent with the calculations in this manual. No single peer-reviewed source exists for this reverse-engineering, but the derivation methodology is transparent and can be verified from first principles using the worked example in Section 8.
| Flask | Compound | Ions delivered | Primary flavour effect | Notes |
|---|---|---|---|---|
| Ca | CaCl₂·2H₂O | Ca²⁺, Cl⁻ | Body, mouthfeel, sweetness, roundness | Ca²⁺ can form limescale if combined with high bicarbonate. Keep below ~50 mg/L Ca²⁺ actual for machine safety. |
| Mg | MgCl₂·6H₂O | Mg²⁺, Cl⁻ | Brightness, aromatic clarity, acidity definition | Mg²⁺ is the most active extraction agent. Cl⁻ at low concentrations adds subtle sweetness. |
| Na | NaHCO₃ | HCO₃⁻, Na⁺ | Smooth, elegant alkalinity buffer; reduces perceived bitterness | Na⁺ counteracts bitterness even at low concentrations. Useful for darker roasts. |
| K | KHCO₃ | HCO₃⁻, K⁺ | Sharp, defined alkalinity buffer; clean finish | K⁺ is largely flavour-neutral. Preferred over Na for light roasts where bitterness is not a concern. |
Both Na and K flasks deliver HCO₃⁻ (the actual buffering agent) in equal amounts per drop. The difference in their effect is entirely due to the co-delivered cation (Na⁺ vs K⁺). Having both in separate flasks allows you to control not just the total alkalinity, but its character independently.
Fill customer-supplied containers with demineralised water at approximately 1 µS/cm conductivity.
demineralizovanavoda.sk
Amber borosilicate glass bottles with black rubber bulb pipettes, 200 mL volume.
bewit.love — 200 mL amber flask with black pipette
All four required compounds, 1 kg quantities, p.a. purity. Verify CAS numbers on delivery against the list in Section 7.
centralchem.sk
Any basic conductivity pen meter suffices for consistency checking. The Apera EC20 or HM Digital COM-100 are well-regarded options available on Amazon.de or Alza.sk. Under EUR 20.
Four compounds are required. All from Centralchem, p.a. grade, 1 kg each. Confirm the CAS number on delivery — it is the only reliable way to verify you have the correct chemical form, since naming conventions differ between suppliers.
| Flask | Chemical name | Formula | CAS | Form |
|---|---|---|---|---|
| Ca | Calcium chloride dihydrate | CaCl₂·2H₂O | 10035-04-8 | White crystalline solid |
| Mg | Magnesium chloride hexahydrate | MgCl₂·6H₂O | 7791-18-6 | White crystalline solid |
| Na | Sodium bicarbonate | NaHCO₃ | 144-55-8 | Fine white powder |
| K | Potassium bicarbonate | KHCO₃ | 298-14-6 | White crystalline powder |
CaCl₂·2H₂O (dihydrate) is the standard food and lab-grade form. The anhydrous (CaCl₂) and hexahydrate (CaCl₂·6H₂O) forms also exist — each has a different mass per formula unit and would require different calculations. The quantities in Section 8 are calculated specifically for the dihydrate.
MgCl₂·6H₂O (hexahydrate) is the standard stable form. Anhydrous MgCl₂ is hygroscopic and difficult to weigh accurately. NaHCO₃ and KHCO₃ exist in only one common stable form each — no disambiguation needed.
At typical volumes (200–300 mL per brew, once or twice daily), each 1 kg purchase yields enough compound to make approximately 150 full 200 mL flasks of stock. Each flask contains approximately 4,000 drops. At 10–20 drops per brew session, one flask lasts several months. The 1 kg quantities will last years at home use.
Each mother stock is a concentrated mineral solution in a 200 mL amber dropper flask. When a small number of drops are added to demineralised brew water, each drop delivers a known, predictable mass of mineral ions. The concentration is set so that the per-drop delivery matches the Lotus product specification exactly.
The amber glass protects the solution from UV degradation. The rubber bulb dropper delivers a consistent volume of 0.05 mL per drop (20 drops per mL).
Each stock is prepared by dissolving a precise mass of compound in exactly 200 mL of source water. A larger preparation volume reduces the relative impact of weighing error. For example, the Na flask requires 15.2 g of NaHCO₃. A ±0.1 g error on a home scale (0.1 g resolution) represents ±0.66% of that mass — well within the 5% acceptable tolerance. The 200 mL volume was chosen to keep all four compounds within this tolerance on a consumer-grade scale.
Home scale reading to 0.1 g resolution. Four 200 mL amber glass dropper flasks. Glass rod or magnetic stirrer for mixing. Syringe or graduated cylinder for topping up to exact volume. Source water (1 µS/cm demineralised). Permanent marker or adhesive labels.
Calculated to reproduce the Lotus per-drop specification exactly, assuming 0.05 mL per drop.
| Flask | Compound | CAS | Weigh (g) | Scale error ±0.1 g | Stock concentration |
|---|---|---|---|---|---|
| Ca | CaCl₂·2H₂O | 10035-04-8 | 26.4 g | ±0.38% | 132.0 g/L |
| Mg | MgCl₂·6H₂O | 7791-18-6 | 36.4 g | ±0.27% | 182.0 g/L |
| Na | NaHCO₃ | 144-55-8 | 15.2 g | ±0.66% | 76.0 g/L |
| K | KHCO₃ | 298-14-6 | 18.0 g | ±0.56% | 90.0 g/L |
This example shows how the 26.4 g figure is derived. The same method applies to all four flasks.
1. Label each flask: compound name, formula, CAS number, date prepared.
2. Weigh the compound mass specified in the table above.
3. Add approximately 170 mL of source water to the flask.
4. Add the compound and stir or swirl until fully dissolved. See Section 9 for compound-specific handling notes.
5. Once fully dissolved and at room temperature, top up to exactly 200 mL.
6. Cap tightly. The stock is ready for use immediately.
Dissolution is strongly exothermic — the solution becomes noticeably warm. Add the compound slowly with stirring and allow the flask to return fully to room temperature before topping to the 200 mL mark. Thermal expansion while warm would result in slightly less than 200 mL after cooling, making the stock slightly more concentrated than intended. Shelf life: 12+ months sealed.
Dissolves readily without significant heat. No special handling required. Shelf life: 12+ months sealed.
Stir gently — do not shake. Shaking or dissolving in warm water causes CO₂ to be released as visible fizzing, meaning bicarbonate is being lost from solution and the stock will be weaker than intended. Use room temperature source water only. Remake every 2–3 months. Degradation is a slow, gradual CO₂ loss that reduces buffering capacity. The stock does not become harmful; it simply becomes weaker.
Same precautions as Na flask. Stir gently, no shaking, room temperature water, sealed storage. Remake every 2–3 months.
Each drop (0.05 mL) delivers the following, independent of water volume:
| Flask | Target ion | mg/drop | Counter-ion | mg/drop | Total mg/drop | CaCO₃ equiv/drop |
|---|---|---|---|---|---|---|
| Ca | Ca²⁺ | 1.801 | Cl⁻ | 3.187 | 4.988 | 4.500 mg GH |
| Mg | Mg²⁺ | 1.093 | Cl⁻ | 3.189 | 4.282 | 4.500 mg GH |
| Na | HCO₃⁻ | 2.744 | Na⁺ | 1.034 | 3.778 | 2.250 mg KH |
| K | HCO₃⁻ | 2.744 | K⁺ | 1.758 | 4.502 | 2.250 mg KH |
The recipes below are given per 1 litre. To use at a smaller volume, scale drop counts proportionally:
Rounding is unavoidable at small volumes. Record your actual drop counts and recalculate with the formulae above to know exactly what you made.
Credited to Dan Eils (Litmus Coffee Labs). Source: Scott Rao blog, 1 Dec 2022. Balanced, full-bodied, suitable for most single-origin filter coffees.
Credited to Lance Hedrick. Source: Scott Rao blog, 1 Dec 2022. Bright, acidity-forward. Best on delicate washed single-origins. Two flasks only.
Derived in this manual. Not a published standard. Equal drops from all four flasks — easy to remember, balanced, machine-safe. A useful first experimental starting point.
| Recipe | GH (CaCO₃) | KH (CaCO₃) | Actual TDS at 1 L | Flasks | Source |
|---|---|---|---|---|---|
| Rao/Perger | 90.0 | 42.75 | 170.3 mg/L | All four | Scott Rao / Dan Eils |
| Hedrick L&B | 58.5 | 24.75 | 114.4 mg/L | Ca + K | Lance Hedrick |
| Symmetric | 81.0 | 40.5 | 158.0 mg/L | All four | Derived |
Ca and Mg contribute identically to GH per drop. Na and K contribute identically to KH per drop. Values in ppm as CaCO₃.
How to use: find your brew volume row. Multiply the GH column by your total (Ca + Mg) drops, and the KH column by your total (Na + K) drops, to get your water profile.
| Volume (mL) | GH per drop — Ca or Mg (ppm CaCO₃) | KH per drop — Na or K (ppm CaCO₃) |
|---|---|---|
| 50 | 90.0 | 45.0 |
| 100 | 45.0 | 22.5 |
| 150 | 30.0 | 15.0 |
| 200 | 22.5 | 11.3 |
| 250 | 18.0 | 9.0 |
| 300 | 15.0 | 7.5 |
| 350 | 12.9 | 6.4 |
| 400 | 11.3 | 5.6 |
| 450 | 10.0 | 5.0 |
| 500 | 9.0 | 4.5 |
| 550 | 8.2 | 4.1 |
| 600 | 7.5 | 3.8 |
| 650 | 6.9 | 3.5 |
| 700 | 6.4 | 3.2 |
| 750 | 6.0 | 3.0 |
| 800 | 5.6 | 2.8 |
| 850 | 5.3 | 2.6 |
| 900 | 5.0 | 2.5 |
| 950 | 4.7 | 2.4 |
| 1000 | 4.5 | 2.3 |
Values in actual mg/L (not CaCO₃ equivalent). Use these to estimate your TDS meter reading after adding drops, accounting for the meter offset described in Section 14.
Derivation: Ca = 4,988 ÷ V(mL). Mg = 4,282 ÷ V(mL). Na = 3,778 ÷ V(mL). K = 4,502 ÷ V(mL).
| Volume (mL) | Ca flask (mg/L per drop) | Mg flask (mg/L per drop) | Na flask (mg/L per drop) | K flask (mg/L per drop) |
|---|---|---|---|---|
| 50 | 99.8 | 85.6 | 75.6 | 90.0 |
| 100 | 49.9 | 42.8 | 37.8 | 45.0 |
| 150 | 33.3 | 28.5 | 25.2 | 30.0 |
| 200 | 24.9 | 21.4 | 18.9 | 22.5 |
| 250 | 20.0 | 17.1 | 15.1 | 18.0 |
| 300 | 16.6 | 14.3 | 12.6 | 15.0 |
| 350 | 14.3 | 12.2 | 10.8 | 12.9 |
| 400 | 12.5 | 10.7 | 9.4 | 11.3 |
| 450 | 11.1 | 9.5 | 8.4 | 10.0 |
| 500 | 10.0 | 8.6 | 7.6 | 9.0 |
| 550 | 9.1 | 7.8 | 6.9 | 8.2 |
| 600 | 8.3 | 7.1 | 6.3 | 7.5 |
| 650 | 7.7 | 6.6 | 5.8 | 6.9 |
| 700 | 7.1 | 6.1 | 5.4 | 6.4 |
| 750 | 6.7 | 5.7 | 5.0 | 6.0 |
| 800 | 6.2 | 5.4 | 4.7 | 5.6 |
| 850 | 5.9 | 5.0 | 4.4 | 5.3 |
| 900 | 5.5 | 4.8 | 4.2 | 5.0 |
| 950 | 5.3 | 4.5 | 4.0 | 4.7 |
| 1000 | 5.0 | 4.3 | 3.8 | 4.5 |
Each recipe has a fixed ratio of drops and therefore a fixed total dissolved mass per "one set." The minimum water volume to hit a TDS target without rounding any drops:
Mass per 1-set: Rao/Perger = 170.3 mg. Hedrick L&B = 114.4 mg. Symmetric = 158.0 mg.
| Target TDS (mg/L) | GH approx. (CaCO₃, Rao/Perger) | Rao/Perger volume | Hedrick L&B volume | Symmetric volume |
|---|---|---|---|---|
| 10 | ~5 | 17,030 mL (17.0 L) | 11,440 mL (11.4 L) | 15,800 mL (15.8 L) |
| 20 | ~11 | 8,515 mL (8.5 L) | 5,720 mL (5.7 L) | 7,900 mL (7.9 L) |
| 30 | ~16 | 5,677 mL (5.7 L) | 3,813 mL (3.8 L) | 5,267 mL (5.3 L) |
| 40 | ~21 | 4,258 mL (4.3 L) | 2,860 mL (2.9 L) | 3,950 mL (4.0 L) |
| 50 | ~26 | 3,406 mL (3.4 L) | 2,288 mL (2.3 L) | 3,160 mL (3.2 L) |
| 60 | ~32 | 2,838 mL (2.8 L) | 1,907 mL (1.9 L) | 2,633 mL (2.6 L) |
| 70 | ~37 | 2,433 mL (2.4 L) | 1,634 mL (1.6 L) | 2,257 mL (2.3 L) |
| 80 | ~42 | 2,129 mL (2.1 L) | 1,430 mL (1.4 L) | 1,975 mL (2.0 L) |
| 90 | ~48 | 1,892 mL (1.9 L) | 1,271 mL (1.3 L) | 1,756 mL (1.8 L) |
| 100 | ~53 | 1,703 mL (1.7 L) | 1,144 mL (1.1 L) | 1,580 mL (1.6 L) |
| 110 | ~58 | 1,548 mL (1.5 L) | 1,040 mL (1.0 L) | 1,436 mL (1.4 L) |
| 114 | ~60 | 1,494 mL (1.5 L) | 1,004 mL ≈ 1.0 L ★ | 1,386 mL (1.4 L) |
| 120 | ~63 | 1,419 mL (1.4 L) | 953 mL | 1,317 mL (1.3 L) |
| 130 | ~69 | 1,310 mL (1.3 L) | 880 mL | 1,215 mL (1.2 L) |
| 140 | ~74 | 1,216 mL (1.2 L) | 817 mL | 1,129 mL (1.1 L) |
| 150 | ~79 | 1,135 mL (1.1 L) | 763 mL | 1,053 mL (1.1 L) |
| 158 | ~84 | 1,077 mL | 724 mL | 1,000 mL ★ |
| 160 | ~85 | 1,064 mL (1.1 L) | 715 mL | 988 mL |
| 170 | ~90 | 1,001 mL ★ | 673 mL | 929 mL |
| 180 | ~95 | 946 mL | 636 mL | 878 mL |
| 190 | ~100 | 896 mL | 602 mL | 832 mL |
| 200 | ~106 | 852 mL | 572 mL | 790 mL |
★ = natural 1-litre point for that recipe (uses exactly the drop counts from Section 10 in 1,000 mL). GH column derived from Rao/Perger ratio: GH ≈ 90 × TDS / 170.3 (ppm CaCO₃).
A TDS pen meter does not directly measure dissolved solids. It measures electrical conductivity and converts it to an estimated TDS using a fixed factor (typically 0.5 or 0.7) calibrated for NaCl solutions. Coffee mineralisation water contains a different ion mixture than NaCl, so the meter will underestimate actual TDS by approximately 10–20%.
Use the meter for consistency, not absolute accuracy. If your Rao/Perger recipe at 1 litre calculates to 170.3 mg/L actual TDS, your meter might read 140–155 ppm. This reading alone is not meaningful in absolute terms. What is meaningful: if you make the same recipe twice and both times the meter reads the same value, your stocks are consistent. If the reading drifts significantly over weeks, your bicarbonate stock may be degrading and should be remade.
Calibration check after preparing your stocks: make 1 litre of Rao/Perger (7 Ca + 13 Mg + 8 Na + 11 K) and measure TDS immediately. Record this reading. It becomes your personal reference baseline for this batch of stocks. All future readings from the same stocks should be interpreted relative to this number.
The stock concentrations in Section 8 are calibrated to match the Lotus product exactly, which targets typical specialty brewing ranges of 100–200 mg/L actual TDS. Below ~80 mg/L, the minimum water volume required to use these stocks at small brew volumes becomes impractical: at a target of 40 mg/L Rao/Perger, Table 3 shows you'd need 4.3 litres to preserve the drop ratios. You're not brewing 4.3 litres of filter coffee.
The solution is a set of diluted working flasks — secondary flasks made by drawing a small volume from each mother stock and topping up with demineralised water. Because you dilute all four stocks by the same factor, the mineral balance of your recipe is perfectly preserved. Only the absolute concentration per drop changes. You use the exact same drop counts as any named recipe; the working flasks do the scaling.
The required dilution factor D for a given target TDS and brew volume is:
Volume to draw from the mother stock into a fresh 200 mL flask:
Fill the rest with demineralised water to exactly 200 mL. Label the flask clearly with the dilution factor and date.
Rao/Perger mass per 1-set = 170.3 mg (7 Ca + 13 Mg + 8 Na + 11 K drops).
Draw 12 mL from each of the four mother flasks into four fresh 200 mL amber flasks. Top each to exactly 200 mL with demineralised water. Result: each drop now delivers 1/17 of the normal mineral load. Use 7 Ca + 13 Mg + 8 Na + 11 K drops as normal. At 250 mL, this gives:
mL to draw from each mother stock into a 200 mL flask, for various target TDS and brew volumes. Fill remainder to 200 mL with demineralised water.
| Target TDS (mg/L) | Brew 200 mL — draw | Brew 250 mL — draw | Brew 300 mL — draw | Result GH at target |
|---|---|---|---|---|
| 30 | 14.2 mL | 17.7 mL | 21.3 mL | ~16 ppm CaCO₃ |
| 40 | 9.4 mL | 11.7 mL | 14.1 mL | ~21 ppm CaCO₃ |
| 50 | 7.5 mL | 9.4 mL | 11.3 mL | ~26 ppm CaCO₃ |
| 60 | 6.3 mL | 7.8 mL | 9.4 mL | ~32 ppm CaCO₃ |
| 70 | 5.4 mL | 6.7 mL | 8.1 mL | ~37 ppm CaCO₃ |
| 80 | 4.7 mL | 5.9 mL | 7.1 mL | ~42 ppm CaCO₃ |
Measure the draw volume with a syringe or a pipette, not a dropper. A 10–20 mL plastic syringe (available at any pharmacy for under €1) gives sufficient accuracy for this step. The mother stock flasks are not affected — draw from them, recap, and store as normal.
The 12 mL draw figure for 40 mg/L at 250 mL is not sensitive to small errors: ±1 mL on the draw changes the final TDS by roughly ±3 mg/L, which is negligible for sensory purposes. You do not need a calibrated pipette.
Working flasks prepared this way have the same shelf life as the corresponding mother stock. Bicarbonate working flasks (Na, K) should be discarded after 2–3 months even if not fully used; chloride working flasks (Ca, Mg) remain stable for 6+ months sealed.
You can make working flasks for any recipe by using that recipe's mass per 1-set in the formula above. Hedrick L&B (114.4 mg/set) and Symmetric (158.0 mg/set) require proportionally smaller draw volumes than Rao/Perger at the same target TDS, since their 1-set mass is lower.