In all-grain brewing, the "strike water" is the heated water you mix with your crushed grains to start the mashing process. Because the grain is typically at room temperature, it will absorb heat from the water as soon as they are mixed. To achieve your target mash temperature (the temperature where enzymes convert starch to sugar), your strike water must be significantly hotter than the target mash temperature.
The Thermodynamics of the Mash
The calculation is based on the thermal mass of the water versus the thermal mass of the grain. Grain has a specific heat capacity roughly 0.2 times that of water (in imperial units) or 0.41 (in metric). The formula used by this calculator is:
Example Calculation (Imperial):
If you want to mash at 152°F, your grain is 70°F, and you are using a ratio of 1.5 quarts per pound:
Strike Temp = (0.2 / 1.5) * (152 – 70) + 152
Strike Temp = (0.133) * (82) + 152 = 162.9°F.
Pro Tips for Accurate Mashing
Pre-heat your Mash Tun: If you use a cold cooler or stainless steel vessel, it will steal heat from the mash. Add a gallon of boiling water to the tun for 5 minutes and dump it before adding your strike water.
The "Under-mashing" Rule: Most brewers find it easier to cool a mash that is too hot (by stirring or adding a splash of cold water) than to heat a mash that is too cold. Aiming 1-2 degrees high is a common safety margin.
Grain Temp Matters: If you store your grain in a cold garage or basement, make sure to measure its actual temperature rather than assuming a standard 70°F (21°C).
function updateBrewUnits() {
var units = document.getElementById('brew_units').value;
var labelTarget = document.getElementById('label_target_temp');
var labelGrain = document.getElementById('label_grain_temp');
var labelRatio = document.getElementById('label_ratio');
if (units === 'metric') {
labelTarget.innerHTML = 'Target Mash Temperature (°C)';
labelGrain.innerHTML = 'Current Grain Temperature (°C)';
labelRatio.innerHTML = 'Water-to-Grain Ratio (L/kg)';
document.getElementById('target_temp').placeholder = 'e.g. 66';
document.getElementById('grain_temp').placeholder = 'e.g. 21';
document.getElementById('mash_ratio').placeholder = 'e.g. 3.0';
} else {
labelTarget.innerHTML = 'Target Mash Temperature (°F)';
labelGrain.innerHTML = 'Current Grain Temperature (°F)';
labelRatio.innerHTML = 'Water-to-Grain Ratio (qt/lb)';
document.getElementById('target_temp').placeholder = 'e.g. 152';
document.getElementById('grain_temp').placeholder = 'e.g. 70';
document.getElementById('mash_ratio').placeholder = 'e.g. 1.5';
}
document.getElementById('strike-result-box').style.display = 'none';
}
function calculateStrikeTemp() {
var units = document.getElementById('brew_units').value;
var mashTemp = parseFloat(document.getElementById('target_temp').value);
var grainTemp = parseFloat(document.getElementById('grain_temp').value);
var ratio = parseFloat(document.getElementById('mash_ratio').value);
var resultDisplay = document.getElementById('strike-result-box');
var resultText = document.getElementById('strike_val');
if (isNaN(mashTemp) || isNaN(grainTemp) || isNaN(ratio) || ratio <= 0) {
alert("Please enter valid positive numbers for all fields.");
return;
}
var constant = (units === 'metric') ? 0.41 : 0.2;
var strikeTemp = (constant / ratio) * (mashTemp – grainTemp) + mashTemp;
var unitSymbol = (units === 'metric') ? '°C' : '°F';
resultText.innerHTML = strikeTemp.toFixed(1) + " " + unitSymbol;
resultDisplay.style.display = 'block';
}