Calculate your training zones using Standard or Karvonen methods.
Enter to use Karvonen Formula
Fox Formula (220 – Age)
Tanaka Formula (208 – 0.7 × Age)
Gulati (Women: 206 – 0.88 × Age)
Estimated Maximum Heart Rate (MHR)
0 BPM
Method: Standard Percentage
Zone
Intensity
Heart Rate Range (BPM)
Understanding Your Heart Rate Zones
Training based on heart rate zones is one of the most effective ways to improve cardiovascular fitness, burn fat, and increase endurance. Instead of guessing your effort level, heart rate monitoring provides objective data on your workout intensity. This calculator helps you determine your maximum heart rate (MHR) and breaks it down into five specific training zones.
Pro Tip: If you input your Resting Heart Rate, this calculator automatically switches to the Karvonen Method. This method is generally considered more accurate for individuals with higher or lower than average fitness levels because it takes your heart rate reserve (HRR) into account.
The Five Training Zones Explained
Zone 1 (Very Light): 50-60%. Used for warm-ups, cool-downs, and active recovery. You should be able to hold a conversation effortlessly.
Zone 2 (Light): 60-70%. The "Fat Burning" zone. Great for building general endurance and burning calories primarily from fat stores.
Zone 3 (Moderate): 70-80%. The aerobic zone. Improves blood circulation and skeletal muscle efficiency. You will breathe harder but can still speak in short sentences.
Zone 4 (Hard): 80-90%. The anaerobic threshold. This improves high-speed endurance and lactic acid tolerance. Breathing is heavy; conversation is difficult.
Zone 5 (Maximum): 90-100%. Maximum effort for short bursts. Used for interval training to improve speed and neuromuscular power. Sustainable for only short periods.
Formulas Used
This tool supports three major formulas for estimating Maximum Heart Rate (MHR):
Fox Formula:220 - Age. The most common standard, though it can be slightly inaccurate for older or very fit individuals.
Tanaka Formula:208 - (0.7 × Age). Often cited as more accurate for a wider range of age groups.
Gulati Formula:206 - (0.88 × Age). Specifically researched for women to provide a more accurate MHR estimate.
function calculateZones() {
// Get Inputs
var ageInput = document.getElementById("hr-age");
var restingInput = document.getElementById("hr-resting");
var formulaSelect = document.getElementById("hr-formula");
var resultContainer = document.getElementById("hr-result-container");
var mhrDisplay = document.getElementById("mhr-value");
var methodDisplay = document.getElementById("method-used");
var tableBody = document.getElementById("zone-table-body");
var age = parseFloat(ageInput.value);
var restingHR = parseFloat(restingInput.value);
var formula = formulaSelect.value;
// Validation
if (isNaN(age) || age 120) {
alert("Please enter a valid age between 10 and 120.");
return;
}
// Calculate MHR
var mhr = 0;
if (formula === "tanaka") {
mhr = 208 – (0.7 * age);
} else if (formula === "gulati") {
mhr = 206 – (0.88 * age);
} else {
// Default Fox
mhr = 220 – age;
}
mhr = Math.round(mhr);
// Calculate Zones
// Zones percentages: 50-60, 60-70, 70-80, 80-90, 90-100
var zones = [];
var methodText = "Calculation Method: Standard Percentage of MHR";
var isKarvonen = false;
if (!isNaN(restingHR) && restingHR > 0 && restingHR < mhr) {
// Use Karvonen Method
// Target HR = ((MHR – Resting) * %) + Resting
isKarvonen = true;
methodText = "Calculation Method: Karvonen Formula (Heart Rate Reserve)";
var hrr = mhr – restingHR;
zones = [
{ name: "Zone 1", desc: "Very Light / Recovery", minPct: 0.50, maxPct: 0.60 },
{ name: "Zone 2", desc: "Light / Fat Burn", minPct: 0.60, maxPct: 0.70 },
{ name: "Zone 3", desc: "Moderate / Aerobic", minPct: 0.70, maxPct: 0.80 },
{ name: "Zone 4", desc: "Hard / Anaerobic", minPct: 0.80, maxPct: 0.90 },
{ name: "Zone 5", desc: "Maximum / VO2 Max", minPct: 0.90, maxPct: 1.00 }
];
// Calculate Karvonen ranges
for (var i = 0; i < zones.length; i++) {
zones[i].minBpm = Math.round((hrr * zones[i].minPct) + restingHR);
zones[i].maxBpm = Math.round((hrr * zones[i].maxPct) + restingHR);
}
} else {
// Standard Percentage Method
// Target HR = MHR * %
zones = [
{ name: "Zone 1", desc: "Very Light / Recovery", minPct: 0.50, maxPct: 0.60 },
{ name: "Zone 2", desc: "Light / Fat Burn", minPct: 0.60, maxPct: 0.70 },
{ name: "Zone 3", desc: "Moderate / Aerobic", minPct: 0.70, maxPct: 0.80 },
{ name: "Zone 4", desc: "Hard / Anaerobic", minPct: 0.80, maxPct: 0.90 },
{ name: "Zone 5", desc: "Maximum / VO2 Max", minPct: 0.90, maxPct: 1.00 }
];
// Calculate Standard ranges
for (var i = 0; i < zones.length; i++) {
zones[i].minBpm = Math.round(mhr * zones[i].minPct);
zones[i].maxBpm = Math.round(mhr * zones[i].maxPct);
}
}
// Render Results
mhrDisplay.innerText = mhr;
methodDisplay.innerText = methodText;
tableBody.innerHTML = "";
for (var j = 0; j < zones.length; j++) {
var row = "