Heart Rate Reserve Zones Calculator

Heart Rate Reserve (HRR) Zones Calculator

Maximum Heart Rate (Estimated): BPM

Heart Rate Reserve (HRR): BPM

Zone Intensity (%) Target Range (BPM)

What is Heart Rate Reserve (HRR)?

Heart Rate Reserve (HRR) is the difference between your measured or predicted maximum heart rate and your resting heart rate. Unlike simple percentage-of-max-heart-rate calculations, HRR takes into account your baseline fitness level (Resting HR), making it a much more accurate tool for prescribing exercise intensity.

The Karvonen Formula

This calculator utilizes the Karvonen Formula, which is the gold standard for athletes and fitness enthusiasts. The formula works as follows:

Target Heart Rate = ((Max HR − Resting HR) × %Intensity) + Resting HR

Understanding the Training Zones

  • Zone 1 (50-60%): Very Light. Ideal for warm-ups, cool-downs, and active recovery. Improves overall health and helps recovery after harder sessions.
  • Zone 2 (60-70%): Light. The "Fat Burning" zone. Builds aerobic endurance and strengthens the heart without significant stress. You should be able to hold a conversation.
  • Zone 3 (70-80%): Moderate. Improves aerobic capacity and efficiency. This is the "Aerobic Zone" where the body gets better at transporting oxygen to muscles.
  • Zone 4 (80-90%): Hard. Increases speed endurance and anaerobic capacity. Breathing is heavy, and you move toward your lactate threshold.
  • Zone 5 (90-100%): Maximum. Improves peak performance and sprinting speed. Only sustainable for very short intervals.

Calculation Example

If you are 40 years old with a resting heart rate of 60 BPM:

  1. Estimated Max HR: 220 – 40 = 180 BPM
  2. HRR: 180 – 60 = 120 BPM
  3. Zone 2 (60%): (120 * 0.60) + 60 = 132 BPM
  4. Zone 2 (70%): (120 * 0.70) + 60 = 144 BPM
  5. Result: Your Zone 2 range is 132 to 144 BPM.
function calculateHRRZones() { var age = parseFloat(document.getElementById("userAge").value); var resting = parseFloat(document.getElementById("restingHR").value); var resultDiv = document.getElementById("hrrResults"); var zoneBody = document.getElementById("zoneBody"); if (isNaN(age) || age 110) { alert("Please enter a valid age."); return; } if (isNaN(resting) || resting 120) { alert("Please enter a valid resting heart rate (typical range 30-120)."); return; } // Standard formula for Max HR var maxHR = 220 – age; var hrr = maxHR – resting; if (hrr <= 0) { alert("Resting heart rate cannot be higher than maximum heart rate. Please check your inputs."); return; } document.getElementById("maxHRVal").innerText = Math.round(maxHR); document.getElementById("hrrVal").innerText = Math.round(hrr); var zones = [ { name: "Zone 1 (Recovery)", min: 0.50, max: 0.60, color: "#ebf5fb" }, { name: "Zone 2 (Aerobic)", min: 0.60, max: 0.70, color: "#e8f8f5" }, { name: "Zone 3 (Tempo)", min: 0.70, max: 0.80, color: "#fef9e7" }, { name: "Zone 4 (Threshold)", min: 0.80, max: 0.90, color: "#fef5e7" }, { name: "Zone 5 (Anaerobic)", min: 0.90, max: 1.00, color: "#fdedec" } ]; var html = ""; for (var i = 0; i < zones.length; i++) { var z = zones[i]; var low = Math.round((hrr * z.min) + resting); var high = Math.round((hrr * z.max) + resting); html += ''; html += '' + z.name + ''; html += '' + (z.min * 100) + '% – ' + (z.max * 100) + '%'; html += '' + low + ' – ' + high + ' BPM'; html += ''; } zoneBody.innerHTML = html; resultDiv.style.display = "block"; // Smooth scroll to results resultDiv.scrollIntoView({ behavior: 'smooth', block: 'nearest' }); }

Leave a Comment