Optional: Enter for Karvonen formula accuracy. Leave empty for standard calculation.
Estimated Max Heart Rate: 0 BPM
Zone
Intensity
Target Range (BPM)
Benefit
Understanding Your Heart Rate Training Zones
Training effectively requires more than just effort; it requires precision. This Max Heart Rate Zone Calculator helps you determine the specific beats per minute (BPM) ranges needed to achieve different physiological adaptations. By targeting these specific zones, you can optimize your workouts for fat loss, endurance, or peak athletic performance.
How It Works
This calculator utilizes two primary methods depending on the data you provide:
Standard Formula (Fox Method): Calculates Maximum Heart Rate (MHR) as 220 – Age. This is the industry standard for a quick estimation.
Karvonen Formula (Heart Rate Reserve): If you input your Resting Heart Rate (RHR), the calculator switches to this advanced method. It accounts for your fitness level by calculating the "Heart Rate Reserve" (MHR – RHR) and applying percentages to that reserve, then adding the RHR back in. This is generally considered more accurate for athletes.
The 5 Training Zones Explained
Heart rate training is divided into five distinct zones, each triggering different metabolic reactions in the body:
Zone 1: Very Light (50-60%)
This is the warm-up and recovery zone. Training here helps with recovery, improves blood flow, and prepares the muscles for more intense work without causing fatigue.
Zone 2: Light (60-70%)
Often called the "Fat Burning Zone." In this range, the body becomes efficient at using fat as its primary fuel source. It is crucial for building a solid aerobic base and endurance.
Zone 3: Moderate (70-80%)
The "Aerobic Zone." Training here improves blood circulation and the efficiency of the heart. It pushes the body to grow new capillaries and improves the transport of oxygen to muscles.
Zone 4: Hard (80-90%)
The "Anaerobic Zone." Here, you shift from aerobic to anaerobic metabolism. This zone increases your lactate threshold, meaning you can sustain high-intensity effort for longer periods before muscles stiffen.
Zone 5: Maximum (90-100%)
The "Red Line" zone. This is maximum effort, sustainable for only very short periods. It develops maximum performance speed and neuromuscular coordination.
How to Measure Resting Heart Rate
For the most accurate results using the Karvonen formula, measure your resting heart rate in the morning right after waking up, before getting out of bed. Count your pulse for 60 seconds.
function calculateHeartZones() {
// Get inputs
var ageInput = document.getElementById('hr_age');
var rhrInput = document.getElementById('hr_rhr');
var resultDiv = document.getElementById('hr_results');
var mhrDisplay = document.getElementById('mhr_val');
var tableBody = document.getElementById('zone_table_body');
// Parse values
var age = parseFloat(ageInput.value);
var rhr = parseFloat(rhrInput.value);
// Validation
if (isNaN(age) || age 120) {
alert("Please enter a valid age between 1 and 120.");
return;
}
// Calculate Max Heart Rate (Standard Formula)
var maxHeartRate = 220 – age;
// Check if we are using Karvonen (if RHR is valid)
var useKarvonen = !isNaN(rhr) && rhr > 0 && rhr < maxHeartRate;
// Clear previous results
tableBody.innerHTML = "";
mhrDisplay.textContent = maxHeartRate;
// Define Zones
var zones = [
{ id: 1, name: "Zone 1", minPct: 0.50, maxPct: 0.60, desc: "Warm Up / Recovery", class: "zone-1" },
{ id: 2, name: "Zone 2", minPct: 0.60, maxPct: 0.70, desc: "Fat Burn / Base", class: "zone-2" },
{ id: 3, name: "Zone 3", minPct: 0.70, maxPct: 0.80, desc: "Aerobic / Endurance", class: "zone-3" },
{ id: 4, name: "Zone 4", minPct: 0.80, maxPct: 0.90, desc: "Anaerobic / Hard", class: "zone-4" },
{ id: 5, name: "Zone 5", minPct: 0.90, maxPct: 1.00, desc: "VO2 Max / Peak", class: "zone-5" }
];
// Calculation Loop
for (var i = 0; i < zones.length; i++) {
var zone = zones[i];
var minBpm, maxBpm;
if (useKarvonen) {
// Karvonen Formula: TargetHR = ((maxHR − restingHR) × %Intensity) + restingHR
var heartRateReserve = maxHeartRate – rhr;
minBpm = Math.round((heartRateReserve * zone.minPct) + rhr);
maxBpm = Math.round((heartRateReserve * zone.maxPct) + rhr);
} else {
// Standard Formula: TargetHR = maxHR * %Intensity
minBpm = Math.round(maxHeartRate * zone.minPct);
maxBpm = Math.round(maxHeartRate * zone.maxPct);
}
// Build Table Row
var row = document.createElement('tr');
row.className = zone.class;
var pctText = Math.round(zone.minPct * 100) + "% – " + Math.round(zone.maxPct * 100) + "%";
var rangeText = minBpm + " – " + maxBpm + " bpm";
row.innerHTML = "
" + zone.name + "
" +
"
" + pctText + "
" +
"
" + rangeText + "
" +
"
" + zone.desc + "
";
tableBody.appendChild(row);
}
// Show Results
resultDiv.style.display = "block";
}