Leave blank for standard calculation, or enter for Karvonen method (more accurate).
Estimated Max Heart Rate (MHR):— bpm
Heart Rate Reserve (HRR):— bpm
Your Training Zones
Zone
Intensity
Range (BPM)
Benefit
Why Calculate Your Optimal Heart Rate?
Understanding your optimal heart rate is the cornerstone of effective cardiovascular training. Whether your goal is fat loss, endurance building, or peak athletic performance, training blindly without monitoring your intensity often leads to plateaus or overtraining injuries.
This calculator utilizes two primary scientific methods to determine your training zones:
Standard Method (220 – Age): A general estimation suitable for beginners.
Karvonen Formula: A more precise method that incorporates your Resting Heart Rate (RHR) to determine your Heart Rate Reserve (HRR). This adjusts the zones based on your current fitness level.
Pro Tip: To find your Resting Heart Rate, take your pulse immediately after waking up in the morning, before getting out of bed. Count the beats for 60 seconds.
Decoding the 5 Heart Rate Zones
Cardiovascular training is divided into five distinct zones, each triggering different metabolic adaptations in the body. Knowing which zone you are in allows you to target specific fitness goals.
Zone 1: Very Light (50-60%)
Feel: Very easy, effortless conversation.
Benefit: Improves overall health, helps recovery, and warms up the body. This is the "active recovery" zone used on rest days or between high-intensity intervals.
Zone 2: Light / Fat Burn (60-70%)
Feel: Comfortable, can maintain conversation but breathing is deeper.
Benefit: Improves basic endurance and fat burning. In this zone, the body becomes more efficient at oxidizing fat for fuel and transporting oxygen to muscles. This is where most long-distance training should occur.
Zone 3: Moderate / Aerobic (70-80%)
Feel: Moderate strain, speaking in short sentences is possible.
Benefit: Improves aerobic fitness and blood circulation in skeletal muscles. Training in this zone strengthens the heart and lungs, allowing you to sustain moderate effort for longer periods.
Zone 4: Hard / Anaerobic (80-90%)
Feel: Heavy breathing, can only speak a few words.
Benefit: Increases maximum performance capacity and lactate threshold. This is the threshold where your body starts producing lactic acid faster than it can clear it. Training here teaches your body to tolerate high intensity.
Zone 5: Maximum / VO2 Max (90-100%)
Feel: Gasping for breath, sustainable for only very short bursts.
Benefit: Develops maximum performance and speed. This zone is typically reserved for elite interval training and final sprints.
The Math Behind the Calculator
If you entered a Resting Heart Rate, our tool uses the Karvonen Formula, widely regarded as the gold standard for defining training zones because it respects individual physiological differences.
For example, a 30-year-old with a resting heart rate of 60 bpm aiming for 70% intensity:
MHR = 190 bpm
HRR = 190 – 60 = 130 bpm
Target = (130 × 0.70) + 60 = 151 bpm
Without the Karvonen adjustment, the target would simply be 70% of 190 (133 bpm), which is significantly lower and might result in undertraining for a fit individual.
function calculateHeartRate() {
// 1. Get Inputs
var ageInput = document.getElementById("hr_age").value;
var rhrInput = document.getElementById("hr_resting").value;
// 2. Validate Inputs
var age = parseFloat(ageInput);
var rhr = parseFloat(rhrInput);
if (isNaN(age) || age 120) {
alert("Please enter a valid age between 1 and 120.");
return;
}
// 3. Logic
// Calculate Max Heart Rate (MHR)
var mhr = 220 – age;
// Check if we are doing Standard or Karvonen
var isKarvonen = !isNaN(rhr) && rhr > 30 && rhr < mhr;
var hrr = 0;
if (isKarvonen) {
hrr = mhr – rhr;
}
// 4. Update Display Elements
document.getElementById("results").style.display = "block";
document.getElementById("res_mhr").innerHTML = mhr + " bpm";
var hrrRow = document.getElementById("row_hrr");
if (isKarvonen) {
hrrRow.style.display = "flex";
document.getElementById("res_hrr").innerHTML = hrr + " bpm";
} else {
hrrRow.style.display = "none";
}
// 5. Generate Table Rows for Zones
// Zone Definitions: [min%, max%, Name, Benefit, CSS Class]
var zones = [
[0.50, 0.60, "Zone 1: Very Light", "Warm up / Recovery", "zone-1"],
[0.60, 0.70, "Zone 2: Light", "Fat Burning / Endurance", "zone-2"],
[0.70, 0.80, "Zone 3: Moderate", "Aerobic Fitness", "zone-3"],
[0.80, 0.90, "Zone 4: Hard", "Anaerobic Capacity", "zone-4"],
[0.90, 1.00, "Zone 5: Maximum", "Speed / VO2 Max", "zone-5"]
];
var tableHtml = "";
for (var i = 0; i < zones.length; i++) {
var z = zones[i];
var minPct = z[0];
var maxPct = z[1];
var name = z[2];
var benefit = z[3];
var cssClass = z[4];
var minBpm, maxBpm;
if (isKarvonen) {
// Karvonen: (HRR * %) + RHR
minBpm = Math.round((hrr * minPct) + rhr);
maxBpm = Math.round((hrr * maxPct) + rhr);
} else {
// Standard: MHR * %
minBpm = Math.round(mhr * minPct);
maxBpm = Math.round(mhr * maxPct);
}
tableHtml += '