VO₂ Max is widely considered the gold standard for measuring cardiovascular fitness and aerobic endurance. It represents the maximum amount of oxygen your body can utilize during intense exercise. While clinical tests with gas masks and treadmills are the most accurate way to measure this metric, they are expensive and inaccessible for most people.
Fortunately, researchers have established a strong correlation between your Resting Heart Rate (RHR) and your aerobic capacity. This calculator uses the Uth-Sørensen-Overgaard-Pedersen estimation method, which provides a reliable approximation of your VO₂ Max based on your age and resting pulse.
The Formula:
VO₂ Max ≈ 15.3 × (Maximum Heart Rate / Resting Heart Rate) Where Maximum Heart Rate is estimated as: 220 – Age
How to Measure Resting Heart Rate Accurately
The accuracy of this calculator depends entirely on the accuracy of your RHR input. For the best results, follow these steps:
Timing is Key: Measure your pulse immediately after waking up in the morning, before getting out of bed.
Relax: Ensure you haven't consumed caffeine or engaged in stressful activities.
Find your Pulse: Place your index and middle fingers on your wrist (radial artery) or the side of your neck (carotid artery).
Count: Count the beats for 60 seconds, or count for 15 seconds and multiply by 4.
Average: For the most precise number, take the average over 3 consecutive mornings.
Interpreting Your VO₂ Max Score
VO₂ Max is measured in milliliters of oxygen used in one minute per kilogram of body weight (ml/kg/min). Higher numbers generally indicate better cardiovascular fitness. Scores vary significantly by age and gender.
General Classification for Men
Age
Poor
Fair
Good
Excellent
Superior
20-29
< 38
38-43
44-51
52-56
> 56
30-39
< 34
34-39
40-47
48-51
> 51
40-49
< 30
30-35
36-43
44-47
> 47
General Classification for Women
Age
Poor
Fair
Good
Excellent
Superior
20-29
< 28
28-32
33-41
42-46
> 46
30-39
< 26
26-30
31-39
40-44
> 44
40-49
< 24
24-28
29-37
38-42
> 42
Factors Affecting Results
While the Resting Heart Rate method is a convenient estimation tool, several factors can influence the results:
Genetics: Some individuals naturally have lower resting heart rates regardless of fitness level.
Medication: Beta-blockers and other medications can artificially lower heart rate.
Fatigue & Stress: Lack of sleep or high stress levels can elevate RHR, resulting in a lower estimated VO₂ Max.
This calculator is best used to track trends over time. If your calculated VO₂ Max increases month over month as you exercise, your fitness is improving.
function calculateVO2() {
// 1. Get Input Values by ID
var gender = document.getElementById("inputGender").value;
var age = parseFloat(document.getElementById("inputAge").value);
var rhr = parseFloat(document.getElementById("inputRHR").value);
// 2. Validate Inputs
if (isNaN(age) || age 120) {
alert("Please enter a valid age between 1 and 120.");
return;
}
if (isNaN(rhr) || rhr 200) {
alert("Please enter a valid resting heart rate between 20 and 200 bpm.");
return;
}
// 3. Calculation Logic
// Formula: VO2 Max = 15.3 * (MHR / RHR)
// MHR (Max Heart Rate) = 220 – Age
var mhr = 220 – age;
var vo2Max = 15.3 * (mhr / rhr);
// Round to 1 decimal place
vo2Max = Math.round(vo2Max * 10) / 10;
// 4. Determine Fitness Rating
var rating = getFitnessRating(gender, age, vo2Max);
// 5. Display Results
document.getElementById("displayMHR").innerHTML = mhr + " bpm";
document.getElementById("displayVO2″).innerHTML = vo2Max + " ml/kg/min";
document.getElementById("displayRating").innerHTML = rating;
// Show result container
document.getElementById("result-container").style.display = "block";
}
function getFitnessRating(gender, age, vo2) {
// Simplified lookup logic based on Cooper Institute data
var score = "Average";
if (gender === "male") {
if (age = 57) score = "Superior";
else if (vo2 >= 52) score = "Excellent";
else if (vo2 >= 44) score = "Good";
else if (vo2 >= 38) score = "Fair";
else score = "Poor";
} else if (age = 52) score = "Superior";
else if (vo2 >= 47) score = "Excellent";
else if (vo2 >= 40) score = "Good";
else if (vo2 >= 34) score = "Fair";
else score = "Poor";
} else if (age = 49) score = "Superior";
else if (vo2 >= 44) score = "Excellent";
else if (vo2 >= 36) score = "Good";
else if (vo2 >= 30) score = "Fair";
else score = "Poor";
} else if (age = 44) score = "Superior";
else if (vo2 >= 40) score = "Excellent";
else if (vo2 >= 32) score = "Good";
else if (vo2 >= 26) score = "Fair";
else score = "Poor";
} else {
if (vo2 >= 40) score = "Superior";
else if (vo2 >= 35) score = "Excellent";
else if (vo2 >= 28) score = "Good";
else if (vo2 >= 22) score = "Fair";
else score = "Poor";
}
} else { // Female
if (age = 47) score = "Superior";
else if (vo2 >= 42) score = "Excellent";
else if (vo2 >= 33) score = "Good";
else if (vo2 >= 28) score = "Fair";
else score = "Poor";
} else if (age = 45) score = "Superior";
else if (vo2 >= 40) score = "Excellent";
else if (vo2 >= 31) score = "Good";
else if (vo2 >= 26) score = "Fair";
else score = "Poor";
} else if (age = 43) score = "Superior";
else if (vo2 >= 38) score = "Excellent";
else if (vo2 >= 29) score = "Good";
else if (vo2 >= 24) score = "Fair";
else score = "Poor";
} else if (age = 39) score = "Superior";
else if (vo2 >= 34) score = "Excellent";
else if (vo2 >= 26) score = "Good";
else if (vo2 >= 22) score = "Fair";
else score = "Poor";
} else {
if (vo2 >= 36) score = "Superior";
else if (vo2 >= 31) score = "Excellent";
else if (vo2 >= 23) score = "Good";
else if (vo2 >= 20) score = "Fair";
else score = "Poor";
}
}
return score;
}