Method 2: % Heart Rate Reserve (Karvonen)More accurate for fit individuals
Zone
Intensity
Range (BPM)
Description
How Does Garmin Calculate Heart Rate Zones?
Garmin devices use heart rate zones to help users gauge the intensity of their physical activity. Understanding how these zones are calculated is crucial for training effectively, whether you are aiming for fat loss, endurance, or maximum performance. Garmin typically offers three distinct methods for calculating these zones within the Garmin Connect ecosystem.
1. Percentage of Maximum Heart Rate (% Max HR)
This is the default setting for most new Garmin devices. It calculates your zones purely based on your maximum heart rate (MHR). If you have not entered a custom maximum heart rate, Garmin usually estimates it using the formula 220 - Age.
Zone 1 (Warm Up): 50–60% of Max HR
Zone 2 (Easy): 60–70% of Max HR
Zone 3 (Aerobic): 70–80% of Max HR
Zone 4 (Threshold): 80–90% of Max HR
Zone 5 (Maximum): 90–100% of Max HR
2. Percentage of Heart Rate Reserve (% HRR)
Also known as the Karvonen formula, this method is often considered more accurate for individuals with a high fitness level or a low resting heart rate. It takes into account the "reserve" capacity of your heart—the difference between your Maximum Heart Rate and your Resting Heart Rate.
The formula for a specific percentage is: Target HR = [(Max HR – Resting HR) × % Intensity] + Resting HR
Using % HRR often results in slightly higher BPM requirements for lower zones compared to the standard % Max HR method, preventing undertraining.
3. Percentage of Lactate Threshold Heart Rate (% LTHR)
Advanced Garmin watches (like the Forerunner and Fenix series) can detect your Lactate Threshold—the point where lactate begins to accumulate in the bloodstream faster than it can be removed. Training zones based on LTHR are highly effective for competitive runners and cyclists. To use this method, you generally need to perform a guided test with a chest strap monitor.
Zone 1: 65–80% of LTHR
Zone 2: 80–89% of LTHR
Zone 3: 89–95% of LTHR
Zone 4: 95–100% of LTHR
Zone 5: 100%+ of LTHR
Why Do My Zones Change Automatically?
By default, many Garmin devices have a feature enabled called "Auto Detection." If you record an activity where you hit a new maximum heart rate or a new lactate threshold, the device will automatically update your profile and recalculate your zones to ensure your training data remains accurate.
function estimateMaxHR() {
var ageInput = document.getElementById('userAge').value;
var maxHrInput = document.getElementById('maxHeartRate');
// Only auto-fill if Max HR is empty and Age is valid
if (ageInput && !maxHrInput.value) {
var estimatedMax = 220 – parseInt(ageInput);
if (estimatedMax > 0) {
maxHrInput.value = estimatedMax;
}
}
}
function calculateGarminZones() {
// 1. Get Inputs
var age = parseInt(document.getElementById('userAge').value);
var maxHR = parseInt(document.getElementById('maxHeartRate').value);
var restingHR = parseInt(document.getElementById('restingHeartRate').value);
var errorDisplay = document.getElementById('error-display');
var resultsArea = document.getElementById('results-area');
var hrrSection = document.getElementById('hrr-section');
// 2. Validation
if (!maxHR || isNaN(maxHR)) {
// Try to calc from age if maxHR missing
if (age && !isNaN(age)) {
maxHR = 220 – age;
document.getElementById('maxHeartRate').value = maxHR;
} else {
errorDisplay.style.display = 'block';
errorDisplay.innerHTML = 'Please enter a Max Heart Rate or your Age.';
resultsArea.style.display = 'none';
return;
}
}
errorDisplay.style.display = 'none';
resultsArea.style.display = 'block';
// 3. Define Zones percentages
// Garmin Standard: Z1: 50-60, Z2: 60-70, Z3: 70-80, Z4: 80-90, Z5: 90-100
var zones = [
{ name: 'Zone 1', intensity: '50% – 60%', minPct: 0.50, maxPct: 0.60, desc: 'Warm Up / Recovery', css: 'zone-1' },
{ name: 'Zone 2', intensity: '60% – 70%', minPct: 0.60, maxPct: 0.70, desc: 'Easy / Fat Burning', css: 'zone-2' },
{ name: 'Zone 3', intensity: '70% – 80%', minPct: 0.70, maxPct: 0.80, desc: 'Aerobic / Endurance', css: 'zone-3' },
{ name: 'Zone 4', intensity: '80% – 90%', minPct: 0.80, maxPct: 0.90, desc: 'Threshold / Hard', css: 'zone-4' },
{ name: 'Zone 5', intensity: '90% – 100%', minPct: 0.90, maxPct: 1.00, desc: 'Maximum / VO2 Max', css: 'zone-5' }
];
// 4. Calculate Method 1: % Max HR
var htmlMaxHR = ";
for (var i = 0; i 0) minBpm = Math.round(maxHR * zones[i-1].maxPct) + 1;
htmlMaxHR += '