How to Calculate Zones Heart Rate

Heart Rate Zone Calculator

Your Training Profile

Estimated Max Heart Rate: 0 BPM

Heart Rate Reserve (HRR): 0 BPM

Zone Intensity Heart Rate (BPM)

How to Calculate Heart Rate Zones

Understanding your heart rate zones is the key to efficient cardiovascular training. Whether you want to burn fat, increase endurance, or improve your VO2 Max, exercising at the right intensity ensures you reach your goals without overtraining.

The Karvonen Formula Explained

This calculator uses the Karvonen Formula, which is widely considered more accurate than the simple "220 minus age" method. The Karvonen method incorporates your Resting Heart Rate (RHR) to calculate your Heart Rate Reserve (HRR). This provides a more personalized target range based on your current fitness level.

The Math:

  • 1. Max Heart Rate: 220 – Age
  • 2. Heart Rate Reserve: Max HR – Resting HR
  • 3. Target HR: (HRR × Intensity %) + Resting HR

Detailed Breakdown of the 5 Zones

Zone 1: Very Light (50–60%)
Ideal for warm-ups, cool-downs, and active recovery. It improves overall health but doesn't strain the body.
Zone 2: Light (60–70%)
The "Fat Burning Zone." This intensity builds basic endurance and aerobic capacity. You should be able to hold a conversation easily.
Zone 3: Moderate (70–80%)
Aerobic training. This improves blood circulation and strengthens skeletal muscles. This is the sweet spot for marathon and long-distance training.
Zone 4: Hard (80–90%)
Anaerobic zone. This increases speed and power. You will breathe heavily and will only be able to speak in short phrases.
Zone 5: Maximum (90–100%)
Red-line zone. This improves maximal performance and speed. It is usually reserved for short interval bursts (HIIT).

Example Calculation

Suppose you are 40 years old with a Resting HR of 60 BPM.

  • Max HR = 220 – 40 = 180 BPM.
  • HRR = 180 – 60 = 120 BPM.
  • To find the bottom of Zone 2 (60%): (120 × 0.60) + 60 = 132 BPM.
function calculateHRZones() { var age = document.getElementById('hr_age').value; var resting = document.getElementById('hr_resting').value; var resultsDiv = document.getElementById('hr_results'); var tableBody = document.getElementById('zone_table_body'); if (!age || age 110) { alert("Please enter a valid age."); return; } if (!resting || resting 150) { alert("Please enter a valid resting heart rate (typical range 40-100)."); return; } var ageNum = parseInt(age); var restNum = parseInt(resting); var maxHR = 220 – ageNum; var hrr = maxHR – restNum; document.getElementById('res_max_hr').innerText = maxHR; document.getElementById('res_hrr').innerText = hrr; var zones = [ { name: "Zone 1 (Recovery)", range: "50-60%", color: "#3498db", low: 0.50, high: 0.60 }, { name: "Zone 2 (Fat Burn)", range: "60-70%", color: "#2ecc71", low: 0.60, high: 0.70 }, { name: "Zone 3 (Aerobic)", range: "70-80%", color: "#f1c40f", low: 0.70, high: 0.80 }, { name: "Zone 4 (Anaerobic)", range: "80-90%", color: "#e67e22", low: 0.80, high: 0.90 }, { name: "Zone 5 (VO2 Max)", range: "90-100%", color: "#e74c3c", low: 0.90, high: 1.00 } ]; var html = ""; for (var i = 0; i < zones.length; i++) { var lowBPM = Math.round((hrr * zones[i].low) + restNum); var highBPM = Math.round((hrr * zones[i].high) + restNum); html += ''; html += '' + zones[i].name + ''; html += '' + zones[i].range + ''; html += '' + lowBPM + ' – ' + highBPM + ' BPM'; html += ''; } tableBody.innerHTML = html; resultsDiv.style.display = "block"; resultsDiv.scrollIntoView({ behavior: 'smooth', block: 'start' }); }

Leave a Comment