Leave blank to use the standard Max Heart Rate method.
–
Max Heart Rate (MHR)
–
Method Used
Target Heart Rate Zones
Zone
Intensity
Target Range (BPM)
Benefit
How to Calculate Workout Heart Rate
Calculating your workout heart rate is essential for maximizing the efficiency of your exercise routine. Whether your goal is fat loss, cardiovascular endurance, or peak athletic performance, training in the correct "zone" ensures you are stimulating the right energy systems in your body.
This calculator uses two primary methods to determine your target heart rate zones:
1. The Standard Method (Age-Based)
This is the simplest way to estimate your zones. It first calculates your Maximum Heart Rate (MHR) using the formula 220 – Age. The target zones are then calculated as simple percentages of this maximum.
Example: For a 40-year-old.
MHR = 220 – 40 = 180 BPM.
50% Intensity = 180 × 0.50 = 90 BPM.
2. The Karvonen Formula (More Accurate)
If you know your Resting Heart Rate (RHR), this calculator automatically upgrades to the Karvonen formula. This method is superior because it takes your fitness level into account. It calculates your Heart Rate Reserve (HRR) first.
Notice the difference? The Karvonen method often prescribes slightly higher, more appropriate targets for fit individuals.
Understanding Heart Rate Zones
Training across different zones provides specific metabolic benefits:
Zone 1 (50-60%): Very Light. Used for warm-ups, cool-downs, and active recovery. Helps with blood flow and muscle recovery.
Zone 2 (60-70%): Light (Fat Burn). The "conversation" pace. This zone is optimal for building basic endurance and burning fat as a primary fuel source.
Zone 3 (70-80%): Moderate (Aerobic). Improves blood circulation and skeletal muscle efficiency. This is where cardiovascular fitness is built.
Zone 4 (80-90%): Hard (Anaerobic). Increases the lactate threshold. This is high-intensity interval training (HIIT) territory, hard to maintain for long periods.
Zone 5 (90-100%): Maximum. For short bursts only. Improves maximum speed and power (sprinting).
How to Measure Resting Heart Rate
To get the most accurate results from this calculator, measure your resting heart rate (RHR) immediately after waking up in the morning, before getting out of bed. Count your pulse for 60 seconds. Do this for 3-4 days and take the average.
function calculateWorkoutZones() {
// Get Inputs
var ageInput = document.getElementById('whr-age');
var rhrInput = document.getElementById('whr-rhr');
var resultSection = document.getElementById('whr-result');
var mhrDisplay = document.getElementById('display-mhr');
var methodDisplay = document.getElementById('display-method');
var tableBody = document.getElementById('whr-table-body');
var age = parseFloat(ageInput.value);
var rhr = parseFloat(rhrInput.value);
// Validation
if (!age || isNaN(age) || age 120) {
alert("Please enter a valid age between 10 and 120.");
return;
}
// 1. Calculate Max Heart Rate (Standard Formula)
var maxHR = 220 – age;
// Determine Method (Standard vs Karvonen)
var useKarvonen = false;
if (rhr && !isNaN(rhr) && rhr > 30 && rhr < maxHR) {
useKarvonen = true;
}
// Prepare Zones Data
// Zones: 1 (50-60), 2 (60-70), 3 (70-80), 4 (80-90), 5 (90-100)
var zones = [
{ id: 1, minPct: 0.50, maxPct: 0.60, name: "Very Light", css: "zone-1", benefit: "Warm up / Recovery" },
{ id: 2, minPct: 0.60, maxPct: 0.70, name: "Light", css: "zone-2", benefit: "Fat Burning / Endurance" },
{ id: 3, minPct: 0.70, maxPct: 0.80, name: "Moderate", css: "zone-3", benefit: "Aerobic Fitness" },
{ id: 4, minPct: 0.80, maxPct: 0.90, name: "Hard", css: "zone-4", benefit: "Anaerobic Capacity" },
{ id: 5, minPct: 0.90, maxPct: 1.00, name: "Maximum", css: "zone-5", benefit: "Max Performance" }
];
var tableHTML = "";
for (var i = 0; i < zones.length; i++) {
var z = zones[i];
var minBPM, maxBPM;
if (useKarvonen) {
// Karvonen: ((MHR – RHR) * %) + RHR
var hrr = maxHR – rhr;
minBPM = Math.round((hrr * z.minPct) + rhr);
maxBPM = Math.round((hrr * z.maxPct) + rhr);
} else {
// Standard: MHR * %
minBPM = Math.round(maxHR * z.minPct);
maxBPM = Math.round(maxHR * z.maxPct);
}
tableHTML += "