Note: This result uses the Karvonen Formula, which accounts for your fitness level via resting heart rate.
How to Calculate Submaximal Heart Rate
Calculating your submaximal heart rate is a fundamental aspect of designing safe and effective cardiovascular training programs. Unlike maximum heart rate (MHR), which represents the absolute limit of your cardiovascular capacity, submaximal heart rate refers to the specific heart rate achieved during exercise that is below your maximum effort. This metric is crucial for determining aerobic capacity (VO2 max) without the physical stress of a maximal exertion test.
Why Use the Karvonen Formula?
While the standard "220 minus Age" formula gives a rough estimate of Maximum Heart Rate, it fails to account for individual fitness levels. A 30-year-old athlete and a 30-year-old sedentary individual will have the same estimated MHR, but their training zones should be vastly different.
To calculate submaximal heart rate accurately, this calculator uses the Karvonen Method, which incorporates your Resting Heart Rate (RHR). By doing so, it calculates the "Heart Rate Reserve" (HRR)—the usable range of heartbeats you have available for exercise.
The Calculation Logic
Understanding the math behind the calculator helps you better interpret your results. Here is the step-by-step process used:
Submaximal training typically occurs across several intensity zones. Knowing your target BPM (Beats Per Minute) helps you stay in the right zone for your goals:
50-60% (Warm Up / Recovery): Very light activity, good for beginners or active recovery.
70-80% (Aerobic Zone): Moderate to hard effort, significantly improves cardiovascular system and aerobic capacity.
80-90% (Anaerobic Threshold): Hard effort, sustainable for shorter periods, increases lactate threshold.
When to Measure Resting Heart Rate?
For the most accurate submaximal heart rate calculation, measure your resting heart rate (RHR) immediately after waking up in the morning, before getting out of bed or drinking coffee. An average adult RHR is between 60 and 100 bpm, while conditioned athletes may see values as low as 40 to 60 bpm.
function calculateHeartRate() {
// 1. Get Input Elements
var ageInput = document.getElementById("inputAge");
var rhrInput = document.getElementById("inputRHR");
var intensityInput = document.getElementById("inputIntensity");
var errorDiv = document.getElementById("errorMsg");
var resultsDiv = document.getElementById("resultsArea");
// 2. Parse Values
var age = parseFloat(ageInput.value);
var rhr = parseFloat(rhrInput.value);
var intensity = parseFloat(intensityInput.value);
// 3. Validation Logic
if (isNaN(age) || isNaN(rhr) || isNaN(intensity)) {
errorDiv.style.display = "block";
resultsDiv.style.display = "none";
return;
}
if (age <= 0 || rhr <= 0 || intensity 100) {
errorDiv.innerText = "Intensity cannot exceed 100%.";
errorDiv.style.display = "block";
resultsDiv.style.display = "none";
return;
}
// Hide error if validation passes
errorDiv.style.display = "none";
// 4. Calculation Logic (Karvonen Method)
// Step A: Calculate Maximum Heart Rate (Standard Formula)
// Formula: 220 – Age
var maxHR = 220 – age;
// Step B: Calculate Heart Rate Reserve (HRR)
// Formula: Max HR – Resting HR
var hrr = maxHR – rhr;
// Step C: Calculate Target Submaximal Heart Rate
// Formula: (HRR * Intensity%) + Resting HR
var intensityDecimal = intensity / 100;
var targetHR = (hrr * intensityDecimal) + rhr;
// 5. Update UI
document.getElementById("resMaxHR").innerText = Math.round(maxHR) + " bpm";
document.getElementById("resHRR").innerText = Math.round(hrr) + " bpm";
document.getElementById("resTargetHR").innerText = Math.round(targetHR) + " bpm";
// Show results
resultsDiv.style.display = "block";
}