Calculator for Heart Rate Zones

.hr-calculator-container { font-family: 'Segoe UI', Roboto, Helvetica, Arial, sans-serif; max-width: 800px; margin: 0 auto; padding: 20px; background: #f9fbfd; border: 1px solid #e1e4e8; border-radius: 8px; } .hr-input-group { margin-bottom: 20px; display: flex; flex-direction: column; } .hr-input-group label { font-weight: 600; margin-bottom: 8px; color: #333; } .hr-input-group input { padding: 12px; border: 1px solid #ccc; border-radius: 4px; font-size: 16px; } .hr-btn { background-color: #d32f2f; color: white; padding: 15px 25px; border: none; border-radius: 4px; cursor: pointer; font-size: 18px; font-weight: bold; width: 100%; transition: background-color 0.3s; } .hr-btn:hover { background-color: #b71c1c; } .hr-results { margin-top: 30px; display: none; background: #fff; padding: 20px; border-radius: 6px; box-shadow: 0 2px 5px rgba(0,0,0,0.05); } .hr-results h3 { color: #d32f2f; margin-top: 0; border-bottom: 2px solid #eee; padding-bottom: 10px; } .hr-summary { display: flex; justify-content: space-between; margin-bottom: 20px; background: #ffebee; padding: 15px; border-radius: 4px; } .hr-summary-item strong { display: block; font-size: 14px; color: #555; } .hr-summary-item span { font-size: 24px; font-weight: bold; color: #d32f2f; } .zone-table { width: 100%; border-collapse: collapse; margin-top: 15px; } .zone-table th, .zone-table td { padding: 12px; text-align: left; border-bottom: 1px solid #ddd; } .zone-table th { background-color: #f5f5f5; font-weight: 600; } .zone-badge { padding: 4px 8px; border-radius: 12px; color: white; font-size: 12px; font-weight: bold; } .zone-1 { background-color: #9e9e9e; } /* Gray */ .zone-2 { background-color: #2196f3; } /* Blue */ .zone-3 { background-color: #4caf50; } /* Green */ .zone-4 { background-color: #ff9800; } /* Orange */ .zone-5 { background-color: #f44336; } /* Red */ .hr-article { margin-top: 40px; line-height: 1.6; color: #444; } .hr-article h2 { color: #333; margin-top: 30px; } .hr-article ul { margin-bottom: 20px; }

Heart Rate Zone Calculator

Calculate your maximum heart rate and training zones using your age and resting heart rate.

Providing RHR enables the Karvonen Formula for higher accuracy.

Your Heart Rate Profile

Max Heart Rate bpm
Method Used

Training Zones

Zone Intensity Heart Rate Range (bpm) Benefit

Understanding Heart Rate Zones

Training effectively requires monitoring the intensity of your exercise. Heart rate zones provide a scientifically based framework to gauge effort levels, ensuring you aren't training too hard or too easy for your specific goals. By exercising in different zones, you trigger specific physiological adaptations.

How the Calculation Works

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

  • Standard Max HR Method (Fox Formula): This is the simplest estimation, calculated as 220 - Age. The zones are then simple percentages of this maximum. It is a good starting point for beginners.
  • Karvonen Formula (Heart Rate Reserve): If you input your Resting Heart Rate (RHR), the calculator uses the Karvonen method. This is generally considered more accurate for individuals with varying fitness levels because it accounts for your "Heart Rate Reserve" (the difference between your Max HR and Resting HR).

The 5 Heart Rate Zones Explained

Zone 1: Very Light (50-60%)

Feeling: Very easy, conversational pace.
Benefit: Improves overall health, aids recovery, and helps with warm-up and cool-down. Useful for "active recovery" days.

Zone 2: Light (60-70%)

Feeling: Comfortable, can maintain a conversation but breathing is rhythmic.
Benefit: Improves basic endurance and fat burning. This is the foundation of cardiovascular fitness and increases the body's efficiency at using fat for fuel.

Zone 3: Moderate (70-80%)

Feeling: Moderate effort, harder to hold a conversation, sweating begins.
Benefit: Improves aerobic fitness and blood circulation in skeletal muscles. This is effectively the "aerobic zone" where you build the engine to run or cycle faster for longer.

Zone 4: Hard (80-90%)

Feeling: Hard, heavy breathing, can only speak in short phrases.
Benefit: Increases maximum performance capacity and lactate threshold. This trains your body to sustain high speeds and tolerate higher levels of lactic acid.

Zone 5: Maximum (90-100%)

Feeling: Very hard, gasping for breath, cannot talk.
Benefit: Develops maximum performance and speed (VO2 Max). This zone is usually sustained for very short intervals (sprints) to improve neuromuscular coordination and top-end speed.

When to Re-calculate

You should recalculate your zones if:

  • You have a birthday (Age changes Max HR).
  • Your fitness improves significantly (Resting Heart Rate usually drops).
  • You have not trained for a long period (Resting Heart Rate may rise).
function calculateHeartRateZones() { // 1. Get Inputs var ageInput = document.getElementById("inputAge").value; var rhrInput = document.getElementById("inputRHR").value; // 2. Validate Inputs if (!ageInput || ageInput 30 && rhr < maxHR) { useKarvonen = true; hrr = maxHR – rhr; method = "Karvonen (Heart Rate Reserve)"; } // 4. Update Header Results document.getElementById("displayMaxHR").innerHTML = maxHR; document.getElementById("displayMethod").innerHTML = method; // 5. Calculate Zones // Array structure: [Min%, Max%, ZoneName, BadgeClass, BenefitShort] var zonesData = [ { pctMin: 0.50, pctMax: 0.60, name: "Zone 1", class: "zone-1", benefit: "Warm up / Recovery" }, { pctMin: 0.60, pctMax: 0.70, name: "Zone 2", class: "zone-2", benefit: "Fat Burn / Endurance" }, { pctMin: 0.70, pctMax: 0.80, name: "Zone 3", class: "zone-3", benefit: "Aerobic Fitness" }, { pctMin: 0.80, pctMax: 0.90, name: "Zone 4", class: "zone-4", benefit: "Lactate Threshold" }, { pctMin: 0.90, pctMax: 1.00, name: "Zone 5", class: "zone-5", benefit: "Maximum Performance" } ]; var tableHtml = ""; for (var i = 0; i < zonesData.length; i++) { var zone = zonesData[i]; var minBPM, maxBPM; if (useKarvonen) { // Target Heart Rate = ((max HR − resting HR) × %Intensity) + resting HR minBPM = Math.round((hrr * zone.pctMin) + rhr); maxBPM = Math.round((hrr * zone.pctMax) + rhr); } else { // Standard: Max HR * %Intensity minBPM = Math.round(maxHR * zone.pctMin); maxBPM = Math.round(maxHR * zone.pctMax); } tableHtml += ""; tableHtml += "" + zone.name + ""; tableHtml += "" + Math.round(zone.pctMin * 100) + "% – " + Math.round(zone.pctMax * 100) + "%"; tableHtml += "" + minBPM + " – " + maxBPM + " bpm"; tableHtml += "" + zone.benefit + ""; tableHtml += ""; } // 6. Output to DOM document.getElementById("zoneTableBody").innerHTML = tableHtml; document.getElementById("resultContainer").style.display = "block"; }

Leave a Comment