Running Target Heart Rate Calculator

Running Target Heart Rate Calculator

Optimize your training using the Karvonen Formula

70%

Your Results

Specific Target Heart Rate: BPM

Estimated Maximum Heart Rate: BPM

Zone Intensity Range (BPM) Benefit

Understanding Your Running Heart Rate Zones

Using a running target heart rate calculator is essential for athletes who want to train scientifically. Instead of just guessing how hard you are working, tracking your beats per minute (BPM) ensures you are hitting the correct physiological adaptations for your specific goals.

What is the Karvonen Formula?

Unlike simple formulas that only use age, this calculator uses the Karvonen Formula. It takes your Resting Heart Rate (RHR) into account to calculate your Heart Rate Reserve (HRR). This provides a much more personalized target zone because it reflects your current level of cardiovascular fitness.

The 5 Training Zones Explained

  • Zone 1 (50-60%): Very Light. Great for active recovery and warm-ups.
  • Zone 2 (60-70%): Light. The "fat-burning" zone. Build basic endurance and aerobic capacity.
  • Zone 3 (70-80%): Moderate. Improves aerobic power and efficiency for long-distance running.
  • Zone 4 (80-90%): Hard. Increases anaerobic capacity and speed endurance (Tempo runs).
  • Zone 5 (90-100%): Maximum. Sprinting and high-intensity intervals. Only sustainable for short bursts.

Real-Life Example

Imagine a 40-year-old runner with a resting heart rate of 60 BPM who wants to perform a Zone 2 endurance run (70% intensity):

  1. Max HR: 220 – 40 = 180 BPM
  2. Heart Rate Reserve: 180 – 60 = 120 BPM
  3. Target (70%): (120 * 0.70) + 60 = 144 BPM

This runner should aim to keep their heart rate around 144 BPM to stay within the peak of their aerobic development zone.

function calculateTHR() { var age = parseFloat(document.getElementById('thr_age').value); var rhr = parseFloat(document.getElementById('thr_rhr').value); var intensityInput = parseFloat(document.getElementById('thr_intensity').value); if (isNaN(age) || isNaN(rhr) || age <= 0 || rhr <= 0) { alert("Please enter valid numbers for age and resting heart rate."); return; } // Calculations var mhr = 220 – age; var hrr = mhr – rhr; // Specific calculation for the slider value var specificTarget = Math.round((hrr * (intensityInput / 100)) + rhr); // Update UI document.getElementById('thr_result_box').style.display = 'block'; document.getElementById('specific_thr').innerText = specificTarget; document.getElementById('mhr_val').innerText = mhr; // Generate Zone Table var zones = [ { name: "Zone 1", intensity: "50-60%", low: 0.50, high: 0.60, benefit: "Recovery" }, { name: "Zone 2", intensity: "60-70%", low: 0.60, high: 0.70, benefit: "Endurance" }, { name: "Zone 3", intensity: "70-80%", low: 0.70, high: 0.80, benefit: "Aerobic" }, { name: "Zone 4", intensity: "80-90%", low: 0.80, high: 0.90, benefit: "Anaerobic" }, { name: "Zone 5", intensity: "90-100%", low: 0.90, high: 1.00, benefit: "Speed" } ]; var html = ""; for (var i = 0; i = zones[i].low * 100 && intensityInput < zones[i].high * 100) || (intensityInput == 100 && i == 4); var rowStyle = isCurrent ? "background: #fff3f3; font-weight: bold; border-left: 3px solid #e63946;" : "border-bottom: 1px solid #eee;"; html += ""; html += "" + zones[i].name + ""; html += "" + zones[i].intensity + ""; html += "" + lowBpm + " – " + highBpm + ""; html += "" + zones[i].benefit + ""; html += ""; } document.getElementById('zone_table_body').innerHTML = html; // Smooth scroll to results document.getElementById('thr_result_box').scrollIntoView({ behavior: 'smooth', block: 'nearest' }); }

Leave a Comment