Measure your pulse for 60 seconds while completely relaxed.
Please enter a valid resting heart rate (30-200 BPM).
Estimated Max Heart Rate
– BPM
Heart Rate Reserve
– BPM
Target Heart Rate Zones (Karvonen Method)
Zone
Intensity (%)
Target Range (BPM)
Benefit
To Calculate a Target Heart Rate Zone You Must Know These Variables
Understanding cardiovascular intensity is crucial for achieving specific fitness goals, whether that is fat loss, endurance training, or athletic performance. To calculate a target heart rate zone accurately, you must know specific biological variables that define your personal cardiovascular baseline and limits.
While generic charts at the gym offer rough estimates, they often ignore individual differences in fitness levels. By utilizing the Karvonen Formula, which this calculator employs, we incorporate your resting heart rate to provide a much more personalized and effective training range.
1. Your Maximum Heart Rate (MHR)
The first variable you must know is your Maximum Heart Rate. This represents the fastest rate at which your heart can beat during maximum physical exertion. The most common way to estimate this without a clinical stress test is the formula:
MHR = 220 – Age
For example, a 40-year-old would have an estimated MHR of 180 beats per minute (BPM).
2. Your Resting Heart Rate (RHR)
To calculate a target heart rate zone with precision, knowing your Resting Heart Rate is mandatory. This is the number of times your heart beats per minute while you are at complete rest. A lower RHR generally indicates better cardiovascular fitness and heart efficiency.
How to measure: The best time to measure your RHR is immediately after waking up in the morning, before getting out of bed or drinking coffee. Count your pulse for 60 seconds.
3. Heart Rate Reserve (HRR)
Once you know your MHR and RHR, you can calculate the "Heart Rate Reserve." This number represents the cushion of heartbeats available for exercise above your resting baseline.
Formula: HRR = Maximum Heart Rate – Resting Heart Rate
Understanding the 5 Heart Rate Zones
Training in specific zones elicits different physiological adaptations. Here is what you need to know about each intensity level:
Zone 1 (50-60%): Warm Up / Recovery. Very light effort, aids in recovery and preparing the body for exercise.
Zone 2 (60-70%): Fat Burning / Base. Light effort, comfortable conversation pace. This is the optimal zone for metabolizing fat as fuel and building endurance.
Zone 3 (70-80%): Aerobic. Moderate effort. Improves blood circulation and aerobic capacity (VO2 Max).
Zone 4 (80-90%): Anaerobic / Threshold. Hard effort. Sustainable for shorter periods. Increases lactate threshold and speed.
Zone 5 (90-100%): Maximum Effort. Very hard. Used for short interval training to improve peak power and speed.
Why the "Talk Test" Matters
If you do not have a heart rate monitor, you can cross-reference your calculated zones with the "Talk Test." In Zones 1 and 2, you should be able to hold a full conversation. In Zone 3, speaking becomes harder (short sentences). In Zone 4, you can only speak a few words, and in Zone 5, talking is impossible.
function calculateHeartRateZones() {
// 1. Get Inputs
var ageInput = document.getElementById("thr-age");
var rhrInput = document.getElementById("thr-rhr");
var age = parseFloat(ageInput.value);
var rhr = parseFloat(rhrInput.value);
// 2. Clear previous errors
document.getElementById("error-age").style.display = "none";
document.getElementById("error-rhr").style.display = "none";
document.getElementById("thr-result-container").style.display = "none";
// 3. Validate Inputs
var hasError = false;
if (isNaN(age) || age 120) {
document.getElementById("error-age").style.display = "block";
hasError = true;
}
if (isNaN(rhr) || rhr 200) {
document.getElementById("error-rhr").style.display = "block";
hasError = true;
}
if (hasError) {
return;
}
// 4. Perform Calculations (Karvonen Method)
// MHR = 220 – Age
var maxHeartRate = 220 – age;
// HRR = MHR – RHR
var heartRateReserve = maxHeartRate – rhr;
// 5. Display Summary Metrics
document.getElementById("display-mhr").innerHTML = Math.round(maxHeartRate) + " BPM";
document.getElementById("display-hrr").innerHTML = Math.round(heartRateReserve) + " BPM";
// 6. Calculate Zones and Build Table
var zones = [
{ id: 1, name: "Zone 1: Warm Up", minPct: 0.50, maxPct: 0.60, benefit: "Recovery & Warm-up" },
{ id: 2, name: "Zone 2: Fat Burn", minPct: 0.60, maxPct: 0.70, benefit: "Endurance & Fat Loss" },
{ id: 3, name: "Zone 3: Aerobic", minPct: 0.70, maxPct: 0.80, benefit: "Cardiovascular Fitness" },
{ id: 4, name: "Zone 4: Anaerobic", minPct: 0.80, maxPct: 0.90, benefit: "Performance & Speed" },
{ id: 5, name: "Zone 5: Maximum", minPct: 0.90, maxPct: 1.00, benefit: "Max Effort & Power" }
];
var tableHtml = "";
for (var i = 0; i < zones.length; i++) {
var z = zones[i];
// Formula: TargetHR = ((HRR * %Intensity) + RHR)
var minBpm = Math.round((heartRateReserve * z.minPct) + rhr);
var maxBpm = Math.round((heartRateReserve * z.maxPct) + rhr);
tableHtml += "