How to Calculate the Heart Rate

Heart Rate Zone Calculator .hr-calculator-wrapper { max-width: 800px; margin: 0 auto; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif; color: #333; line-height: 1.6; } .hr-calc-box { background: #f8f9fa; border: 1px solid #e9ecef; border-radius: 8px; padding: 30px; margin-bottom: 40px; box-shadow: 0 4px 6px rgba(0,0,0,0.05); } .hr-input-group { margin-bottom: 20px; } .hr-input-group label { display: block; font-weight: 700; margin-bottom: 8px; color: #2c3e50; } .hr-input-group input { width: 100%; padding: 12px; border: 1px solid #ced4da; border-radius: 4px; font-size: 16px; box-sizing: border-box; } .hr-input-group .help-text { font-size: 12px; color: #6c757d; margin-top: 5px; } .hr-btn { background-color: #e74c3c; color: white; border: none; padding: 15px 30px; font-size: 18px; font-weight: bold; border-radius: 5px; cursor: pointer; width: 100%; transition: background-color 0.3s; } .hr-btn:hover { background-color: #c0392b; } .hr-results { margin-top: 30px; display: none; border-top: 2px solid #e9ecef; padding-top: 20px; } .hr-stat-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; margin-bottom: 25px; } .hr-stat-box { background: white; padding: 15px; border-radius: 6px; border: 1px solid #dee2e6; text-align: center; } .hr-stat-label { font-size: 13px; text-transform: uppercase; color: #7f8c8d; letter-spacing: 1px; } .hr-stat-value { font-size: 28px; font-weight: 800; color: #2c3e50; margin-top: 5px; } .hr-zone-table { width: 100%; border-collapse: collapse; margin-top: 20px; background: white; border-radius: 6px; overflow: hidden; } .hr-zone-table th, .hr-zone-table td { padding: 12px 15px; text-align: left; border-bottom: 1px solid #e9ecef; } .hr-zone-table th { background-color: #2c3e50; color: white; font-weight: 600; } .hr-zone-table tr:last-child td { border-bottom: none; } .zone-color { width: 15px; height: 15px; display: inline-block; border-radius: 50%; margin-right: 10px; } .hr-content h2 { color: #2c3e50; border-bottom: 2px solid #e74c3c; padding-bottom: 10px; margin-top: 40px; } .hr-content h3 { color: #34495e; margin-top: 30px; } .formula-box { background: #ecf0f1; padding: 15px; border-left: 4px solid #3498db; font-family: monospace; margin: 20px 0; } @media (max-width: 600px) { .hr-stat-grid { grid-template-columns: 1fr; } }

How to Calculate Heart Rate Zones (Calculator)

Understanding your heart rate is essential for effective training and cardiovascular health. Whether you are an elite athlete or just starting your fitness journey, knowing your Maximum Heart Rate (MHR) and training zones helps you exercise at the right intensity. Use the calculator below to determine your target heart rate zones using the Karvonen method.

Measure your pulse for 60 seconds while lying in bed in the morning. If unknown, leave blank (Standard Formula will be used).
Maximum Heart Rate (MHR)
— BPM
Heart Rate Reserve
— BPM

Target Training Zones

Zone Intensity Target Range (BPM) Benefit

How to Calculate Your Heart Rate Manually

Before you can use formulas, you need to know how to measure your current heart rate. The most common manual method is checking your radial pulse.

  1. Turn your hand over so your palm faces up.
  2. Place two fingertips (index and middle finger) on the thumb side of your wrist.
  3. Feel for a pulsing sensation.
  4. Count the beats for exactly 15 seconds.
  5. Multiply that number by 4 to get your Beats Per Minute (BPM).

The Mathematics: Standard vs. Karvonen Formula

There are two primary ways to calculate target heart rate zones. This calculator uses the Karvonen formula if you provide a resting heart rate, as it is considered more accurate for individuals with varying fitness levels.

1. The Standard Method (Maximum Heart Rate)

This is the simplest method and is purely based on age. It does not account for individual fitness levels.

MHR = 220 – Age
Target HR = MHR × Intensity Percentage

Example: For a 40-year-old wanting to train at 70% intensity:
220 – 40 = 180 (MHR)
180 × 0.70 = 126 BPM.

2. The Karvonen Method (Heart Rate Reserve)

This method incorporates your Resting Heart Rate (RHR), giving a more personalized target range. It calculates the "Heart Rate Reserve" (HRR), which is the difference between your max and resting rates.

MHR = 220 – Age
HRR = MHR – Resting Heart Rate
Target HR = (HRR × Intensity Percentage) + Resting Heart Rate

Example: For a 40-year-old with a resting heart rate of 60 BPM aiming for 70% intensity:
MHR: 180
HRR: 180 – 60 = 120
Calculation: (120 × 0.70) + 60 = 84 + 60 = 144 BPM.

Note: The Karvonen result (144 BPM) is significantly higher than the standard result (126 BPM) because it accounts for the athlete's baseline fitness.

Understanding Heart Rate Zones

  • Zone 1 (50-60%): Very Light. Warm-up, cool-down, and active recovery.
  • Zone 2 (60-70%): Light. The "Fat Burning" zone. Improves basic endurance and fat metabolism.
  • Zone 3 (70-80%): Moderate. Improves aerobic fitness and blood circulation.
  • Zone 4 (80-90%): Hard. Increases maximum performance capacity for shorter sessions.
  • Zone 5 (90-100%): Maximum. Develops maximum performance and speed. Sustainable for only short bursts.
function calculateHeartRateZones() { // 1. Get Inputs var ageInput = document.getElementById('hr_age'); var restingInput = document.getElementById('hr_resting'); var displayMHR = document.getElementById('display_mhr'); var displayReserve = document.getElementById('display_reserve'); var resultsArea = document.getElementById('hr_results_area'); var tableBody = document.getElementById('zone_table_body'); var methodText = document.getElementById('method_used_text'); var age = parseFloat(ageInput.value); var restingHR = parseFloat(restingInput.value); // 2. Validation if (isNaN(age) || age 120) { alert("Please enter a valid age between 1 and 120."); return; } // 3. Logic Setup var maxHeartRate = 220 – age; var useKarvonen = false; var hrReserve = 0; // Check if resting HR is provided and valid if (!isNaN(restingHR) && restingHR > 30 && restingHR < 200) { useKarvonen = true; hrReserve = maxHeartRate – restingHR; } else { // Reset to 0 if invalid or empty to use standard formula restingHR = 0; } // 4. Update Header Stats displayMHR.innerHTML = Math.round(maxHeartRate) + " BPM"; if (useKarvonen) { displayReserve.innerHTML = Math.round(hrReserve) + " BPM"; displayReserve.parentElement.style.display = "block"; methodText.innerHTML = "Calculated using the Karvonen Formula (Best for accuracy)."; } else { displayReserve.parentElement.style.display = "none"; methodText.innerHTML = "Calculated using the Standard Formula (Resting Heart Rate not provided)."; } // 5. Define Zones var zones = [ { name: "Zone 1", percentMin: 0.50, percentMax: 0.60, color: "#a8e6cf", benefit: "Warm up / Recovery" }, { name: "Zone 2", percentMin: 0.60, percentMax: 0.70, color: "#dcedc1", benefit: "Fat Burning & Endurance" }, { name: "Zone 3", percentMin: 0.70, percentMax: 0.80, color: "#ffd3b6", benefit: "Aerobic Fitness" }, { name: "Zone 4", percentMin: 0.80, percentMax: 0.90, color: "#ffaaa5", benefit: "Anaerobic Performance" }, { name: "Zone 5", percentMin: 0.90, percentMax: 1.00, color: "#ff8b94", benefit: "Maximum Effort" } ]; // 6. Build Table HTML var tableHTML = ""; for (var i = 0; i < zones.length; i++) { var z = zones[i]; var lowerBPM, upperBPM; if (useKarvonen) { // (HRR * %) + RHR lowerBPM = Math.round((hrReserve * z.percentMin) + restingHR); upperBPM = Math.round((hrReserve * z.percentMax) + restingHR); } else { // MHR * % lowerBPM = Math.round(maxHeartRate * z.percentMin); upperBPM = Math.round(maxHeartRate * z.percentMax); } tableHTML += ""; tableHTML += "" + z.name + ""; tableHTML += "" + (z.percentMin * 100) + "% – " + (z.percentMax * 100) + "%"; tableHTML += "" + lowerBPM + " – " + upperBPM + " BPM"; tableHTML += "" + z.benefit + ""; tableHTML += ""; } tableBody.innerHTML = tableHTML; resultsArea.style.display = "block"; }

Leave a Comment