Methodology
GOVO2 VO2max Calculation Method
Current calculation method for the GOVO2 ramp test engine, adapted from the May 16, 2026 web white paper.
Abstract
VO2max is the maximum rate at which the body can take up oxygen during intense exercise. GOVO2 estimates VO2max from a cycling ramp test. It does not measure gas exchange.
The test starts with a 5 minute warm-up at 40 percent of functional threshold power (FTP). The ramp then starts at 50 watts and increases every 60 seconds. The test ends when the rider can no longer hold at least 90 percent of the target power for 15 consecutive seconds.
The app calculates maximal aerobic power (MAP) from the last completed stage and the time held in the final stage. It then estimates VO2max using the Storer, Davis, and Caiozzo cycle-ergometry equation. The inputs are MAP in watts, body mass in kilograms, and age in years.
The output is reported in ml/kg/min. The result is best used for within-user trend tracking under consistent test conditions.
Defined Terms
- VO2max: the maximum rate at which the body can take up oxygen during intense exercise measured in ml/kg/min.
- Ramp test: a cycling test where the target power rises at fixed time intervals until failure.
- FTP: functional threshold power, measured in watts. The test uses FTP to set the warm-up power and ramp rate.
- Target power: the power the rider is asked to hold at a given point in the test.
- Actual power: the measured power in watts from the connected power source.
- MAP: maximal aerobic power, measured in watts. The app calculates MAP from the last completed stage and the time held in the final stage.
- Body mass at test start: the rider's body mass in kilograms when the test begins. This value is stored with the result.
- Age at test start: the rider's age in years when the test begins. This value is stored with the result.
- Test result: the VO2max estimate in ml/kg/min from one ramp test.
1. Purpose and Scope
This method estimates VO2max in ml/kg/min from cycling power, body mass, and age. It is a field estimate, not a laboratory gas-exchange measurement.
Heart rate in bpm is recorded for context. It is not an input to the VO2max equation. It also does not decide whether a completed ramp result is saved.
2. Test Protocol
The rider warms up for 5 minutes at 40 percent of FTP. After the warm-up, the ramp starts at 50 watts. The target power increases once per minute.
Raw ramp rate = (FTP / 0.75 - 50) / 10
Rounded ramp rate = raw ramp rate rounded to the nearest 5 watts per minute
Ramp rate = rounded ramp rate, constrained to 15 to 35 watts per minute
The test ends when measured power stays below 90 percent of the current target for 15 consecutive seconds.
The ramp rate keeps the test usable across fitness levels. Stronger riders get larger steps. Lower-power riders get smaller steps. The goal is not to make every test identical across riders. The goal is to make each rider's test long enough to be useful and short enough to repeat.
3. Data Used and Stored
At test start, the app stores:
- body mass in kilograms
- FTP in watts
- age in years
During the test, the app records one sample per second:
- elapsed time in seconds
- power in watts
- heart rate in bpm
For each saved ramp result, the app stores:
- VO2max result in ml/kg/min
- MAP in watts
- estimated FTP in watts
- ramp rate in watts per minute
- peak heart rate in bpm
- test duration
- raw samples
If Apple Health permission allows it, the app writes the VO2max result to HealthKit with method metadata set to Storer1990.
4. MAP Calculation
MAP is the test's power-performance output. The calculation gives full credit for the last completed 60 second stage and partial credit for the time held in the final stage.
MAP = last completed stage power + ramp rate x seconds held in final stage / 60
Where last completed stage power is in watts, ramp rate is in watts per minute, seconds held in final stage is in seconds, and MAP is in watts.
Example: last completed stage power = 300 watts, ramp rate = 30 watts per minute, seconds held in final stage = 20 seconds, so MAP = 300 + 30 x 20 / 60 = 310 watts.
The displayed MAP is rounded to the nearest watt. The VO2max calculation uses the unrounded internal MAP. This interpolation avoids two errors. Counting the entire failed stage would overstate performance. Ignoring the time held in the failed stage would understate performance.
5. VO2max Equation
The method uses the Storer, Davis, and Caiozzo 1990 cycle-ergometry equation. The equation predicts absolute VO2max in ml/min from MAP in watts, body mass in kilograms, and age in years. The app divides that value by body mass in kilograms to report relative VO2max in ml/kg/min.
VO2max (ml/min) = 10.51 x MAP (watts) + 6.35 x body mass (kg) - 10.49 x age (years) + 519.3
VO2max (ml/kg/min) = VO2max (ml/min) / body mass (kg)
Storer 1990 is used because it was built for cycle ergometry and includes age and body mass. The age term keeps older and younger riders with the same MAP from receiving the same estimate. The body-mass term keeps the estimate from treating power alone as VO2max.
6. Why the Test Uses 60 Second Steps
A lab can increase workload continuously while measuring oxygen uptake directly. A consumer cycling test cannot assume that equipment or control.
GOVO2 uses 60 second steps because they work with common BLE power meters and trainers. The protocol is simple to execute, easy to repeat, and stable enough for trend tracking.
A continuous ramp and a 60 second step ramp are not identical. The key requirement is that the same rider repeats the same protocol over time.
7. Interpretation Limits
This method estimates VO2max in ml/kg/min from field-test performance. It does not measure oxygen uptake, ventilation, respiratory exchange ratio, lactate, cycling economy, or power-meter accuracy.
Important limits:
- No gas exchange measurement. The estimate uses power output, body mass, and age.
- No individualized cycling-economy measurement. Two riders can produce the same MAP with different oxygen costs.
- Power-source accuracy matters. A power meter or trainer that reads high or low will shift MAP and therefore VO2max.
- Protocol execution matters. Sleep, heat, hydration, caffeine, illness, motivation, and pacing discipline can affect the result.
- Heart rate is contextual. Peak heart rate in bpm is recorded, but it is not used in the calculation and does not determine whether the result is saved.
- Trend is stronger than absolute rank. Repeating the same protocol on the same hardware is better for tracking change than proving exact laboratory VO2max.
This is not a diagnostic test. It is not a substitute for cardiopulmonary exercise testing.
8. Worked Example
Example input: MAP = 331 watts, body mass = 72.6 kilograms, age = 47 years.
VO2max (ml/min) = 10.51 x 331 + 6.35 x 72.6 - 10.49 x 47 + 519.3
VO2max (ml/min) = 3966.09 ml/min
VO2max (ml/kg/min) = 3966.09 / 72.6
VO2max (ml/kg/min) = 54.6 ml/kg/min
Estimated FTP from this ramp result:
Estimated FTP = round(331 x 0.75)
Estimated FTP = 248 watts
9. Reference
Storer TW, Davis JA, Caiozzo VJ. Accurate prediction of VO2max in cycle ergometry. Medicine and Science in Sports and Exercise. 1990;22(5):704-712.