Found something broken, or have an idea that would make this more useful? Report it here - takes about a minute, and every submission gets tracked so nothing gets lost.
Pick what you're trying to hit, in one of four modes:
By default, mash pH is estimated using beer color alone, which is fast, but less precise.
Adding your actual grain bill enables a much more accurate calculation based on the real acidity and buffering capacity of each specific malt. This is especially helpful when your water profile and grain colors clash, such as brewing a pale grist with highly alkaline water (or vice versa).
Pick a malt (the filter box narrows the list), enter its weight and press Add or Enter. Your grain bill appears as a table with each malt's share of the grist; edit a weight right in the table, or remove a row with ×. The Grain bill tile takes on the beer's approximate color.
You'll see a warning (it never stops the solve) when acidulated malt is more than about 10% of the grist - it starts to taste sour and the pH prediction is less reliable - or when there's more than 0.5 kg of grain per litre of water, which usually means a mixed-up unit or a missing decimal point.
Your browser's own Print command (Ctrl/Cmd+P) produces a clean, single-column reference page with every result section, regardless of which tab happens to be open on screen. The interactive Target/Volume controls are left out, since they don't mean anything on paper.
What you're actually starting from before adding salts:
Mash pH dictates enzyme activity, extract efficiency, and tannin extraction. Getting it into the ideal range (typically 5.2 to 5.6) is one of the most important water adjustments a brewer can make. Residual Alkalinity (RA) is the single metric that predicts how a specific water profile will influence your mash pH.
How it works: Bicarbonate alkalinity drives pH upward, while calcium and magnesium pull it down. RA represents the net, unopposed push after factoring out the acidifying effect of calcium and magnesium: RA = alkalinity (as CaCO₃) minus (Ca/1.4 + Mg/1.7).
Two water sources with identical bicarbonate levels can push mash pH in opposite directions depending on their mineral content. RA accounts for this interaction.
Targeting RA by Beer Style
Because darker malts are naturally acidic and lower mash pH on their own, your target RA depends heavily on the style:
Note: The RA displayed is a calculated prediction based on your target profile, not a physical measurement. Always verify your actual mash pH with a reliable meter during the mash.
By default, the application provides a single combined Salt Additions list for the entire batch. However, brewing operations typically utilize two distinct water volumes: strike water for the mash and sparge water for rinsing the grain bed.
Enabling the Split into Mash / Sparge water preference divides your total salt additions into two separate lists without altering the overall water chemistry.
Why It Matters
How the Split Is Calculated
The split ratio is determined by your Mash Volume:
You can manually edit this value at any time to match your exact brewhouse equipment and mash thickness.
Check off which of the 9 supported salts you actually have. The solver only uses those - if a target can't be fully reached (e.g. no bicarbonate for a high-alkalinity target), that ion is left short rather than failing outright.
Don't have salts yet? The Shop page's "How much should I buy?" calculator estimates real amounts to have on hand, based on your style, how much water you treat per brew, and brewing frequency - add multiple styles under "My styles" to total across your whole mix.
Not sure what to buy first? See "Which Brewing Salts Actually Matter" below, or add your own styles under "My styles" on the Shop page for a personalized ranking.
Ranked using data through leave-one-out and forward-selection testing across all 273 BJCP and BA styles. Rankings are weighted by real-world brewing frequency (using recipe data from beer-analytics.com) rather than treating every style equally.
The Core Essentials
Highly Recommended
Situational Additions
Note: This ranking uses a popularity-weighted average. If you brew a unique mix of styles, you can customize your profile under "My styles" on the Shop page to see a ranking tailored precisely to your recipes.
Chalk (calcium carbonate) barely dissolves in plain water - only about 47 mg per liter in water open to the air. Stirred into still water or sprinkled into the mash, most of it just sits there as a cloudy powder, so the calcium and alkalinity the calculator counted on never fully show up.
Carbon dioxide changes that. CO₂ dissolved in the water turns chalk into calcium bicarbonate, which stays in solution - the same way groundwater picks up hardness from limestone. At 1 atmosphere of CO₂ roughly 0.65 g of chalk per liter can dissolve (about 1.4 g/L at 10 atmospheres), and cold water holds more than warm.
How to do it
Keep in mind
Sources: Calcium carbonate - solubility vs. CO₂ pressure (Wikipedia); Calcium bicarbonate (Wikipedia); How to dissolve chalk when homebrewing (Learning to Homebrew); Calcium carbonate in water - keg method (Aussie Home Brewer forum); Pre-boiling water treatment (Bru'n Water).
What it is, and why it matters. pH is how acidic your mash is. The enzymes that turn grain starch into sugar work best when the mash is mildly acidic. Land in the right zone and you get better conversion, cleaner flavor and clearer beer. Miss it and the beer can taste dull, harsh or thin.
Reading the Mash pH card
How to take a reading. About 10-15 minutes after mixing grain and water, pull a small sample and let it cool to room temperature before measuring. Hot samples read lower than they really are and wear out your meter's probe - and the range here assumes a room-temperature reading. See Measuring pH: room temperature vs mash temperature for why.
Choosing a dose. If the mash is above the range, the card suggests how much of your chosen acid (set in Preferences) to add:
Add the acid, stir well, wait a few minutes, then measure again. It's easier to add a little more than to take it back. Concentrated acids burn skin and eyes - wear gloves and glasses, and measure small doses with a syringe. See "Choosing an acid for mash pH correction" for which one to use.
Below the range? Less common, but it happens with very pale grain bills and soft water. Don't add acid - the card suggests slaked lime (calcium hydroxide) to raise the pH instead. Add it in small steps and re-measure after each.
Short version: cool your sample to room temperature (about 20-25 °C / 68-77 °F) before you measure. The pH ranges on this site, and most published mash pH targets, are room-temperature numbers.
The same mash reads differently hot and cold. A sample measured at mash temperature (around 65 °C / 149 °F) reads roughly 0.2-0.35 lower than the same sample cooled to room temperature. That isn't your meter being wrong: hot mash really is more acidic, because water and the mash's natural buffers (phosphates, proteins and amino acids from the malt) give up more hydrogen ions when hot. Brewing references put the shift at about 0.35 (Briggs, Malting and Brewing Science), 0.25 (John Palmer) or about 0.2 (The Electric Brewery). Because a mash is heavily buffered, the exact offset varies from mash to mash, so there's no exact conversion factor.
Know which temperature a target assumes. Textbook ranges are sometimes quoted at mash temperature. Briggs' 5.2-5.4 at mash temperature, for example, is about 5.45-5.65 measured cool. Mixing a hot reading with a room-temperature target (or the reverse) can make you add acid you don't need, or skip acid you do. Compare like with like.
Your meter's ATC doesn't fix this. Automatic temperature compensation (ATC) only corrects how the probe's electrical signal changes with temperature. It does not undo the real chemical change in the sample, so a hot sample still reads low with ATC switched on. Many hobby meters also only compensate up to about 50-60 °C (122-140 °F), below mash temperature.
Heat wears out probes. High temperatures deteriorate the glass bulb of an ordinary pH electrode and shorten its life. Probes built with high-temperature glass exist for measuring hot mash directly, but most homebrew meters don't have one.
Room temperature is also more repeatable. Readings taken at a consistent, cool temperature compare cleanly from batch to batch. A few degrees either way barely matters (cooling to 17 °C instead of 20 °C changes the offset by about 0.02).
How to do it:
Sources: Mr. Wizard, "Temperature impact on pH" and "Setting the record straight on mash pH", Brew Your Own (citing Briggs et al., Malting and Brewing Science, and John Palmer's literature table); The Electric Brewery, "Measuring pH"; Hanna Instruments, "Measuring the pH of mash in the brewing process".
When predicted mash pH is too high, this app recommends an acid addition. Three options under Preferences ("Mash pH acid") lower pH by the same amount for the same dose, but differ in flavor and form:
Lactic acid (default, cheapest and most available) is unnoticeable at typical doses, but can add a perceptible "tang" above roughly 400ppm lactate (Bru'n Water and Kai Troester's own thresholds agree on this figure) - this app shows a warning on the Mash pH card when a recommendation would cross it.
Phosphoric acid is generally flavor-neutral even above that threshold (per Brülosophy's own phosphoric vs. lactic exBEERiment), a reasonable choice whenever that warning appears. Trade-offs: weaker per mL at typical strength (enter your bottle's actual strength under Preferences), and can precipitate a small amount of calcium.
Acidulated malt (Sauermalz) is added to the grain bill instead of dosed as a liquid - the traditional Reinheitsgebot-compliant choice, and tasters couldn't reliably distinguish it from phosphoric acid in Brülosophy's own testing. Shows as a weight to add to your malts - remember to actually include it on brew day.
Switching this preference only changes which acid is suggested - not the target water chemistry, salts, or predicted pH itself. All three get you to the same predicted pH; the choice is purely about flavor and form.