My Heart Rate Zone Calculator

My Heart Rate Zone Calculator

Your Personalized Training Zones

Estimated Max Heart Rate: BPM

Zone Intensity Target Range (BPM)

Understanding Your Heart Rate Zones

Training with heart rate zones allows you to tailor your workouts to specific physiological outcomes. By measuring your intensity relative to your Maximum Heart Rate (MHR) and Heart Rate Reserve (HRR), you can ensure you are working hard enough to see results but not so hard that you risk injury or overtraining.

The Five Intensity Zones

  • Zone 1: Very Light (50-60%) – Best for recovery, warm-ups, and cool-downs. Improves overall health and aids recovery after harder sessions.
  • Zone 2: Light (60-70%) – The "Fat Burning" zone. Builds basic endurance and allows the body to become more efficient at utilizing fat for fuel.
  • Zone 3: Moderate (70-80%) – The aerobic zone. Improves cardiovascular capacity and lung efficiency. This is the "sweet spot" for many fitness enthusiasts.
  • Zone 4: Hard (80-90%) – The anaerobic zone. Increases your speed and power. High-intensity interval training (HIIT) often targets this zone.
  • Zone 5: Maximum (90-100%) – All-out effort. Usually reserved for short sprints or athletic competition. It improves peak performance.

Calculation Method: The Karvonen Formula

This calculator uses the Karvonen Formula, which is widely considered more accurate than simple age-based formulas because it incorporates your Resting Heart Rate (RHR). By calculating your Heart Rate Reserve (the difference between max and resting), the target zones are personalized to your current fitness level.

Example Calculation

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

  1. Max HR: 220 – 40 = 180 BPM
  2. HR Reserve: 180 – 60 = 120 BPM
  3. Zone 2 (60%): (120 * 0.60) + 60 = 132 BPM
function calculateHRZones() { var age = parseFloat(document.getElementById('userAge').value); var rhr = parseFloat(document.getElementById('restingHR').value); var resultArea = document.getElementById('hrResultArea'); var maxHRDisplay = document.getElementById('maxHRVal'); var tableBody = document.getElementById('zoneTableBody'); if (isNaN(age) || age 120) { alert("Please enter a valid age."); return; } if (isNaN(rhr) || rhr 200) { alert("Please enter a valid resting heart rate (usually between 40-100 BPM)."); return; } // Formulas var mhr = 220 – age; var hrr = mhr – rhr; if (hrr <= 0) { alert("Resting heart rate cannot be higher than maximum heart rate. Please check your inputs."); return; } maxHRDisplay.innerText = mhr; var zones = [ { name: "Zone 1: Very Light", intensity: "50% – 60%", low: 0.50, high: 0.60, color: "#ffc107" }, { name: "Zone 2: Light", intensity: "60% – 70%", low: 0.60, high: 0.70, color: "#ff9800" }, { name: "Zone 3: Moderate", intensity: "70% – 80%", low: 0.70, high: 0.80, color: "#4caf50" }, { name: "Zone 4: Hard", intensity: "80% – 90%", low: 0.80, high: 0.90, color: "#2196f3" }, { name: "Zone 5: Maximum", intensity: "90% – 100%", low: 0.90, high: 1.00, color: "#f44336" } ]; var html = ""; for (var i = 0; i < zones.length; i++) { var lowBPM = Math.round((hrr * zones[i].low) + rhr); var highBPM = Math.round((hrr * zones[i].high) + rhr); html += ""; html += "" + zones[i].name + ""; html += "" + zones[i].intensity + ""; html += "" + lowBPM + " – " + highBPM + " BPM"; html += ""; } tableBody.innerHTML = html; resultArea.style.display = "block"; // Smooth scroll to results resultArea.scrollIntoView({ behavior: 'smooth', block: 'nearest' }); }

Leave a Comment