How to Calculate Vo2 from Heart Rate

VO2 Max Heart Rate Calculator

Estimate your aerobic capacity using the Uth-Sørensen formula

Measure while seated and relaxed.
Estimated: 220 minus your age.
Estimated VO2 Max
0.0
ml/kg/min
Please enter valid positive numbers for both Resting and Maximum Heart Rate.

How to Calculate VO2 Max from Heart Rate

VO2 max is the measurement of the maximum amount of oxygen a person can utilize during intense exercise. It is widely considered the gold standard for measuring cardiovascular fitness. While laboratory tests using gas exchange masks are the most accurate, the Uth-Sørensen-Overgaard-Pedersen formula provides a reliable estimation based on the relationship between resting and maximum heart rate.

The Formula Explained

This calculator uses the following mathematical relationship:

VO2 Max = 15.3 × (Maximum HR / Resting HR)

This formula is based on the ratio between the heart's maximum capacity and its minimum output at rest, scaled by a constant factor of 15.3.

Step-by-Step Calculation Example

If you are 30 years old with a resting heart rate of 60 beats per minute (BPM):

  1. Find Maximum HR: A common estimate is 220 – age. For a 30-year-old, this is 190 BPM.
  2. Divide Max HR by Resting HR: 190 / 60 = 3.16.
  3. Multiply by 15.3: 3.16 × 15.3 = 48.4 ml/kg/min.

VO2 Max Fitness Levels (Averages)

Fitness Level Men (ml/kg/min) Women (ml/kg/min)
Poor < 35 < 30
Fair 35 – 43 31 – 37
Good 44 – 51 38 – 45
Excellent 52+ 46+
function calculateVO2() { var restHR = parseFloat(document.getElementById('restHR').value); var maxHR = parseFloat(document.getElementById('maxHR').value); var resultBox = document.getElementById('vo2-result-box'); var errorBox = document.getElementById('error-message'); var vo2ValueDisplay = document.getElementById('vo2-value'); var vo2CategoryDisplay = document.getElementById('vo2-category'); if (isNaN(restHR) || isNaN(maxHR) || restHR <= 0 || maxHR = maxHR) { resultBox.style.display = 'none'; errorBox.style.display = 'block'; return; } errorBox.style.display = 'none'; // Formula: VO2max = 15.3 * (HRmax / HRrest) var vo2Max = 15.3 * (maxHR / restHR); var roundedVO2 = vo2Max.toFixed(1); vo2ValueDisplay.innerHTML = roundedVO2; resultBox.style.display = 'block'; // Determine Category (General Average) var category = ""; var color = ""; var bgColor = ""; if (vo2Max < 35) { category = "Sedentary / Poor"; color = "#ffffff"; bgColor = "#e74c3c"; } else if (vo2Max < 44) { category = "Fair"; color = "#333"; bgColor = "#f1c40f"; } else if (vo2Max < 52) { category = "Good"; color = "#ffffff"; bgColor = "#3498db"; } else { category = "Excellent / Athlete"; color = "#ffffff"; bgColor = "#27ae60"; } vo2CategoryDisplay.innerHTML = category; vo2CategoryDisplay.style.color = color; vo2CategoryDisplay.style.backgroundColor = bgColor; }

Leave a Comment