Garmin Heart Rate Zone Calculator
Age
Resting Heart Rate (BPM)
Max Heart Rate (BPM) (Leave as 0 to auto-calculate via 220-age)
Calculate Zones
Your Garmin HR Zones (HRR Method)
Zone
Intensity
BPM Range
Effort
How to Calculate Heart Rate Zones for Garmin Devices
Garmin devices use heart rate zones to help you measure the intensity of your workouts. While Garmin provides default zones based on a percentage of your maximum heart rate, many athletes prefer the Heart Rate Reserve (HRR) or Karvonen method for better accuracy.
The Calculation Logic
This calculator uses the Karvonen Formula, which takes into account your resting heart rate. This is often more accurate than simple percentages because it reflects your current fitness level. The steps are:
Max Heart Rate: Usually calculated as 220 minus your age.
Heart Rate Reserve (HRR): Max Heart Rate minus Resting Heart Rate.
Target Zone: (HRR × Percentage) + Resting Heart Rate.
What do the Garmin Zones mean?
Zone 1 (Warm Up): 50–60% of HRR. Relaxed pace, easy breathing.
Zone 2 (Easy): 60–70% of HRR. Comfortable pace, slightly deeper breathing, conversation possible.
Zone 3 (Aerobic): 70–80% of HRR. Moderate pace, more difficult to hold conversation.
Zone 4 (Threshold): 80–90% of HRR. Fast pace and uncomfortable; breathing is forceful.
Zone 5 (Maximum): 90–100% of HRR. Sprints, unsustainable for long periods.
Example Calculation
If you are 40 years old with a resting heart rate of 60 BPM:
Max HR: 220 – 40 = 180 BPM.
HRR: 180 – 60 = 120 BPM.
Zone 2 Lower Limit: (120 × 0.60) + 60 = 132 BPM.
function calculateGarminZones() {
var age = parseFloat(document.getElementById('garminAge').value);
var restingHR = parseFloat(document.getElementById('restingHR').value);
var manualMaxHR = parseFloat(document.getElementById('maxHR').value);
if (isNaN(age) || isNaN(restingHR)) {
alert("Please enter valid numbers for age and resting heart rate.");
return;
}
var maxHR = manualMaxHR > 0 ? manualMaxHR : (220 – age);
var hrr = maxHR – restingHR;
if (hrr <= 0) {
alert("Resting HR cannot be higher than Max HR. Please check your inputs.");
return;
}
var zones = [
{ name: "Zone 1", label: "Warm Up", min: 0.50, max: 0.60, color: "#d1d1d1" },
{ name: "Zone 2", label: "Easy", min: 0.60, max: 0.70, color: "#33b5e5" },
{ name: "Zone 3", label: "Aerobic", min: 0.70, max: 0.80, color: "#00c851" },
{ name: "Zone 4", label: "Threshold", min: 0.80, max: 0.90, color: "#ffbb33" },
{ name: "Zone 5", label: "Maximum", min: 0.90, max: 1.00, color: "#ff4444" }
];
var tableBody = document.getElementById('zoneTableBody');
tableBody.innerHTML = "";
for (var i = 0; i < zones.length; i++) {
var z = zones[i];
var lowBPM = Math.round((hrr * z.min) + restingHR);
var highBPM = Math.round((hrr * z.max) + restingHR);
var row = document.createElement('tr');
row.innerHTML = '
' + z.name + ' ' +
'
' + z.label + ' ' +
'
' + lowBPM + ' – ' + highBPM + ' BPM ' +
'
' + (z.min * 100) + '% – ' + (z.max * 100) + '% HRR ';
tableBody.appendChild(row);
}
document.getElementById('hrResults').style.display = "block";
document.getElementById('hrResults').scrollIntoView({ behavior: 'smooth' });
}