Heart Zone Rate Calculator

Heart Rate Zone Calculator

Optimize your training using the Karvonen Formula

Your Personalized Training Zones

Zone Intensity Heart Rate (BPM)

How Heart Rate Zones Work

Heart rate zones are ranges that dictate the intensity level of your workout. By monitoring which zone you are in, you can tailor your exercise to meet specific goals, such as burning fat, increasing cardiovascular endurance, or improving peak athletic performance.

Understanding the 5 Training Zones

  • Zone 1 (50–60%): Very Light. Ideal for recovery and warming up. It improves overall health but doesn't build significant fitness.
  • Zone 2 (60–70%): Light. The "Fat Burn" zone. Increases metabolic efficiency and basic endurance.
  • Zone 3 (70–80%): Moderate. Improves aerobic capacity and blood circulation. This is the sweet spot for many runners and cyclists.
  • Zone 4 (80–90%): Hard. Increases anaerobic capacity and speed. Your body begins to produce lactic acid faster than it can remove it.
  • Zone 5 (90–100%): Maximum. Reserved for short bursts of maximal effort. It improves fast-twitch muscle fibers and neuro-muscular power.

The Karvonen Formula Explained

This calculator uses the Karvonen Formula, which is widely considered more accurate than the standard 220-Age method because it accounts for your Resting Heart Rate (RHR). By calculating your Heart Rate Reserve (Maximum HR – Resting HR), the formula provides a target heart rate that is more specific to your current fitness level.

Calculation Example:
A 40-year-old with a resting heart rate of 70 BPM:
1. Max HR: 220 – 40 = 180 BPM
2. HR Reserve: 180 – 70 = 110 BPM
3. Target (Zone 3 – 70%): (110 * 0.70) + 70 = 147 BPM
function calculateHRZones() { var age = parseFloat(document.getElementById('userAge').value); var rhr = parseFloat(document.getElementById('restingHR').value); var resultsDiv = document.getElementById('hrResults'); var tableBody = document.getElementById('zoneTableBody'); var mhrDisplay = document.getElementById('mhrDisplay'); if (isNaN(age) || age 120) { alert("Please enter a valid age."); return; } if (isNaN(rhr) || rhr 120) { alert("Please enter a valid resting heart rate (typical range 30-120)."); return; } var mhr = 220 – age; var hrr = mhr – rhr; mhrDisplay.innerHTML = "Your Estimated Max Heart Rate: " + mhr + " BPMHeart Rate Reserve (HRR): " + hrr + " BPM"; var zones = [ { name: "Zone 1 (Recovery)", percent: "50-60%", low: 0.50, high: 0.60, color: "#e0e0e0" }, { name: "Zone 2 (Aerobic/Fat Burn)", percent: "60-70%", low: 0.60, high: 0.70, color: "#90caf9" }, { name: "Zone 3 (Endurance)", percent: "70-80%", low: 0.70, high: 0.80, color: "#81c784" }, { name: "Zone 4 (Anaerobic)", percent: "80-90%", low: 0.80, high: 0.90, color: "#fff176" }, { name: "Zone 5 (Max Effort)", percent: "90-100%", low: 0.90, high: 1.00, color: "#ff8a65" } ]; var html = ""; for (var i = 0; i < zones.length; i++) { var lowHR = Math.round((hrr * zones[i].low) + rhr); var highHR = Math.round((hrr * zones[i].high) + rhr); html += ""; html += "
" + zones[i].name + "
"; html += "" + zones[i].percent + ""; html += "" + lowHR + " – " + highHR + ""; html += ""; } tableBody.innerHTML = html; resultsDiv.style.display = "block"; resultsDiv.scrollIntoView({ behavior: 'smooth', block: 'nearest' }); }

Leave a Comment