How to Calculate Running Heart Rate Zones

Running Heart Rate Zones Calculator body { font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif; line-height: 1.6; color: #333; max-width: 800px; margin: 0 auto; padding: 20px; } .calculator-box { background: #f8f9fa; border: 1px solid #e9ecef; border-radius: 8px; padding: 25px; margin-bottom: 40px; box-shadow: 0 4px 6px rgba(0,0,0,0.05); } .calc-title { text-align: center; margin-top: 0; margin-bottom: 25px; color: #2c3e50; font-size: 24px; font-weight: 700; } .input-group { margin-bottom: 15px; } .input-group label { display: block; margin-bottom: 5px; font-weight: 600; font-size: 14px; color: #555; } .input-group input { width: 100%; padding: 10px; border: 1px solid #ccc; border-radius: 4px; font-size: 16px; box-sizing: border-box; /* Ensures padding doesn't affect width */ } .input-hint { font-size: 12px; color: #777; margin-top: 4px; } button.calc-btn { width: 100%; padding: 12px; background-color: #e74c3c; color: white; border: none; border-radius: 4px; font-size: 16px; font-weight: bold; cursor: pointer; transition: background-color 0.2s; margin-top: 10px; } button.calc-btn:hover { background-color: #c0392b; } #results-area { margin-top: 25px; display: none; animation: fadeIn 0.5s; } .results-table { width: 100%; border-collapse: collapse; margin-top: 10px; background: white; } .results-table th, .results-table td { padding: 12px; text-align: left; border-bottom: 1px solid #ddd; } .results-table th { background-color: #2c3e50; color: white; } .zone-row-1 { border-left: 5px solid #95a5a6; } /* Grey */ .zone-row-2 { border-left: 5px solid #3498db; } /* Blue */ .zone-row-3 { border-left: 5px solid #2ecc71; } /* Green */ .zone-row-4 { border-left: 5px solid #f1c40f; } /* Yellow */ .zone-row-5 { border-left: 5px solid #e74c3c; } /* Red */ .metric-summary { display: flex; justify-content: space-between; background: #fff; padding: 15px; border-radius: 4px; margin-bottom: 20px; border: 1px solid #ddd; } .metric-item { text-align: center; } .metric-val { font-size: 20px; font-weight: bold; color: #2c3e50; } .metric-label { font-size: 12px; text-transform: uppercase; color: #7f8c8d; } @keyframes fadeIn { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: translateY(0); } } .content-section { color: #444; } .content-section h2 { color: #2c3e50; margin-top: 30px; border-bottom: 2px solid #e74c3c; padding-bottom: 10px; display: inline-block; } .content-section h3 { color: #34495e; margin-top: 25px; } .content-section ul { margin-left: 20px; } .content-section li { margin-bottom: 10px; }

Running Heart Rate Zone Calculator

Measure immediately after waking up for best accuracy.
If you know your actual Max HR from a lab test, enter it here.
Max HR
Resting HR
HR Reserve
Zone Intensity (%) Heart Rate Range (BPM) Training Benefit
function calculateZones() { // 1. Get Input Values var ageInput = document.getElementById('runnerAge').value; var rhrInput = document.getElementById('restingHeartRate').value; var maxHrInput = document.getElementById('maxHeartRate').value; // 2. Validate essential inputs if (!ageInput && !maxHrInput) { alert("Please enter your Age or a known Max Heart Rate."); return; } var age = parseFloat(ageInput); var rhr = parseFloat(rhrInput); // 3. Calculate Max HR (Formula: 220 – Age if not provided) var maxHR; if (maxHrInput) { maxHR = parseFloat(maxHrInput); } else { maxHR = 220 – age; } // 4. Handle Resting Heart Rate logic // If RHR is provided, we use Karvonen Formula: Target = ((Max – Rest) * %) + Rest // If RHR is NOT provided, we use Standard Formula: Target = Max * % var useKarvonen = false; var hrr = 0; // Heart Rate Reserve if (rhrInput && !isNaN(rhr)) { useKarvonen = true; hrr = maxHR – rhr; } else { // Treat RHR as 0 for display consistency, but logic changes rhr = 0; hrr = maxHR; // effectively just max for calculation purposes if formula is adjusted } // Helper function to calculate BPM based on percentage function getBPM(percent) { if (useKarvonen) { // Karvonen: (HRR * percent) + RHR return Math.round((hrr * percent) + rhr); } else { // Standard: MaxHR * percent return Math.round(maxHR * percent); } } // 5. Calculate Zone Bounds // Zone 1: 50-60% var z1_min = getBPM(0.50); var z1_max = getBPM(0.60); // Zone 2: 60-70% var z2_min = getBPM(0.60); var z2_max = getBPM(0.70); // Zone 3: 70-80% var z3_min = getBPM(0.70); var z3_max = getBPM(0.80); // Zone 4: 80-90% var z4_min = getBPM(0.80); var z4_max = getBPM(0.90); // Zone 5: 90-100% var z5_min = getBPM(0.90); var z5_max = getBPM(1.00); // Should equal maxHR // 6. Update Display document.getElementById('disp-max-hr').innerText = maxHR + " bpm"; document.getElementById('disp-rhr').innerText = (useKarvonen ? rhr : "N/A") + " bpm"; document.getElementById('disp-hrr').innerText = (useKarvonen ? hrr : "N/A") + " bpm"; var tableHtml = "; // Zone 1 tableHtml += ''; tableHtml += 'Zone 1Very Light'; tableHtml += '50% – 60%'; tableHtml += '' + z1_min + ' – ' + z1_max + ' bpm'; tableHtml += 'Warm up, recovery, improves overall health.'; tableHtml += ''; // Zone 2 tableHtml += ''; tableHtml += 'Zone 2Light'; tableHtml += '60% – 70%'; tableHtml += '' + z2_min + ' – ' + z2_max + ' bpm'; tableHtml += 'Basic endurance, fat burning, "conversational pace".'; tableHtml += ''; // Zone 3 tableHtml += ''; tableHtml += 'Zone 3Moderate'; tableHtml += '70% – 80%'; tableHtml += '' + z3_min + ' – ' + z3_max + ' bpm'; tableHtml += 'Aerobic fitness, improves blood circulation and skeletal muscles.'; tableHtml += ''; // Zone 4 tableHtml += ''; tableHtml += 'Zone 4Hard'; tableHtml += '80% – 90%'; tableHtml += '' + z4_min + ' – ' + z4_max + ' bpm'; tableHtml += 'Increases maximum performance capacity (Threshold).'; tableHtml += ''; // Zone 5 tableHtml += ''; tableHtml += 'Zone 5Maximum'; tableHtml += '90% – 100%'; tableHtml += '' + z5_min + ' – ' + z5_max + ' bpm'; tableHtml += 'Develops maximum performance and speed (Anaerobic).'; tableHtml += ''; document.getElementById('zones-body').innerHTML = tableHtml; document.getElementById('results-area').style.display = 'block'; }

How to Calculate Running Heart Rate Zones

Training by heart rate is one of the most effective ways for runners to improve endurance, speed, and recovery without overtraining. By dividing your heart rate intensities into five specific "zones," you can target different physiological systems.

This calculator uses two primary methods depending on the data you provide:

  1. Karvonen Method (Recommended): Used if you enter your Resting Heart Rate. It accounts for your Heart Rate Reserve (HRR), giving a more personalized training range.
  2. Maximum Heart Rate Method: Used if Resting Heart Rate is omitted. It calculates zones purely as a percentage of your Max HR.

Understanding the 5 Running Zones

Zone 1: Very Light (50-60%)

This is your recovery zone. It should feel effortless. You use this zone for warming up, cooling down, or active recovery runs between hard workout days.

Zone 2: Aerobic / Endurance (60-70%)

Often called the "fat-burning zone," this is where the majority of your mileage should occur (approx. 80% of training). Running in Zone 2 builds mitochondrial density and capillary networks, essential for long-distance running. You should be able to hold a full conversation comfortably.

Zone 3: Tempo / Aerobic Power (70-80%)

This is the "grey zone." It is harder than easy running but not hard enough to be a threshold workout. While useful for marathon pacing, spending too much time here can lead to fatigue without the specific benefits of high-intensity intervals.

Zone 4: Lactate Threshold (80-90%)

This represents a "comfortably hard" effort. You are running just below the point where lactate accumulates in the blood faster than your body can clear it. Training here improves your ability to sustain speed over time.

Zone 5: VO2 Max / Anaerobic (90-100%)

This is near-maximum effort, sustainable for only short bursts (sprints or steep hill repeats). Training in Zone 5 improves your top-end speed and neuromuscular power.

Formulas Used

Maximum Heart Rate (MHR):
220 - Age (Standard estimate)

Heart Rate Reserve (HRR):
Max HR - Resting HR

Target Heart Rate (Karvonen):
(HRR × Intensity %) + Resting HR

Leave a Comment