Heart Rate Reserve (HRR) Is Calculated By: The Complete Guide
Understanding how your heart responds to exercise is critical for optimizing your fitness gains and ensuring cardiovascular safety. One of the most effective metrics for this is the Heart Rate Reserve (HRR).
What is Heart Rate Reserve (HRR)?
Heart Rate Reserve (HRR) is the difference between your measured or predicted maximum heart rate and your resting heart rate. It represents the actual "working range" of your heart—the cushion of heartbeats you have available for physical activity.
The Formula:
HRR = Max Heart Rate (MHR) − Resting Heart Rate (RHR)
How to Calculate Your HRR Step-by-Step
Determine your Maximum Heart Rate (MHR): The most common way to estimate this is 220 minus your age. For a 40-year-old, the estimate is 180 BPM.
Measure your Resting Heart Rate (RHR): This is best done in the morning, immediately after waking up, before you get out of bed. Measure your pulse for 60 seconds.
Subtract RHR from MHR: If your MHR is 180 and your RHR is 60, your HRR is 120 BPM.
Why Use HRR Instead of Just Max HR?
The standard "percentage of Max HR" method often ignores individual fitness levels. A person with a very low resting heart rate (highly fit) has a larger HRR than someone with a high resting heart rate, even if they are the same age. Using HRR via the Karvonen Formula allows for much more personalized training zones.
Example Calculation using the Karvonen Formula
If you want to train at 70% intensity and your HRR is 120 BPM with a Resting HR of 60:
(HRR × 0.70) + Resting HR
(120 × 0.70) + 60 = 84 + 60 = 144 BPM
Tips for Accuracy
Use a Monitor: While the 220-age formula is a good starting point, it can be off by up to 10-12 beats. A chest strap heart rate monitor during a maximal effort test (under supervision) provides the most accurate MHR.
Consistent RHR: Check your resting heart rate over 3-5 consecutive mornings and take the average for the most stable HRR calculation.
Hydration and Stress: Keep in mind that dehydration, caffeine, and stress can temporarily inflate your resting heart rate, which will alter your HRR result.
function calculateHRR() {
var age = document.getElementById("hrr_age").value;
var rhr = document.getElementById("hrr_resting").value;
var manualMax = document.getElementById("hrr_max_override").value;
var ageVal = parseFloat(age);
var rhrVal = parseFloat(rhr);
var manualMaxVal = parseFloat(manualMax);
// Validation
if (isNaN(rhrVal) || rhrVal 0) {
maxHR = manualMaxVal;
} else if (!isNaN(ageVal) && ageVal > 0) {
maxHR = 220 – ageVal;
} else {
alert("Please enter either your Age or a known Maximum Heart Rate.");
return;
}
if (maxHR <= rhrVal) {
alert("Maximum Heart Rate must be higher than Resting Heart Rate.");
return;
}
var hrr = maxHR – rhrVal;
// Calculate Karvonen Zones
// Moderate (50-70%)
var modLow = Math.round((hrr * 0.5) + rhrVal);
var modHigh = Math.round((hrr * 0.7) + rhrVal);
// Vigorous (70-85%)
var vigLow = Math.round((hrr * 0.7) + rhrVal);
var vigHigh = Math.round((hrr * 0.85) + rhrVal);
// Max (85-100%)
var maxLow = Math.round((hrr * 0.85) + rhrVal);
var maxHigh = Math.round(maxHR);
// Update UI
document.getElementById("res_max_hr").innerHTML = Math.round(maxHR);
document.getElementById("res_hrr").innerHTML = Math.round(hrr);
document.getElementById("zone_moderate").innerHTML = modLow + " – " + modHigh + " BPM";
document.getElementById("zone_vigorous").innerHTML = vigLow + " – " + vigHigh + " BPM";
document.getElementById("zone_max").innerHTML = maxLow + " – " + maxHigh + " BPM";
document.getElementById("hrr_results").style.display = "block";
}