Enter your resting heart rate for more accurate "Karvonen" training zones. If left blank, standard percentages are used.
Fox Formula (220 – Age) – Standard
Tanaka Formula (208 – 0.7 × Age) – More precise
Gellish Formula (207 – 0.7 × Age) – Alternative
Estimated Maximum Heart Rate (MHR)0 BPM
Target Heart Rate Zones
Zone
Intensity
Heart Rate Range (BPM)
Benefit
How to Calculate Your Maximum Heart Rate When Exercising
Calculating your maximum heart rate (MHR) is the cornerstone of effective cardiovascular training. By identifying your MHR, you can establish specific heart rate zones to target fat loss, improve aerobic capacity, or push your anaerobic threshold. This guide explains the mathematics behind the calculator above and how to interpret your results.
The Mathematics of Heart Rate Calculation
While the most accurate way to determine maximum heart rate is a clinical cardiac stress test, several mathematical formulas provide reliable estimates for the general population.
1. The Fox Formula (Standard)
This is the most widely used and simplest formula found in gym charts and cardio machines.
Formula:220 - Age = MHR
Example: For a 40-year-old, the MHR is 220 – 40 = 180 BPM.
2. The Tanaka Formula
Research suggests the Fox formula may underestimate MHR for older adults and overestimate it for younger individuals. The Tanaka formula is considered more accurate across different age groups.
Formula:208 - (0.7 × Age) = MHR
Example: For a 40-year-old: 208 – (0.7 × 40) = 208 – 28 = 180 BPM.
Understanding Training Zones
Once your Maximum Heart Rate is established, you can calculate training zones. There are two primary methods to do this:
Method A: Percentage of Max Heart Rate
This is the simplest method. You simply multiply your MHR by the desired percentage (e.g., 70%).
Method B: The Karvonen Formula (Heart Rate Reserve)
This method is more accurate for individuals with a known Resting Heart Rate (RHR) because it accounts for your fitness level. It uses your Heart Rate Reserve (HRR).
Example: If MHR is 180 and RHR is 60. To train at 70% intensity:
HRR = 120.
Target = (120 × 0.70) + 60 = 84 + 60 = 144 BPM.
Heart Rate Zone Breakdown
Zone 1 (50-60%): Very Light. Warm-up, recovery, and overall health improvement.
Zone 2 (60-70%): Light. The "Fat Burning" zone. Builds basic endurance and metabolic efficiency.
Zone 3 (70-80%): Moderate. Improves aerobic fitness and blood circulation in skeletal muscles.
Zone 4 (80-90%): Hard. Increases maximum performance capacity and lactate threshold.
Zone 5 (90-100%): Maximum. Develops maximum speed and power. Sustainable only for short bursts.
Medical Disclaimer: This calculator and article are for informational purposes only. The results are estimates based on population averages. Always consult with a physician before starting a new exercise program, especially if you have a history of heart conditions or high blood pressure.
function calculateHeartRate() {
// 1. Get Input Values
var ageInput = document.getElementById('inputAge').value;
var rhrInput = document.getElementById('inputRHR').value;
var formula = document.getElementById('formulaType').value;
var resultArea = document.getElementById('result-area');
var displayMHR = document.getElementById('displayMHR');
var zonesBody = document.getElementById('zonesBody');
var methodText = document.getElementById('methodUsedText');
// 2. Validation
var age = parseFloat(ageInput);
if (isNaN(age) || age 110) {
alert("Please enter a valid age between 10 and 110.");
return;
}
var rhr = parseFloat(rhrInput);
var useKarvonen = !isNaN(rhr) && rhr > 30 && rhr < 150;
// 3. Calculate Maximum Heart Rate (MHR)
var mhr = 0;
if (formula === 'tanaka') {
mhr = 208 – (0.7 * age);
} else if (formula === 'gellish') {
mhr = 207 – (0.7 * age);
} else {
// default fox
mhr = 220 – age;
}
mhr = Math.round(mhr);
displayMHR.innerHTML = mhr + " BPM";
// 4. Calculate Zones
// Zones configuration: [Min%, Max%, Name, Color, Description]
var zones = [
{min: 0.90, max: 1.00, name: "Zone 5 (Maximal)", color: "#e74c3c", desc: "Sprinting, Peak Performance"},
{min: 0.80, max: 0.90, name: "Zone 4 (Hard)", color: "#e67e22", desc: "Anaerobic Capacity, High Speed"},
{min: 0.70, max: 0.80, name: "Zone 3 (Moderate)", color: "#f1c40f", desc: "Aerobic Fitness, Endurance"},
{min: 0.60, max: 0.70, name: "Zone 2 (Light)", color: "#2ecc71", desc: "Fat Burning, Basic Stamina"},
{min: 0.50, max: 0.60, name: "Zone 1 (Very Light)", color: "#3498db", desc: "Warm Up, Recovery"}
];
var tableHtml = "";
if (useKarvonen) {
methodText.innerText = "Calculation Method: Karvonen Formula (based on Heart Rate Reserve).";
var hrr = mhr – rhr;
// Loop through zones (Standard loop instead of map for older browser compatibility)
for (var i = 0; i mhr) maxBpm = mhr;
tableHtml += "
";
tableHtml += "
" + z.name + "
";
tableHtml += "
" + (z.min * 100) + "% – " + (z.max * 100) + "%
";
tableHtml += "
" + minBpm + " – " + maxBpm + " BPM
";
tableHtml += "
" + z.desc + "
";
tableHtml += "
";
}
} else {
methodText.innerText = "Calculation Method: Standard Percentage of Maximum Heart Rate.";
for (var i = 0; i < zones.length; i++) {
var z = zones[i];
var minBpm = Math.round(mhr * z.min);
var maxBpm = Math.round(mhr * z.max);
tableHtml += "