Required for Heart Rate Reserve (Karvonen) calculations.
% of Max Heart Rate (Garmin Default)
% of Heart Rate Reserve (Karvonen)
"Reserve" is more accurate for athletes with low resting HR.
Your Training Zones
Based on Max HR: BPM
Zone
Intensity
Range (BPM)
function calculateGarminZones() {
var ageInput = document.getElementById('ghr_age').value;
var maxHrInput = document.getElementById('ghr_max').value;
var restHrInput = document.getElementById('ghr_rest').value;
var method = document.getElementById('ghr_method').value;
var resultDiv = document.getElementById('ghr-result');
var tableBody = document.getElementById('ghr-table-body');
var displayMaxHr = document.getElementById('display-max-hr');
// Validation and Parsing
var age = parseFloat(ageInput);
var maxHr = parseFloat(maxHrInput);
var restHr = parseFloat(restHrInput);
// Determine Max HR
if (isNaN(maxHr)) {
if (isNaN(age)) {
alert("Please enter your age or a known Max Heart Rate.");
return;
}
maxHr = 220 – age;
}
// Validate Resting HR if Karvonen selected
if (method === 'hrr' && (isNaN(restHr) || restHr <= 0)) {
alert("Please enter a valid Resting Heart Rate to use the Heart Rate Reserve method.");
return;
}
// Validate Max HR logic
if (maxHr 250) {
alert("Please enter a valid Max Heart Rate.");
return;
}
if (method === 'hrr' && restHr >= maxHr) {
alert("Resting Heart Rate cannot be higher than or equal to Max Heart Rate.");
return;
}
// Clear previous results
tableBody.innerHTML = ";
displayMaxHr.innerText = Math.round(maxHr);
// Zone Definitions (Garmin Standard)
// Zone 1: 50-60%, Zone 2: 60-70%, Zone 3: 70-80%, Zone 4: 80-90%, Zone 5: 90-100%
var zones = [
{ id: 1, name: "Warm Up", minPct: 0.50, maxPct: 0.60, colorClass: "ghr-zone-1" },
{ id: 2, name: "Easy", minPct: 0.60, maxPct: 0.70, colorClass: "ghr-zone-2" },
{ id: 3, name: "Aerobic", minPct: 0.70, maxPct: 0.80, colorClass: "ghr-zone-3" },
{ id: 4, name: "Threshold", minPct: 0.80, maxPct: 0.90, colorClass: "ghr-zone-4" },
{ id: 5, name: "Maximum", minPct: 0.90, maxPct: 1.00, colorClass: "ghr-zone-5" }
];
var hrr = maxHr – restHr;
for (var i = 0; i < zones.length; i++) {
var zone = zones[i];
var minBpm, maxBpm;
if (method === 'hrr') {
// Karvonen Formula: (HRR * %) + RestHR
minBpm = Math.round((hrr * zone.minPct) + restHr);
maxBpm = Math.round((hrr * zone.maxPct) + restHr);
} else {
// Standard % of Max HR
minBpm = Math.round(maxHr * zone.minPct);
maxBpm = Math.round(maxHr * zone.maxPct);
}
// Fix overlap for display (e.g. 130-140, next starts at 141)
// Ideally standard charts overlap numbers, but for clarity let's just show range
// We usually ensure the start of next zone is +1 of previous end if we want strict buckets,
// but standard charts usually say 50-60% then 60-70%. We will stick to math result.
var row = '
Understanding your heart rate zones is the most effective way to improve your fitness, whether you are training for a marathon using a Garmin Forerunner or simply tracking your daily health with a Venu or Fenix. Your Garmin device uses these zones to calculate training load, recovery time, and caloric burn.
Why Use a Heart Rate Zone Calculator?
While most Garmin devices automatically estimate your zones based on your age, these default settings are often generic averages. To get the most out of your "Zone 2" training or high-intensity intervals, you need zones tailored to your specific physiology. Configuring your Garmin Connect profile with accurate numbers ensures that your training status (Productive, Maintaining, or Overreaching) is calculated correctly.
The Two Primary Calculation Methods
This calculator supports the two most common methods used in Garmin Connect:
% of Max Heart Rate (BPM): This is the default setting on most watches. It calculates zones purely as a percentage of your maximum heart rate. It is simple but can sometimes prescribe zones that are too low for fit individuals.
% of Heart Rate Reserve (Karvonen): This method is highly recommended for athletes. It takes your Resting Heart Rate (RHR) into account. The formula is: Target HR = ((Max HR - Resting HR) * %Intensity) + Resting HR. This creates a more personalized range that reflects your actual cardiovascular fitness.
Breakdown of Garmin Heart Rate Zones
Garmin divides intensity into five specific zones. Here is what they mean for your training:
Zone 1 (Warm Up): 50-60% – Very light effort. Used for warm-ups, cool-downs, and active recovery. You should be able to hold a conversation easily.
Zone 2 (Easy): 60-70% – The "fat burning" zone. This is where you build endurance and capillary density. Serious runners spend 80% of their time here.
Zone 3 (Aerobic): 70-80% – Moderate effort. Improves blood circulation and skeletal muscle efficiency. Often referred to as "grey zone" training if done too often.
Zone 4 (Threshold): 80-90% – Hard effort. You are running near your lactate threshold. Muscles begin to fatigue, and breathing becomes heavy.
Zone 5 (Maximum): 90-100% – All-out effort. Sustainable for only very short periods (sprints). Builds maximum speed and neuromuscular power.
How to Update Zones in Garmin Connect
Once you have calculated your custom zones above, you should update them in your Garmin ecosystem:
Open the Garmin Connect App on your phone.
Go to More (iOS) or the Menu (Android).
Select Garmin Devices and choose your watch.
Select User Profile > Heart Rate & Power Zones.
Select Heart Rate. You can enter your specific Max HR and Resting HR here.
Tap Zones to manually input the BPM values calculated above, or change the method to "% of Heart Rate Reserve" to let Garmin do the math using your Resting HR.