Measure immediately after waking up for best accuracy.
If you know your actual Max HR from a lab test, enter it here.
–
Max HR
–
Resting HR
–
HR Reserve
Zone
Intensity (%)
Heart Rate Range (BPM)
Training Benefit
function calculateZones() {
// 1. Get Input Values
var ageInput = document.getElementById('runnerAge').value;
var rhrInput = document.getElementById('restingHeartRate').value;
var maxHrInput = document.getElementById('maxHeartRate').value;
// 2. Validate essential inputs
if (!ageInput && !maxHrInput) {
alert("Please enter your Age or a known Max Heart Rate.");
return;
}
var age = parseFloat(ageInput);
var rhr = parseFloat(rhrInput);
// 3. Calculate Max HR (Formula: 220 – Age if not provided)
var maxHR;
if (maxHrInput) {
maxHR = parseFloat(maxHrInput);
} else {
maxHR = 220 – age;
}
// 4. Handle Resting Heart Rate logic
// If RHR is provided, we use Karvonen Formula: Target = ((Max – Rest) * %) + Rest
// If RHR is NOT provided, we use Standard Formula: Target = Max * %
var useKarvonen = false;
var hrr = 0; // Heart Rate Reserve
if (rhrInput && !isNaN(rhr)) {
useKarvonen = true;
hrr = maxHR – rhr;
} else {
// Treat RHR as 0 for display consistency, but logic changes
rhr = 0;
hrr = maxHR; // effectively just max for calculation purposes if formula is adjusted
}
// Helper function to calculate BPM based on percentage
function getBPM(percent) {
if (useKarvonen) {
// Karvonen: (HRR * percent) + RHR
return Math.round((hrr * percent) + rhr);
} else {
// Standard: MaxHR * percent
return Math.round(maxHR * percent);
}
}
// 5. Calculate Zone Bounds
// Zone 1: 50-60%
var z1_min = getBPM(0.50);
var z1_max = getBPM(0.60);
// Zone 2: 60-70%
var z2_min = getBPM(0.60);
var z2_max = getBPM(0.70);
// Zone 3: 70-80%
var z3_min = getBPM(0.70);
var z3_max = getBPM(0.80);
// Zone 4: 80-90%
var z4_min = getBPM(0.80);
var z4_max = getBPM(0.90);
// Zone 5: 90-100%
var z5_min = getBPM(0.90);
var z5_max = getBPM(1.00); // Should equal maxHR
// 6. Update Display
document.getElementById('disp-max-hr').innerText = maxHR + " bpm";
document.getElementById('disp-rhr').innerText = (useKarvonen ? rhr : "N/A") + " bpm";
document.getElementById('disp-hrr').innerText = (useKarvonen ? hrr : "N/A") + " bpm";
var tableHtml = ";
// Zone 1
tableHtml += '
Training by heart rate is one of the most effective ways for runners to improve endurance, speed, and recovery without overtraining. By dividing your heart rate intensities into five specific "zones," you can target different physiological systems.
This calculator uses two primary methods depending on the data you provide:
Karvonen Method (Recommended): Used if you enter your Resting Heart Rate. It accounts for your Heart Rate Reserve (HRR), giving a more personalized training range.
Maximum Heart Rate Method: Used if Resting Heart Rate is omitted. It calculates zones purely as a percentage of your Max HR.
Understanding the 5 Running Zones
Zone 1: Very Light (50-60%)
This is your recovery zone. It should feel effortless. You use this zone for warming up, cooling down, or active recovery runs between hard workout days.
Zone 2: Aerobic / Endurance (60-70%)
Often called the "fat-burning zone," this is where the majority of your mileage should occur (approx. 80% of training). Running in Zone 2 builds mitochondrial density and capillary networks, essential for long-distance running. You should be able to hold a full conversation comfortably.
Zone 3: Tempo / Aerobic Power (70-80%)
This is the "grey zone." It is harder than easy running but not hard enough to be a threshold workout. While useful for marathon pacing, spending too much time here can lead to fatigue without the specific benefits of high-intensity intervals.
Zone 4: Lactate Threshold (80-90%)
This represents a "comfortably hard" effort. You are running just below the point where lactate accumulates in the blood faster than your body can clear it. Training here improves your ability to sustain speed over time.
Zone 5: VO2 Max / Anaerobic (90-100%)
This is near-maximum effort, sustainable for only short bursts (sprints or steep hill repeats). Training in Zone 5 improves your top-end speed and neuromuscular power.
Formulas Used
Maximum Heart Rate (MHR): 220 - Age (Standard estimate)