Training heart rate zones are ranges of heartbeats per minute (bpm) that correspond to different exercise intensities. Training within these zones helps you achieve specific fitness goals, whether it's improving cardiovascular endurance, burning fat, or boosting anaerobic capacity.
To calculate your training zones, we first need to estimate your Maximum Heart Rate (MHR) and then use your Resting Heart Rate (RHR) to determine your Heart Rate Reserve (HRR).
Maximum Heart Rate (MHR) Estimation:
The most common formula to estimate MHR is: 220 – Age. While this is a general guideline, individual MHR can vary. If you know your actual MHR from a stress test, it's more accurate to use that value.
Heart Rate Reserve (HRR):
HRR is the difference between your MHR and your RHR. It represents the range of heartbeats available for your training. The formula is: HRR = MHR – RHR.
Calculating Training Zones:
Your training zones are calculated as a percentage of your HRR, added to your RHR. Here are the commonly accepted zones:
Zone 1: Very Light (50-60% of HRR) – Ideal for active recovery and warm-ups. Helps build a base and promotes recovery.
Zone 2: Light (60-70% of HRR) – Known as the "fat-burning zone". Excellent for building aerobic endurance and improving cardiovascular health.
Zone 3: Moderate (70-80% of HRR) – Improves aerobic fitness and increases endurance. You'll feel a more challenging workout here.
Zone 4: Hard (80-90% of HRR) – Improves anaerobic threshold and boosts speed and power. This zone is intense.
Zone 5: Maximum (90-100% of HRR) – For very short bursts of maximum effort. Improves peak performance and is highly demanding.
Using this calculator will provide you with personalized heart rate training zones based on your age and resting heart rate, helping you train smarter and more effectively.
function calculateHeartRateZones() {
var age = parseFloat(document.getElementById("age").value);
var restingHeartRate = parseFloat(document.getElementById("restingHeartRate").value);
var maxHeartRateInput = parseFloat(document.getElementById("maxHeartRate").value);
var resultsDiv = document.getElementById("results");
resultsDiv.innerHTML = ""; // Clear previous results
if (isNaN(age) || age 120) {
resultsDiv.innerHTML = "Please enter a valid age.";
return;
}
if (isNaN(restingHeartRate) || restingHeartRate = 220) {
resultsDiv.innerHTML = "Please enter a valid resting heart rate.";
return;
}
var maxHeartRate;
if (isNaN(maxHeartRateInput) || maxHeartRateInput 220) {
// Estimate MHR if not provided or invalid
maxHeartRate = 220 – age;
resultsDiv.innerHTML += "Estimated Max Heart Rate: " + maxHeartRate + " bpm (based on age)";
} else {
maxHeartRate = maxHeartRateInput;
if (maxHeartRate <= restingHeartRate) {
resultsDiv.innerHTML = "Max Heart Rate must be greater than Resting Heart Rate.";
return;
}
}
var heartRateReserve = maxHeartRate – restingHeartRate;
// Define zone percentages
var zone1_lower_pct = 0.50;
var zone1_upper_pct = 0.60;
var zone2_lower_pct = 0.60;
var zone2_upper_pct = 0.70;
var zone3_lower_pct = 0.70;
var zone3_upper_pct = 0.80;
var zone4_lower_pct = 0.80;
var zone4_upper_pct = 0.90;
var zone5_lower_pct = 0.90;
var zone5_upper_pct = 1.00;
// Calculate zone ranges
var zone1_lower = restingHeartRate + (heartRateReserve * zone1_lower_pct);
var zone1_upper = restingHeartRate + (heartRateReserve * zone1_upper_pct);
var zone2_lower = restingHeartRate + (heartRateReserve * zone2_lower_pct);
var zone2_upper = restingHeartRate + (heartRateReserve * zone2_upper_pct);
var zone3_lower = restingHeartRate + (heartRateReserve * zone3_lower_pct);
var zone3_upper = restingHeartRate + (heartRateReserve * zone3_upper_pct);
var zone4_lower = restingHeartRate + (heartRateReserve * zone4_lower_pct);
var zone4_upper = restingHeartRate + (heartRateReserve * zone4_upper_pct);
var zone5_lower = restingHeartRate + (heartRateReserve * zone5_lower_pct);
var zone5_upper = restingHeartRate + (heartRateReserve * zone5_upper_pct);
var htmlOutput = "