Standard Formula (220 – Age)
Tanaka Formula (208 – 0.7 × Age)
Estimated Max Heart Rate
0 BPM
Standard Formula
Target Heart Rate
0 BPM
at 75% Intensity
Your Training Zones
Zone
Intensity
Heart Rate Range (BPM)
Benefit
Understanding Your Maximum Heart Rate
Calculating your Maximum Heart Rate (MHR) is the cornerstone of effective cardiovascular training. Your MHR represents the fastest rate your heart can beat for one minute under maximum exertion. While the most accurate way to determine this is a clinical stress test, mathematical formulas provide a reliable baseline for the general population to establish training zones.
Formulas: Standard vs. Tanaka
This calculator offers two primary methods for estimating your ceiling:
Standard (Fox) Formula: Calculated as 220 - Age. This is the most widely used formula in fitness centers, though it can sometimes overestimate MHR for younger people and underestimate it for older adults.
Tanaka Formula: Calculated as 208 - (0.7 × Age). Developed in 2001, this formula is generally considered more accurate across a wider range of ages.
The Importance of Resting Heart Rate (Karvonen Method)
If you input your Resting Heart Rate (RHR) into the calculator above, the tool automatically upgrades to the Karvonen Method. Why does this matter?
The standard "percentage of max" calculation assumes everyone starts from zero, which isn't biologically accurate. The Karvonen formula uses your Heart Rate Reserve (HRR)—the difference between your Max HR and Resting HR.
This approach tailors the intensity zones specifically to your fitness level. A lower resting heart rate (indicating better fitness) results in a wider heart rate reserve and slightly different training targets compared to the standard method.
Training Zones Explained
Training at specific percentages of your capacity yields different physiological adaptations:
Zone 1 (50-60%): Warm Up / Recovery. Aids recovery and prepares the musculoskeletal system for stress. Ideally used for warm-ups, cool-downs, and active recovery days.
Zone 2 (60-70%): Fat Burning / Base. The sweet spot for long-duration endurance. It improves the body's ability to utilize fat as a fuel source and builds aerobic capacity.
Zone 3 (70-80%): Aerobic. Increases blood circulation and efficiency of the heart. This is typically a moderate pace where conversation becomes difficult but not impossible.
Zone 4 (80-90%): Anaerobic Threshold. Improves speed endurance and lactate tolerance. You start breathing hard, and muscles may begin to feel the burn.
Zone 5 (90-100%): VO2 Max. Maximum effort for very short bursts. Used for interval training to improve speed and neuromuscular coordination.
How to Use This Calculator
Enter your Age: This is required to estimate your maximum ceiling.
Enter Resting Heart Rate (Optional): Measure your pulse first thing in the morning before getting out of bed for the most accurate number. If left blank, the calculator uses the simple percentage method.
Select Formula: Choose "Standard" for general use or "Tanaka" for a modernized estimate.
Set Target %: If you have a specific workout goal (e.g., "I want to train at 80% effort"), enter it here to see your exact target beats per minute (BPM).
function calculateHeartRate() {
// 1. Get Inputs
var ageInput = document.getElementById("hrAge");
var rhrInput = document.getElementById("hrResting");
var formulaSelect = document.getElementById("hrFormula");
var percentInput = document.getElementById("hrTargetPercent");
var age = parseFloat(ageInput.value);
var rhr = parseFloat(rhrInput.value);
var formula = formulaSelect.value;
var percent = parseFloat(percentInput.value);
// 2. Validation
if (isNaN(age) || age < 1) {
alert("Please enter a valid age.");
return;
}
if (isNaN(percent) || percent 100) {
alert("Please enter a valid target percentage (1-100).");
return;
}
// 3. Calculate MHR
var mhr = 0;
if (formula === "tanaka") {
// Tanaka: 208 – (0.7 * age)
mhr = 208 – (0.7 * age);
} else {
// Standard: 220 – age
mhr = 220 – age;
}
mhr = Math.round(mhr);
// 4. Determine Calculation Method (Standard vs Karvonen)
// If RHR is provided and valid, use Karvonen (Heart Rate Reserve)
var useKarvonen = (!isNaN(rhr) && rhr > 0 && rhr < mhr);
// 5. Calculate Specific Target
var targetHR = 0;
if (useKarvonen) {
// Karvonen: ((MHR – RHR) * %) + RHR
var hrr = mhr – rhr;
targetHR = (hrr * (percent / 100)) + rhr;
} else {
// Standard %: MHR * %
targetHR = mhr * (percent / 100);
}
targetHR = Math.round(targetHR);
// 6. Generate Zones Data
// Zones are 1:50-60, 2:60-70, 3:70-80, 4:80-90, 5:90-100
var zones = [
{ id: 1, min: 50, max: 60, benefit: "Warm Up / Recovery" },
{ id: 2, min: 60, max: 70, benefit: "Fat Burn / Endurance" },
{ id: 3, min: 70, max: 80, benefit: "Aerobic Fitness" },
{ id: 4, min: 80, max: 90, benefit: "Anaerobic Threshold" },
{ id: 5, min: 90, max: 100, benefit: "Maximum Performance" }
];
var tableHtml = "";
for (var i = 0; i < zones.length; i++) {
var z = zones[i];
var minBpm, maxBpm;
if (useKarvonen) {
var hrr = mhr – rhr;
minBpm = Math.round((hrr * (z.min / 100)) + rhr);
maxBpm = Math.round((hrr * (z.max / 100)) + rhr);
} else {
minBpm = Math.round(mhr * (z.min / 100));
maxBpm = Math.round(mhr * (z.max / 100));
}
tableHtml += "