Alkalinity/pH and salts again!

Homebrew Talk - Beer, Wine, Mead, & Cider Brewing Discussion Forum

Help Support Homebrew Talk - Beer, Wine, Mead, & Cider Brewing Discussion Forum:

This site may earn a commission from merchant affiliate links, including eBay, Amazon, and others.
Remove all confusing reference to Hardness and "as CaCO3" from a water report. Express only the information needed ("ions", of concentration more than one part per million - ppm), which in the UK tap water is Calcium, Magnesium, Sodium, Chloride and Sulphate. The "artifacts" from pollutants, Nitrate and Phosphate, can come in useful (balancing). And "Alkalinity" as Bicarbonate, although it appears that can be calculated from the rest.

Sure, you can calculate (estimate) Bicarbonate from the rest, including pH, or without pH if you just want alkalinity "as bicarbonate." But why not use the bicarbonate and/or alkalinity numbers that are already on the report? And if it's expressed "as CaCO3," multiply by 1.22 (if the pH tool doesn't already do that for you). I'm not sure what new ground you're breaking (for US brewers anyway). And when a calculator doesn't ask for Hardness, who cares what its units are? Who is truly stumped by that? Again, USA perspective here.

As for banishing "as CaCO3" from water reports, good luck tilting at that windmill. These reports (the ones I'm familiar with, such as Ward Labs) were not originally designed for brewers, and there are very good reasons to express some things "as CaCO3" (or "as" other things) for scientific, agricultural, and industrial users. In the USA, the mistake I occaisionally see brewers making is misinterpreting (or rather not interpreting) "SO4 as S." Fortunately, that one doesn't affect pH, at least.

I seem to be successful at it too, there was an example higher up this thread .... >here<. The spreadsheet doing this is a "pre-processor", clearing a report of un-necessary drivel for entry into a "Brewing Water Profile Builder". Everything as ppm or mg/l (also Alkalinity represented as Bicarbonate but for this situation its quite all right to think it is Bicarbonate).

Again, yes, you can calculate/estimate Bicarbonate. But is it reasonable to expect that a user is going to add another spreadsheet to their process just to get essentially the same answer they would have got by multiplying a number from the report by 1.22 (if necessary)? Because in a water report (USA at least), Alkalinity is the only mash pH calculator relevant number expressed "as CaCO3."

Calcium and Magnesium does have an indirect influence on mash pH, but the real ion concentrations cover that much better than Hardness and "as CaCO3".

I'd say Calcium and Magnesium have a direct influence on mash pH. Do you say indirect because the Ca/Mg has to interact with phosphates from the malt? To me, that's just behind the scenes chemistry, just as salts dissociating into ions is. All "automatic" for the brewer. But it's quite true that Ca/Mg don't affect the pH of plain water. Also, I agree that the real ion concentrations (of Ca/Mg) are the thing that is useful (for the mash pH calculators), rather than Hardness "as CaCO3" (or as anything). Fortunately brewers can completely ignore that line on the water report, because the mash pH tool won't ask for it. When I do a water consult with a brewery, I include the original report numbers, followed by a pared down version with just the enries relevant to mash pH tools and/or to beer flavor, yeast function, etc. I don't do that to reduce confusion though. I do it because I then follow with a discussion of how each of those things affects mash pH and/or flavor (etc.).

(Hardness that is) ... Yes you can! Calcium and Magnesium (etc.) may have little indirect influence on mash pH, but it doesn't need hardness to interfere with working it out ... Carbonate Hardness, or better, Alkalinity, on the other hand has loads to do with it.

I gotta ask... do mash pH calculators in the UK actually ask for a Hardness number? As for Calcium and Magnesium having "little" influence on mash pH, I disagree. I have many recipes that use nothing but CaCl2 and CaSO4 to adjust mash pH.
But why not use the bicarbonate and/or alkalinity numbers that are already on the report?
The original spreadsheet did. I was attempting to make it a choice, but it was creating difficult to iron out errors, so I stopped trying ... one less value to hunt down! The calculated values were close anyway, these analyses were working out about the same too, but with one big difference. They were never exactly the same. The reported values never balanced up. And the reason was all the reported values came from different times. Alkalinity was reported some three or four times more frequently than specific ions. The reports were averaged for each individual subject. The result was a total "report" that never actually existed at any point in time. So, neither did the Alkalinity match any particular report (There would be a Maximum set, a Minimum set, and an Average or Mean set).

By calculating the Alkalinity the result would be exactly balanced for a particular "contrived" set. In the case of single analysis results the difference was minimal anyway. It just made sense, or at least made as little sense as the actual reports.

Likewise, I calculate Hardness values too. Yes, the spreadsheet does use "Hardness" even if it's designed to eliminate it. As I've mentioned, UK water reports won't let go of Hardness (they are getting better) and some things can only be extracted from Hardness as a result. My own water has no specific analysis for Calcium, it must be extracted from Hardness analysis. So I get Calcium Hardness reported as CaCO3. The water company isn't unaware of the limitations and do provide a proper report of Magnesium, converting it the opposite way to "Magnesium Hardness" as CaCO3 (😵‍💫) . They don't actually say "as CaCO3" either (This is their summary report, the don't publish hardness stuff in the full reports ... These are pretty good for the UK, some UK reports are dire):

Water Report (Brief) 2014 B06 - Denbigh Zone.jpg

Full and Summary were published about 4 months apart, the "Alkalinity" is way too high to match the Hardness analysis.

Is the purpose of the spreadsheet making sense now?

European water calculators are rare these days, we mostly use Amerian ones. European ones are typically handicapped with "Hardness" anyway. Historically it was a teaspoon of this, a tablespoon of that ...

[EDIT: Oh aye ... in case anyone notices, "Hardness [Magnesium] (mg/l)" is a misprint! 1.16x4.118=4.77 not 4.50.]
Last edited:
There are water reports which only indicate 'Total Hardness' (TH, as CaCO3) and leave you to guess as to Ca++ and Mg++. Thanks to initial work done by Kai Troester in this area, there is a method which makes a fairly decent (on average) guess as to these two ions. This method is derived as follows (wherein only that which is bolded in black at the end needs to be remembered):

First, convert whatever units your total hardness is reported in into units of ppm (mg/L) of total hardness "as CaCO3".

Next, it appears as if an aggregate average of all of the worlds fresh water sources indicates that "on average" roughly 72% of fresh waters "total hardness" is derived from Calcium, with roughly 28% from Magnesium.

MW of CaCO3 = 100.0869
MW of Ca++ = 40.078
MW of Mg++ = 24.305

100.0869/40.078 = 2.4973
100.0869/24.305 = 4.118

And since total hardness is the measure of combined Ca++ and MG++:
Total Hardness (as CaCO3) = 2.4973(Ca++) + 4.118(Mg++)

Therefore, on average:
Ca++ ~= (0.72*TH)/2.4973
Mg++ ~= (0.28*TH)/4.118

Example: A report indicates total hardness = 186 mg/L (as CaCO3), but it doesn't say what the mg/L values for Ca++ and Mg++ are:

Ca++ ~= (0.72*186)/2.4973
Ca++ ~= 53.6 mg/L
Mg++ ~= (0.28*186)/4.118
Mg++ ~= 12.6 mg/L

Our educated guess as derived from only total hardness is thus: Ca = 53.6 mg/L (ppm), and Mg = 12.6 mg/L (ppm)

*Note: You may find it necessary to convert Total Hardness as seen on your report from other 'units' to mg/L (ppm) 'units' first, before applying these simple (highlighted in black above) formulas.
Last edited:
Is the purpose of the spreadsheet making sense now?

Well, yes. Partially anyway. If your Ca/Mg numbers are in odd units (i.e. "as CaCO3") or not directly reported at all (Ca), of course you have to convert/compute them. But...a computed alkalinity estimate of 25.01mg/l instead of a reported average of 25.42mg/l? Is there a recipe where the predicted mash pH moves by even 0.01 as a result of that difference?

I'm starting to suspect that "academic exercise" may be a part of your motivation for this, and there's nothing wrong with that. I admit I could be wrong.
I'm starting to suspect that "academic exercise" may be a part of your motivation for this, and there's nothing wrong with that.
I was going to vehemently deny that, but ... you might be right? I'm trying to stuff me head with academic stuff that it abruptly emptied itself of a few years ago. And thanks for picking out:

... a computed alkalinity estimate of 25.01mg/l instead of a reported average of 25.42mg/l?

... I'd forgotten I'd written that in this thread. Got me reviewing what I've said. Seems I'm doing a bit of repeating myself in this thread, but I think that's normal when getting older! But what I also said about those figures is instead of making me proud (what I calculated was virtually the same as what was reported), it made me suspicious! BTW, I draw a line at "parts-per-million" ... parts-per-billion (and fractions of ppm) is just "cloud-cuckoo-land".

But the overall motivation for doing this:

The original work was already done ... the "Defuddler" spreadsheet could fulfil its purpose of stripping a water report of all the junk it accumulates, the muddle of different units (some of which were imaginary), the confusion of mixing arcane methods into "new" (not that "new"!), the distortions created by Sodium salts even. It just put out the six ions (Ca, Mg, Na, SO4, Cl and HCO3) that any water calculator would be happy with.

What I came here for is a clue as to why and how low-alkalinity water dropped sharply in Alkalinity between where it was dosed to reduce pipe-corroding acidity (with calcium hydroxide) & tested, and the house tap (ultimately to figure why I find myself mashing-in at below pH5.0 despite using calculators to adjust the water).

I'm busy now trying to adapt the "Defuddler" with what I've gleaned recently and from here ... most notably from @Silver_Is_Money (i.e. "Cheat!", though he might not have meant it in the way I'm doing!). I'm also trying to establish the formula "[Total Alkalinity = ∑conservation-cations - ∑conservation-anions]" more centrally to the spreadsheet (automates "Bicarbonate" deduction and "balancing") and mEq/l units for calculation ('cos they're easy). Unfortunately, bringing the "Defuddler" into it is guaranteed to cause conflict and miscomprehension ... you know what I mean! (I promise to post the updated "Defuddler" here when it's better done).
Should put: In "Total Alkalinity = ∑conservation-cations - ∑conservation-anions" the sums are in equivalents (mEq/l seems a good choice), so you don't worry about valencies. If I don't put this I'll forget! I was already thinking there's something missing there; next step is I'm not thinking about it anymore.
Ha! I might have been quiet, but I haven't stopped meddling with this spreadsheet! I should be able to post it later today. It's been a bit of a headache, because trying to modify a "finished" spreadsheet was creating a tangled cat's-cradle affair. I have an aversion to enabling the spreadsheet's "circular referencing", I know it would help me lots, but I then feel like I've failed. Some things from the original had to go; one being the option to use the reported "Alkalinity", now it will only calculate it ("as" Bicarbonate).

This is the output entering the numbers from a private report of my own water supply (at the tap):


The reported Alkalinity "as CaCO3" was "8", so the calculated is 14 (13.92 as CaCO3) so miles out? Hardly that! that's a difference of 6 mg/l "as CaCO3". The report didn't list "nitrate" either, the Public Report puts that as 3mg/l and that would have come off the the calculated Alkalinity amount. Silly numbers, I'll find something more substantial to test it on.
Short delay posting the full spreadsheet due to an insignificant error that needed fixing (it wasn't insignificant if you ran in to it!). Meanwhile, this shows one of the objectives (the other objective, coping with high Sodium waters, was covered earlier in the thread):

It's the same water as in the last post (my water!), but the analysis is the public available one (two actually). And the spreadsheet is switched to "Adaptable" mode. Only relevant to water with low alkalinity that is "dosed" (with Calcium Hydroxide, or "Lime") at the water treatment works due to its natural acidity. [EDIT: "2003" on the posted report is a typo!]

It appears that that the Lime is consumed during the journey to the house tap, so the spreadsheet allows the cations to be "tweaked" to lower the Alkalinity to match this drop. It's a "kludge", but I could not find a suitable description of this phenomena. It is described in the narration that is associated with the spreadsheet ... a clip of which:

This tool allows minor tweaks to the "Conservation cations" to modify the Alkalinity. In reality the ion concentrations won't act in this way, but it's a "kludge" to mimic a real situation that has no obviously simple mechanism and has minimal (no) adverse affects on the water's mineral profile. The situation it is designed for the slow drop in alkalinity following "dosing" of the water with Lime to reduce acidity of moorland runoff. The delay suggests the water arriving at taps is much lower in Alkalinity than when tested at the Water Treatment Works.

The "kludge" may find other uses at a later date? Meanwhile, it's a "kludge" and therefore resides deep in the Foetid Mire! The results though are applied directly to the six top boxes if set to "Adapted" (the setting is easily reversed).

The kludge is only applied to cations that can be assumed to be associated with Alkalinity anions (e.g. bicarbonate). The impact on total cation concentrations is insignificant even though in this case all but 65.5% of affected cations have been "removed" (virtually that is). Original concentrations were Ca=22.39, Mg=1.16, and Na=6.86 (all mg/l). But Alkalinity dropped (virtually, or calculated) from 13.97 (mg/l as HCO3) to 9.15 (7.5mg/l as CaCO3), the average results from titrations and professional analysis.

The spreadsheet does this without taxing the user with all the "details". Hopefully it will fix the sub-pH5.0 mashes I'm getting (although I'm not experiencing any ill effects from mashing at pH4.9.).
Last edited:
Ah ... short delays always turn into long delays. While getting this spreadsheet ready to post and going over the "documentation" (my tongue is permanently fixed in me cheek now) it became apparent that all this "calculated" Alkalinity stuff might be good at simplifying the spreadsheet, but it also alienated a load of potential users who had no proper "calcium" and "magnesium" analysis.

It's not uncommon, that first report I mention in my last post has no Calcium analysis. Hence, I need the second listed analysis (the "summary" ... it has all the naff "Hardness" babble).

Just fixing that. I think I'm at the bare minimum of what you can build a complete brewing water profile from: "Total Hardness" (yak! But you can get useful stuff from it with a bit of imagination), Sodium (helps with the imagination!), Sulphate and Chloride. Anything less than four items and I think I'm beaten (at which point it's "just use it anyway". I know where I'm going with it, but will it work?
Sorry for the delay posting a "finished" spreadsheet (i.e. one "finished enough to stand alone while I make it do something else). I'm just polishing up the instructions at moment (there's not many, it was my intention to make it "hands-off").

It's ironic that having driven out the need for "Hardness", I've then had to get it back to cover those less common instances where no Calcium and Potassium Magnesium figure has been published and only an existing "Hardness" figure offers the possibility of building that information (far better if someone produced the information without wrapping it up with "Hardness").

But don't worry about this project's aim of losing "Hardness" forever, and it's artificial side-kick of "as CaCO3" that can go with it. This arcane artificial structure (I mean "Hardness"!) has nothing of value to offer brewers except confusion and miscomprehension. It'll no doubt continue to be used to work out solutions to lime-scaling in boilers and pipes, and by those few brewers who can follow it ... but for everyone else it isn't telling you what you think it is.

Whatever purpose you can apply "Hardness" to in brewing beer, you can find an up-to-date alternative that is easier to learn, easier to deploy, far more accurate, and less likely to trap you in some fantasy world.

I've always been impressed that Americans don't seem to be so hung-up on "Hardness". Talking about "Alkalinity", Bicarbonate, and other real-world brewing water topics. Well, keep it up and don't be diverted by these characters chatting about the greater good of soapsuds bound "Hardness".

Humm, I don't appear to be in good mood today? 🤔

[EDIT: Correction: Put "Potassium" where I meant "Magnesium".]
Last edited:
There are water reports which only indicate 'Total Hardness' (TH, as CaCO3) and leave you to guess as to Ca++ and Mg++. Thanks to initial work done by Kai Troester in this area, there is a method which makes a fairly decent (on average) guess as to these two ions. This method is derived as follows (wherein only that which is bolded in black at the end needs to be remembered):

Therefore, on average:
Ca++ ~= (0.72*TH)/2.4973
Mg++ ~= (0.28*TH)/4.118

Thanks! This is incorporated in my spreadsheet now. Didn't take much 'cos it already had a 7:3 division which just needed changing to 7.2:2.8 plus an acknowledgment.

Haven't sorted the pH stuff yet but I have ideas. It'll have to wait until after I finish this ongoing stuff.
Here go: To make up for my outburst against "Hardness", I've dragged this from another of my posts on another forum:

Hardness and Alkalinity II.png

Illustrates what lies outside of "Hardness's" envelope. All the stuff that can be attributed to non-Hardness cations (Sodium, Potassium, etc.). Including the "Alkalinity" that didn't get counted because it's not: "Carbonate Hardness", is another kind of "Alkalinity", can be attributed to non-Hardness cations, etc.

These "exemptions" don't amount to much normally. But when not "normally" they can be a big deal. And if you've got ion-exchange going on ...

[EDIT: Minor alteration to diagram to make it clearer.]
Last edited:
This is the same diagram as above without all the "Hardness" babble:

Hardness and Alkalinity.png

Clear demarcation of Magnesium and Calcium. Clear inclusion of non-Hardness Cations. Alkalinity as "Total Alkalinity" not "Carbonate Alkalinity" that can be associated with multi-valent anions; and "the rest" of Alkalinity seperately. Somewhat clearer than mixed up with all that "Hardness" babble?

This might explain why I draw the different ions in vertical columns? The ions are also illustrated as if they are the same as each other (equivalents) using the natural balance of cations and anions in surface water to draw connections between ions and Alkalinity that might otherwise not be suspected.

I'm often accused of making things over-complicated. But who's being the most complicated in this instance? "Hardness" has its place, but do yourself a favour and just be sure you leave Hardness where it is and don't mix it up with other ways of doing things.