Understanding your heart rate zones is crucial for effective and safe exercise. Training within specific heart rate zones allows you to target different physiological systems, whether you're aiming for fat burning, aerobic capacity improvement, or peak performance. This calculator helps you determine your target heart rate zones based on your age and resting heart rate.
Your Heart Rate Training Zones:
Maximum Heart Rate (MHR): bpm
Zone 1: Very Light (50-60% of MHR): bpm
Zone 2: Light (60-70% of MHR): bpm
Zone 3: Moderate (70-80% of MHR): bpm
Zone 4: Hard (80-90% of MHR): bpm
Zone 5: Maximum (90-100% of MHR): bpm
function calculateHeartRateZones() {
var age = document.getElementById("age").value;
var restingHeartRate = document.getElementById("restingHeartRate").value;
var mhr = document.getElementById("mhr");
var zone1 = document.getElementById("zone1");
var zone2 = document.getElementById("zone2");
var zone3 = document.getElementById("zone3");
var zone4 = document.getElementById("zone4");
var zone5 = document.getElementById("zone5");
if (age === "" || restingHeartRate === "") {
alert("Please enter both age and resting heart rate.");
return;
}
age = parseInt(age);
restingHeartRate = parseInt(restingHeartRate);
if (isNaN(age) || isNaN(restingHeartRate)) {
alert("Please enter valid numbers for age and resting heart rate.");
return;
}
// Karvonen Formula for Heart Rate Reserve (HRR)
var heartRateReserve = (220 – age) – restingHeartRate; // Using the simple 220-age for MHR estimation
// Calculate Maximum Heart Rate (MHR) – simple estimation
var maxHeartRate = 220 – age;
mhr.textContent = maxHeartRate.toFixed(0);
// Calculate Training Zones based on MHR
var zone1Lower = (maxHeartRate * 0.50);
var zone1Upper = (maxHeartRate * 0.60);
var zone2Lower = (maxHeartRate * 0.60);
var zone2Upper = (maxHeartRate * 0.70);
var zone3Lower = (maxHeartRate * 0.70);
var zone3Upper = (maxHeartRate * 0.80);
var zone4Lower = (maxHeartRate * 0.80);
var zone4Upper = (maxHeartRate * 0.90);
var zone5Lower = (maxHeartRate * 0.90);
var zone5Upper = maxHeartRate; // 100% of MHR
zone1.textContent = zone1Lower.toFixed(0) + " – " + zone1Upper.toFixed(0);
zone2.textContent = zone2Lower.toFixed(0) + " – " + zone2Upper.toFixed(0);
zone3.textContent = zone3Lower.toFixed(0) + " – " + zone3Upper.toFixed(0);
zone4.textContent = zone4Lower.toFixed(0) + " – " + zone4Upper.toFixed(0);
zone5.textContent = zone5Lower.toFixed(0) + " – " + zone5Upper.toFixed(0);
}