If you have performed a max heart rate stress test, enter the value here.
Your Physiology Profile
Estimated Max Heart Rate:–
Heart Rate Reserve (HRR):–
Estimated VO2 Max (Relative):–
Training Zones (Karvonen Method)
Zone
Intensity
Heart Rate Range (bpm)
Benefit
Understanding VO2 Max and Heart Rate Zones
VO2 max is widely considered the gold standard for measuring cardiovascular fitness. It represents the maximum amount of oxygen your body can utilize during intense exercise. While improving your VO2 max requires structured training, knowing your specific heart rate zones is the critical first step to ensuring that training is effective.
This VO2 Max Heart Rate Zone Calculator uses the Karvonen formula (Heart Rate Reserve method) rather than a simple percentage of maximum heart rate. This method is superior for athletes and fitness enthusiasts because it factors in your Resting Heart Rate (RHR), providing a personalized intensity scale that reflects your actual fitness level.
Why Use the Karvonen Formula?
Standard calculators simply take your max heart rate (e.g., 180 bpm) and calculate percentages (e.g., 50% is 90 bpm). However, this ignores the fact that your heart rate never drops to zero while you are alive. Your "floor" is your Resting Heart Rate.
The Logic: If you are fit, you have a lower resting heart rate, which gives you a larger "Heart Rate Reserve" (HRR). The Karvonen formula calculates training zones within this reserve, ensuring that "Zone 2" for a fit individual is appropriately challenging compared to a beginner.
The 5 Heart Rate Training Zones
To improve VO2 max, you must train across different spectrums of intensity. Here is what the zones calculated above represent:
Zone 1 (50-60%): Recovery & Warm-up. This is very light activity used for warming up or recovering from hard interval sessions. It promotes blood flow without inducing fatigue.
Zone 2 (60-70%): Aerobic Base. Often called the "fat burning" zone. Training here builds mitochondrial density and capillary networks. Professional endurance athletes spend 80% of their time here.
Zone 3 (70-80%): Aerobic/Tempo. This is a grey zone—harder than easy running but not hard enough to trigger maximum adaptation. It improves aerobic capacity and rhythm.
Zone 4 (80-90%): Lactate Threshold. This is "comfortably hard." You are training your body to clear lactate as fast as it produces it. This is crucial for sustaining speed over distance.
Zone 5 (90-100%): VO2 Max. This is maximum effort. You can only sustain this for a few minutes. Interval training in this zone is the most direct way to increase your VO2 max ceiling.
How to Estimate VO2 Max from Heart Rate
While a true VO2 max score requires a lab test with a gas mask, it can be estimated using the ratio of your Maximum Heart Rate to your Resting Heart Rate (Uth-Sørensen-Overgaard-Pedersen estimation). The formula used in this calculator for the estimation is:
VO2 Max ≈ 15.3 × (MHR / RHR)
Note that this is a rough estimation. Genetic factors, lung capacity, and muscle efficiency also play significant roles in your actual VO2 max score.
Training Recommendations
To optimize your VO2 max:
Build the Base: Spend 4-6 weeks training primarily in Zone 2 to build structural tolerance.
Polarized Training: Adopt an 80/20 approach. Do 80% of your training in Zone 2, and 20% in Zone 5 (High-Intensity Interval Training).
Rest: Your VO2 max improves during rest, not during the workout. Monitor your Resting Heart Rate; if it spikes, you may be overtraining.
function calculateZones() {
// 1. Get input values
var ageInput = document.getElementById('calc-age');
var rhrInput = document.getElementById('calc-rhr');
var mhrInput = document.getElementById('calc-mhr');
var age = parseFloat(ageInput.value);
var rhr = parseFloat(rhrInput.value);
var mhrCustom = parseFloat(mhrInput.value);
// 2. Validation
if (isNaN(age) && isNaN(mhrCustom)) {
alert("Please enter your Age or a known Max Heart Rate.");
return;
}
if (isNaN(rhr)) {
alert("Please enter your Resting Heart Rate.");
return;
}
if (age 120 || rhr 150) {
alert("Please enter realistic values for Age and Resting Heart Rate.");
return;
}
// 3. Logic: Determine MHR
var mhr;
if (!isNaN(mhrCustom)) {
mhr = mhrCustom;
} else {
// Standard Formula: 220 – Age
mhr = 220 – age;
}
// 4. Logic: Calculate Heart Rate Reserve (HRR)
var hrr = mhr – rhr;
// 5. Logic: Calculate Zones (Karvonen Formula)
// Target HR = (HRR * intensity%) + RHR
function getZoneLimit(percent) {
return Math.round((hrr * percent) + rhr);
}
var z1_min = getZoneLimit(0.50);
var z1_max = getZoneLimit(0.60);
var z2_min = getZoneLimit(0.60); // Overlap slightly or +1? Usually ranges touch.
var z2_max = getZoneLimit(0.70);
var z3_min = getZoneLimit(0.70);
var z3_max = getZoneLimit(0.80);
var z4_min = getZoneLimit(0.80);
var z4_max = getZoneLimit(0.90);
var z5_min = getZoneLimit(0.90);
var z5_max = mhr;
// 6. Logic: Estimate VO2 Max (Uth-Sørensen-Overgaard-Pedersen estimation)
// VO2max = 15.3 * (MHR / RHR)
var vo2Est = (15.3 * (mhr / rhr)).toFixed(1);
// 7. Update UI Results
document.getElementById('res-mhr').innerText = mhr + " bpm";
document.getElementById('res-hrr').innerText = hrr + " bpm";
document.getElementById('res-vo2').innerText = vo2Est + " ml/kg/min";
var tableBody = document.getElementById('zone-table-body');
tableBody.innerHTML = ";
// Helper to create row
function createRow(zoneClass, zoneName, intensity, range, benefit) {
return '