Determine your maximum heart rate (HRmax) and training zones for effective workouts.
Please enter a valid age between 5 and 110.
Male
Female
Select for gender-specific formulas like Gulati.
Fox Formula (Standard: 220 – Age)
Tanaka Formula (208 – 0.7 × Age)
Gellish Formula (207 – 0.7 × Age)
Gulati Formula (Women specific)
Your Predicted Max Heart Rate
0 BPM
Your Target Heart Rate Training Zones
Zone
Intensity
Range (BPM)
Benefit
Understanding Your Maximum Heart Rate
Your Maximum Heart Rate (HRmax) is the highest number of beats per minute your heart can pump under maximum stress. It is a crucial metric for athletes and fitness enthusiasts to establish personalized training zones. Knowing your HRmax allows you to train at the right intensity to achieve specific goals, whether it's fat loss, aerobic endurance, or peak performance.
Calculation Formulas Explained
While the most direct way to measure HRmax is a cardiac stress test, several formulas provide a close prediction:
Fox Formula (220 – Age): The most common and simplest formula. It is widely used but can have a margin of error of +/- 10-12 beats per minute, especially for older adults.
Tanaka Formula (208 – 0.7 × Age): Developed in 2001, this formula is often considered more accurate than the Fox formula for healthy adults of varying ages.
Gellish Formula (207 – 0.7 × Age): Very similar to Tanaka, offering a slightly different linear regression fit to population data.
Gulati Formula (206 – 0.88 × Age): Specifically developed for women, as research showed the traditional "220 – Age" formula often overestimated max heart rate in females.
Heart Rate Training Zones
Training in specific heart rate zones targets different physiological energy systems:
Zone 1 (Very Light, 50-60%): Used for warm-ups, cool-downs, and active recovery. Helps with blood flow and recovery.
Zone 2 (Light, 60-70%): The "Fat Burning" zone. Great for building general endurance and burning fat as a primary fuel source.
Zone 3 (Moderate, 70-80%): Improves aerobic capacity and blood circulation. This is a sustainable pace for long runs or rides.
Zone 4 (Hard, 80-90%): Increases anaerobic threshold. Training here helps you sustain higher speeds for longer periods but produces lactic acid.
Zone 5 (Maximum, 90-100%): Effort meant for short bursts. Develops peak speed and neuromuscular coordination.
Note: These calculators provide estimates. Please consult a physician before starting any rigorous exercise program, especially if you have existing health conditions.
function calculateHeartRate() {
// 1. Get Inputs
var ageInput = document.getElementById("input-age");
var sexSelect = document.getElementById("input-sex");
var formulaSelect = document.getElementById("input-formula");
var resultContainer = document.getElementById("result-container");
var ageError = document.getElementById("age-error");
var age = parseFloat(ageInput.value);
var sex = sexSelect.value;
var formula = formulaSelect.value;
// 2. Validation
if (isNaN(age) || age 120) {
ageError.style.display = "block";
resultContainer.classList.remove("visible");
return;
} else {
ageError.style.display = "none";
}
// 3. Logic Calculation based on Formula
var maxHR = 0;
if (formula === "fox") {
// Fox: 220 – Age
maxHR = 220 – age;
} else if (formula === "tanaka") {
// Tanaka: 208 – (0.7 * Age)
maxHR = 208 – (0.7 * age);
} else if (formula === "gellish") {
// Gellish: 207 – (0.7 * Age)
maxHR = 207 – (0.7 * age);
} else if (formula === "gulati") {
// Gulati: 206 – (0.88 * Age) (Intended for women)
// If a male selects Gulati, we will still run the formula but normally it's for women.
// Some calculators fallback to Fox for men here, but we will respect the explicit formula choice
// usually. However, to be helpful, if Male is selected but Formula is Gulati,
// the user likely wants the "Female specific" logic applied to their inputs.
// If strict adherence to literature: Gulati is strictly for women.
// We will just calculate the formula as stated: 206 – 0.88 * Age.
maxHR = 206 – (0.88 * age);
}
// Round the result
maxHR = Math.round(maxHR);
// 4. Update Main Result
document.getElementById("result-hrmax").innerHTML = maxHR + ' BPM';
// 5. Calculate Zones
var zones = [
{ id: 1, minPct: 0.50, maxPct: 0.60, name: "Very Light", badge: "zone-1", benefit: "Warm up / Recovery" },
{ id: 2, minPct: 0.60, maxPct: 0.70, name: "Light", badge: "zone-2", benefit: "Fat Burn / Endurance" },
{ id: 3, minPct: 0.70, maxPct: 0.80, name: "Moderate", badge: "zone-3", benefit: "Aerobic Capacity" },
{ id: 4, minPct: 0.80, maxPct: 0.90, name: "Hard", badge: "zone-4", benefit: "Anaerobic Threshold" },
{ id: 5, minPct: 0.90, maxPct: 1.00, name: "Maximum", badge: "zone-5", benefit: "Performance / Speed" }
];
var tableBody = document.getElementById("zones-body");
tableBody.innerHTML = ""; // Clear previous
for (var i = 0; i < zones.length; i++) {
var z = zones[i];
var minBPM = Math.round(maxHR * z.minPct);
var maxBPM = Math.round(maxHR * z.maxPct);
var row = document.createElement("tr");
var cellZone = document.createElement("td");
cellZone.innerHTML = 'Zone ' + z.id + '';
var cellIntensity = document.createElement("td");
cellIntensity.innerText = (z.minPct * 100) + "% – " + (z.maxPct * 100) + "%";
var cellRange = document.createElement("td");
cellRange.innerText = minBPM + " – " + maxBPM + " bpm";
var cellBenefit = document.createElement("td");
cellBenefit.innerText = z.benefit;
row.appendChild(cellZone);
row.appendChild(cellIntensity);
row.appendChild(cellRange);
row.appendChild(cellBenefit);
tableBody.appendChild(row);
}
// 6. Show Results
resultContainer.classList.add("visible");
}