Calculate your MHR and optimal heart rate zones for exercise.
Male
Female
Used for gender-specific formulas like Gulati.
Enter this for Karvonen Formula (more accurate zones). Leave blank for Standard.
Target Heart Rate Zones
Zone
Intensity
Heart Rate Range (BPM)
Benefit
Understanding Maximum Heart Rate (MHR)
Your Maximum Heart Rate (MHR) is the highest number of beats per minute (BPM) your heart can pump under maximum stress. While it is not recommended to train at your absolute maximum for long periods, knowing this number is critical for defining your Target Heart Rate Zones. These zones help you train efficiently, whether your goal is fat loss, endurance building, or peak athletic performance.
Formulas Used in This Calculator
There are several ways to estimate MHR. This calculator uses the following reputable scientific methods:
Fox Formula (Standard):220 – Age. This is the most widely known formula used in general fitness, though it can oversimplify for older adults.
Tanaka Formula:208 – (0.7 × Age). Often considered more accurate for adults over the age of 40.
Gulati Formula:206 – (0.88 × Age). A formula specifically researched for women, providing a more accurate baseline for female physiology.
Training Zones Explained
Once your MHR is established, we calculate training zones. If you provide your Resting Heart Rate (RHR), we use the Karvonen Method, which accounts for your cardiovascular fitness level (Heart Rate Reserve). If no RHR is provided, we use standard percentage calculations.
Zone 1 (50-60%): Warm Up / Recovery. Very light intensity. Good for beginners and warming up.
Zone 2 (60-70%): Fat Burning / Endurance. The "sweet spot" for metabolic health and building a base for endurance.
Zone 3 (70-80%): Aerobic. Improves cardiovascular system and blood circulation. You will start to sweat and breathe harder.
Zone 4 (80-90%): Anaerobic / Threshold. High intensity. Increases maximum performance capacity and lactate tolerance. Sustainable for short bursts.
Zone 5 (90-100%): VO2 Max. Maximum effort. Only sustainable for very short periods (sprints).
Why Monitoring Heart Rate Matters
Exercising blindly without monitoring intensity can lead to "junk miles"—training too hard to recover properly, but not hard enough to trigger specific adaptations. By staying within specific heart rate zones, you ensure that every workout has a purpose, reducing the risk of overtraining and injury.
function calculateHeartRate() {
// 1. Get Inputs
var ageInput = document.getElementById('mhrAge');
var sexInput = document.getElementById('mhrSex');
var rhrInput = document.getElementById('mhrResting');
var age = parseFloat(ageInput.value);
var sex = sexInput.value;
var rhr = parseFloat(rhrInput.value);
// 2. Validation
if (isNaN(age) || age 120) {
alert("Please enter a valid age between 1 and 120.");
return;
}
// 3. Calculate MHR based on formulas
// Fox: 220 – age
var mhrFox = 220 – age;
// Tanaka: 208 – (0.7 * age)
var mhrTanaka = 208 – (0.7 * age);
// Gulati (Women): 206 – (0.88 * age)
var mhrGulati = 206 – (0.88 * age);
// Determine Primary MHR to display and use for zones
var primaryMHR = 0;
var formulaName = "";
if (sex === 'female') {
primaryMHR = Math.round(mhrGulati);
formulaName = "Gulati Formula (Women specific)";
} else {
// For men, use Tanaka if over 40 for accuracy, otherwise Fox is standard
if (age > 40) {
primaryMHR = Math.round(mhrTanaka);
formulaName = "Tanaka Formula (Optimized for age 40+)";
} else {
primaryMHR = Math.round(mhrFox);
formulaName = "Fox Formula (Standard)";
}
}
// 4. Calculate Zones
var useKarvonen = false;
if (!isNaN(rhr) && rhr > 30 && rhr < 150) {
useKarvonen = true;
}
var zones = [];
var percentages = [
{ min: 0.50, max: 0.60, name: "Zone 1: Very Light", desc: "Warm up, Recovery" },
{ min: 0.60, max: 0.70, name: "Zone 2: Light", desc: "Fat Burning, Basic Endurance" },
{ min: 0.70, max: 0.80, name: "Zone 3: Moderate", desc: "Aerobic Fitness" },
{ min: 0.80, max: 0.90, name: "Zone 4: Hard", desc: "Anaerobic Threshold" },
{ min: 0.90, max: 1.00, name: "Zone 5: Maximum", desc: "Performance / Speed" }
];
// Heart Rate Reserve (HRR) for Karvonen
var hrr = primaryMHR – rhr;
for (var i = 0; i < percentages.length; i++) {
var minPct = percentages[i].min;
var maxPct = percentages[i].max;
var minBPM, maxBPM;
if (useKarvonen) {
// Karvonen: (HRR * %) + RHR
minBPM = Math.round((hrr * minPct) + rhr);
maxBPM = Math.round((hrr * maxPct) + rhr);
} else {
// Standard: MHR * %
minBPM = Math.round(primaryMHR * minPct);
maxBPM = Math.round(primaryMHR * maxPct);
}
zones.push({
name: percentages[i].name,
range: (Math.round(minPct * 100)) + "% – " + (Math.round(maxPct * 100)) + "%",
bpm: minBPM + " – " + maxBPM + " bpm",
benefit: percentages[i].desc
});
}
// 5. Output Results
var resultDiv = document.getElementById('mhrResult');
var displayMHR = document.getElementById('displayMHR');
var displayFormula = document.getElementById('displayFormula');
var methodText = document.getElementById('methodUsedText');
var tableBody = document.getElementById('zoneTableBody');
resultDiv.style.display = 'block';
displayMHR.innerHTML = "Estimated Max Heart Rate: " + primaryMHR + " BPM";
displayFormula.innerHTML = "Based on: " + formulaName;
if (useKarvonen) {
methodText.innerHTML = "Zones calculated using the Karvonen Method (incorporating your Resting HR of " + rhr + " BPM). This is generally more accurate for active individuals.";
} else {
methodText.innerHTML = "Zones calculated using Standard Percentage of MHR. For more precision, enter your Resting Heart Rate.";
}
// Build Table
var tableHTML = "";
for (var j = 0; j < zones.length; j++) {
tableHTML += "