Optional. If entered, we use the Karvonen formula for higher accuracy. If left blank, we use the standard Max HR method.
0
Max HR (bpm)
N/A
HR Reserve
Zone
Intensity
Target Range (bpm)
Benefit
Optimizing Performance: How to Calculate Heart Rate Training Ranges
Training "smarter, not harder" often comes down to understanding your body's physiology. Calculating your heart rate training ranges allows you to target specific metabolic systems, whether you are aiming to burn fat, build endurance, or increase your anaerobic threshold. Rather than guessing your exertion level, using data-driven zones ensures every workout serves a specific purpose.
The Logic Behind the Calculator
This calculator utilizes two primary methods depending on the data you provide:
Standard Method (Max Heart Rate): This is the simplest estimation, calculated as 220 minus your age. While useful for beginners, it does not account for individual fitness levels.
Karvonen Formula (Heart Rate Reserve): If you input your Resting Heart Rate (RHR), the calculator switches to this advanced method. The logic is: Target HR = ((Max HR - Resting HR) × %Intensity) + Resting HR. This formula is widely regarded by physiologists as more accurate because it factors in your cardiovascular baseline.
Understanding the 5 Training Zones
Heart rate training is generally divided into five zones, each corresponding to a percentage of your maximum capacity:
Zone 1 (50-60% – Very Light): Often called the "Recovery Zone." Training here improves overall health and helps muscles recover after intense sessions. It feels almost effortless.
Zone 2 (60-70% – Light): The "Fat Burning Zone." Here, your body becomes more efficient at oxidizing fat for fuel. It builds your aerobic base and endurance. You should be able to hold a conversation easily.
Zone 3 (70-80% – Moderate): The "Aerobic Zone." This improves blood circulation and skeletal muscle efficiency. Breathing becomes heavier, and conversation requires more effort.
Zone 4 (80-90% – Hard): The "Anaerobic Threshold." You are training your body to tolerate lactic acid. This improves high-speed endurance. Conversation is difficult; you can only speak in short phrases.
Zone 5 (90-100% – Maximum): The "Red Line." Used for short bursts (interval training). This improves maximum speed and power output but can only be sustained for very short periods.
Why Resting Heart Rate Matters
Your Resting Heart Rate (RHR) is a strong indicator of cardiovascular fitness. A lower RHR generally indicates a more efficient heart and better aerobic fitness. By including your RHR in the calculation (the Karvonen method), the training zones are adjusted upward to reflect your fitness level. For example, a fit athlete with a low RHR will have a higher training threshold than a sedentary individual of the same age, even if their maximum heart rates are identical.
When to Recalculate
You should revisit this calculator every few months. As you get fitter, your Resting Heart Rate will likely decrease, and your ability to sustain higher intensities will improve. Adjusting your zones ensures you continue to push your body progressively without overtraining.
function calculateHeartZones() {
// 1. Get Inputs
var ageInput = document.getElementById('calc-age');
var rhrInput = document.getElementById('calc-rhr');
var resultArea = document.getElementById('hr-result-area');
var age = parseFloat(ageInput.value);
var rhr = parseFloat(rhrInput.value);
// 2. Validation
if (isNaN(age) || age 120) {
alert("Please enter a valid age between 10 and 120.");
return;
}
// 3. Logic Setup
// Standard Max HR Formula (Fox formula)
var maxHR = 220 – age;
var useKarvonen = false;
var hrReserve = 0;
// Check if RHR is valid for Karvonen method
if (!isNaN(rhr) && rhr > 0 && rhr = maxHR) {
alert("Resting Heart Rate cannot be higher than Maximum Heart Rate.");
return;
}
// 4. Update Header Stats
document.getElementById('res-mhr').innerText = maxHR;
document.getElementById('res-hrr').innerText = useKarvonen ? hrReserve : "N/A";
// 5. Zone Calculations
// Percents for the 5 zones:
// Z1: 50-60%, Z2: 60-70%, Z3: 70-80%, Z4: 80-90%, Z5: 90-100%
var zones = [
{ id: 1, minPct: 0.50, maxPct: 0.60, name: "Recovery", benefit: "Warm up, Cooldown, Recovery", css: "zone-1" },
{ id: 2, minPct: 0.60, maxPct: 0.70, name: "Aerobic / Fat Burn", benefit: "Basic Endurance, Fat Metabolism", css: "zone-2" },
{ id: 3, minPct: 0.70, maxPct: 0.80, name: "Tempo / Aerobic", benefit: "Aerobic Capacity, Stamina", css: "zone-3" },
{ id: 4, minPct: 0.80, maxPct: 0.90, name: "Threshold", benefit: "High Speed Endurance, Lactic Tolerance", css: "zone-4" },
{ id: 5, minPct: 0.90, maxPct: 1.00, name: "VO2 Max", benefit: "Max Power, Speed (Short Bursts)", css: "zone-5" }
];
var tableBody = document.getElementById('zone-table-body');
tableBody.innerHTML = ""; // Clear previous results
for (var i = 0; i < zones.length; i++) {
var z = zones[i];
var minBPM, maxBPM;
if (useKarvonen) {
// Karvonen: (HRR * %) + RHR
minBPM = Math.round((hrReserve * z.minPct) + rhr);
maxBPM = Math.round((hrReserve * z.maxPct) + rhr);
} else {
// Standard: MaxHR * %
minBPM = Math.round(maxHR * z.minPct);
maxBPM = Math.round(maxHR * z.maxPct);
}
// Construct Table Row
var row = "