Understanding Max Heart Rate and Resting Heart Rate
While the standard formula for Maximum Heart Rate (MHR) is simply 220 minus your age, this method ignores individual fitness levels. By incorporating your Resting Heart Rate (RHR) into the equation, we can calculate your Heart Rate Reserve (HRR) using the Karvonen formula. This provides much more accurate training zones tailored to your specific cardiovascular efficiency.
Your resting heart rate is a strong indicator of your aerobic fitness. A lower RHR typically indicates a more efficient heart and better cardiovascular health. The standard "220 – Age" formula would give the same training zones to a sedentary person and an elite athlete of the same age. However, the athlete likely has a much lower RHR, meaning their "working range" (Heart Rate Reserve) is larger.
Using a calculator that accounts for RHR ensures that your training zones are not too easy or too hard, but scaled correctly to your physiology.
How to Measure Resting Heart Rate
To get the most accurate result from this calculator, measure your RHR correctly:
When: First thing in the morning, before getting out of bed.
How: Find your pulse on your wrist (radial artery) or neck (carotid artery).
Count: Count the beats for 60 seconds, or for 15 seconds and multiply by 4.
Average: Ideally, take the average over 3-5 days.
Heart Rate Training Zones Explained
This calculator breaks down your training into five specific zones based on the Karvonen method:
Zone 1: Very Light (50-60%)
Used for warm-ups, cool-downs, and active recovery. This zone improves overall health and helps recovery from harder training sessions.
Zone 2: Light (60-70%)
Often called the "Fat Burning Zone". This is the intensity for long, slow distance training. It builds basic endurance and teaches the body to utilize fat as fuel.
Zone 3: Moderate (70-80%)
The aerobic zone. training here improves blood circulation and skeletal muscle efficiency. This is typically a steady pace where conversation starts to become difficult.
Zone 4: Hard (80-90%)
The anaerobic threshold zone. You are training your body to tolerate higher levels of lactate. This intensity is sustainable only for shorter periods and significantly improves speed and power.
Zone 5: Maximum (90-100%)
Peak effort. This zone is for short bursts of speed or interval training. It puts maximum strain on the cardiovascular system and should be used sparingly by conditioned athletes.
Which Formula Should You Use?
Standard (220 – Age): The most common and simplest, but has a high margin of error (up to 10-12 bpm).
Tanaka (208 – 0.7 × Age): Often considered more accurate for healthy adults over age 40.
Gellish (207 – 0.7 × Age): Another linear regression formula that provides similar accuracy to Tanaka but is sometimes preferred in clinical settings.
function calculateHeartZones() {
var ageInput = document.getElementById('calcAge');
var rhrInput = document.getElementById('calcRestingHR');
var formulaSelect = document.getElementById('calcFormula');
var resultsDiv = document.getElementById('resultsDisplay');
var age = parseFloat(ageInput.value);
var rhr = parseFloat(rhrInput.value);
var formula = formulaSelect.value;
// Validation
if (isNaN(age) || age 120) {
alert("Please enter a valid age between 1 and 120.");
return;
}
if (isNaN(rhr) || rhr 150) {
alert("Please enter a valid resting heart rate (typically between 30 and 150 bpm).");
return;
}
// Calculate Max Heart Rate (MHR)
var mhr = 0;
if (formula === 'tanaka') {
mhr = 208 – (0.7 * age);
} else if (formula === 'gellish') {
mhr = 207 – (0.7 * age);
} else {
mhr = 220 – age;
}
mhr = Math.round(mhr);
// Calculate Heart Rate Reserve (HRR)
var hrr = mhr – rhr;
// Display basic stats
document.getElementById('resMHR').innerText = mhr + " bpm";
document.getElementById('resHRR').innerText = hrr + " bpm";
// Calculate Zones (Karvonen)
// Formula: (HRR * intensity) + RHR
function getZoneLimit(percentage) {
return Math.round((hrr * percentage) + rhr);
}
var zones = [
{
name: "Zone 1",
desc: "Recovery / Warm Up",
minPct: 0.50,
maxPct: 0.60,
class: "zone-1"
},
{
name: "Zone 2",
desc: "Fat Burning / Endurance",
minPct: 0.60,
maxPct: 0.70,
class: "zone-2"
},
{
name: "Zone 3",
desc: "Aerobic Fitness",
minPct: 0.70,
maxPct: 0.80,
class: "zone-3"
},
{
name: "Zone 4",
desc: "Anaerobic Threshold",
minPct: 0.80,
maxPct: 0.90,
class: "zone-4"
},
{
name: "Zone 5",
desc: "Maximum Effort",
minPct: 0.90,
maxPct: 1.00,
class: "zone-5″
}
];
var tableHtml = ";
for (var i = 0; i < zones.length; i++) {
var z = zones[i];
var minBpm = getZoneLimit(z.minPct);
var maxBpm = getZoneLimit(z.maxPct);
// Adjust max of zone 5 to exact MHR if needed, though formula usually matches
if (i === 4) maxBpm = mhr;
tableHtml += '