Why Your Activity VO2max Barely Moves — And Why It's Sometimes Blank
Your last four rides said 54, 53, 54 and 55. This morning's recovery spin shows nothing at all. So how much does your engine really move from one day to the next?
The one-sentence answer
Less than you'd think. Across a full training week the VO2max on your activities spans about 1 ml/min/kg, and in 92 % of athlete-weeks its standard deviation stays below 1. What people read as a restless number is mostly a number sitting still.
Everything below is the fine print: where the per-activity estimate comes from, how tightly it sits in our own database, why some sessions show no value at all, and what you still get when the AI stays quiet.
Where the number comes from
Two layers do the work, and they do different jobs.
Mader is the foundation. Every activity you sync is run through a metabolic model built on the work of Alois Mader (Mader & Heck 1986; Mader 2003). That model is what produces lactate, phosphocreatine, oxygen uptake and fuel usage for your session. It is always active — no exceptions, no toggle.
The neural network estimates your engine. Mader's model can be solved backwards for VO2max and VLamax when an athlete is fully spent — which is exactly what a Powertest is designed to produce. In a normal Tuesday training session you're nowhere near fully spent, so that backwards calculation isn't reliable. Instead, a neural network trained on roughly 15,000 of those power tests takes your power and heart-rate trace and estimates what your VO2max and VLamax must be to explain what it just saw.
And what reaches you is already the filtered value. The estimate the network produces for a single session never lands on your screen on its own. Before it is written onto your activity, a Kalman filter has already weighed it against everything you have trained before — the same filter that builds your weekly value, running one step earlier. You are not reading one session's first impression — you are reading your engine, re-read in the light of one more day of evidence.
That's the honest description of the mechanism: a measured anchor for the model, a trained estimator for everyday sessions, and a filter that stops a single odd day from rewriting your profile. Not a heart-rate formula, not a generic age-and-gender table.
Two levels: the snapshot and the trend
This is the part worth internalising, because it settles most of the questions we get.
Per activity, you see the Kalman-filtered estimate for that session — the filter has already run by the time the number reaches your screen. It's a tendency rather than a verdict, but a smoothed one, never a raw reading.
Per week, those filtered sessions are fused into the single value your metabolic profile shows — the same Kalman filter powerAI v3 introduced, now working across your whole history. That's the number to steer by, and in practice it barely moves unless something in your training actually changed.
How tightly the number actually sits
We can put figures on this, because it's our own database. We took every cycling session with an AI estimate from the last 180 days, grouped them by athlete and calendar week, and kept only the weeks with at least four rides — 16,911 athlete-weeks from 1,457 riders.
| Per athlete and week | Value |
|---|---|
| Typical spread (median) | 1.0 ml/min/kg |
| Standard deviation (median) | 0.4 ml/min/kg |
| Weeks with SD below 1 | 92 % |
| Worst week in ten | 2.4 ml/min/kg |
Every row describes the value your app displays — the same number written on your activity.
Read the first row again. In the typical training week, the whole spread from your highest reading to your lowest is 1.0 ml/min/kg. For a value produced from ordinary training — no ramp protocol, no mask, no lab — that is remarkably quiet, and it sits at the bottom edge of the 1–3 ml/min/kg range our coaching team has always treated as normal fluctuation between sessions. The second row measures those same weeks differently: how far the individual readings scatter around their middle. That scatter is four tenths of a point in the typical week, and it stays below a full point in 92 % of all weeks. VLamax behaves the same way, drifting 0.05–0.15 mmol/l/s; your threshold power moves 5–15 W.
Now hold that against a real test. A Powertest is one day — and one day brings your sleep, your legs and the weather along with it. We looked at athletes who did two tests within three weeks of each other, six days apart in the median: 493 pairs from 348 athletes. Their two results differ by 3.2 ml/min/kg in the median, and roughly six pairs in ten differ by 2 or more. That is three times the spread your displayed value shows across an entire week of training.
That doesn't make the estimate more accurate than the test. The test is what the network was calibrated on, and calibration is the one thing a week of training data can't replace. But as a number you can repeat, the weekly value is the steadier of the two — and a number you steer by has to sit still when nothing about you has changed.
Now look at what that means across a season. Two out of three week-to-week changes stay under 1 ml/min/kg, measured across 28,467 consecutive pairs of weeks. Standing still is the normal case, not the exception — which is exactly what makes the opposite worth reading.
So when your weekly value climbs by more than a point and stays there, that isn't noise. That's news.
Our own database, no borrowed tables
Every figure above comes from our production database, queried on 11 August 2026 — three evaluations, not one number taken from somewhere else.
The within-week figures: cycling activities from calendar weeks 7 to 32 of 2026, processed by the AI model, planned sessions, simulations and duplicates excluded, grouped per athlete and calendar week, keeping only weeks with at least four rides. The season-long figure: consecutive weekly values from those same athletes. The test–retest comparison: valid Powertests taken no more than 21 days apart, one test per athlete and day.
What we measured is the value your app puts in front of you, not something internal we could tune to look good. Nothing here is lifted from a published table or averaged out of someone else's cohort — if we can't query it, we don't print it.
Why some activities show no value at all
Now the message that sends people to support: "AI predictions are not possible."
That is not a bug, and nothing is broken in your account. It means the network could not produce an estimate it stands behind — and we would rather show you nothing than a number we'd have to walk back.
In practice it is almost always about the signal you brought, not the shape you're in:
- No power meter, no heart-rate strap. This is the big one. The model reads your engine from the relationship between power and heart rate — remove either channel and there is nothing left to read.
- The heart-rate signal was poor. Strap dropouts, a badly seated optical sensor, a wet jersey. The model wants a heart-rate quality above roughly 50 out of 100.
- The session was too short. A few minutes gives the model too little to work with.
- The ride carried almost no information. A dead-flat ergometer hour tells the network less than a varied one — but on its own that rarely blocks an estimate any more. v3 only goes quiet when a session drifts too far from anything it can explain. The cure is cheap: two or three sprints of 5–10 seconds, or a single 60-second effort at VO2max intensity, and even a flat ride has something to say.
- No Premium subscription. AI predictions aren't computed without one. Worth saying plainly, so nobody spends an evening debugging their chest strap for the wrong reason.
How often does this actually happen?
Over the last 90 days, excluding planned and simulated workouts:
| Sport | Sessions with a VO2max estimate |
|---|---|
| Running | 99.5 % |
| Cycling | 75.6 % |
So on the bike, roughly one session in four stays blank — and that gap is a hardware gap, not a fitness one. Rides without power dominate it: four out of five blank cycling sessions in the same period had no power data at all. Running barely has the problem, because we don't wait for a power meter there — we derive running power ourselves from speed, gradient and a handful of other signals, so a runner almost always arrives with a power trace.
These are coverage rates, not error rates. We're showing you how often we stay quiet, not claiming a measured accuracy we haven't published. A watch estimator always shows you a number; it never tells you which ones it was guessing at.
What you always get, even with no AI value
This is the part most people miss when a session shows no VO2max. Mader is still running. Open the activity details and you still have:
- Blood lactate — a model value, and a good one. It describes the lactate turnover across your session in absolute mmol, so compare it with your own sessions rather than with a lab fingerprick in mmol/l. Coaches who measure lactate in the field next to our simulation are regularly surprised by how closely the two track.
- Muscle lactate and muscle pH
- Phosphocreatine (PCr) and oxygen uptake (VO2)
- Carbohydrate and fat consumption
- Training Score and Body Reserve — how hard the session was, and what it left in the tank
- Your time in each training zone
- With power: aerodynamic drag (CdA) and rolling resistance (Crr)
- Rode on heart rate alone, but had power on earlier sessions? We reconstruct the power curve from your heart rate.
You never have nothing. You have everything except a VO2max update — and your weekly curve simply carries on from the sessions that did produce one.
What you can actually do about it
Three levers, in order of effect:
- Give the model both signals. It reads power and heart rate together. A chest strap beats an optical wrist sensor under vibration and load, and on the bike a power meter — or a smart trainer indoors — turns a blank ride into a measured one.
- Put something in the ride worth reading. Genuine changes in intensity — intervals, a hilly route, a hard block inside an endurance ride — tell the network far more than 90 minutes of unwavering steady state. It doesn't take much: two or three sprints of 5–10 seconds, or one 60-second effort at VO2max intensity, is enough to give an otherwise flat session a shape.
- Take a Powertest once a year. Estimates from everyday training can carry a personal offset: the shape of your curve is right, but its level sits slightly off. A Powertest anchors the curve to a measured value and calibrates that offset. One test a year keeps the calibration fresh; between tests, the curve does the week-to-week work.
And one thing not to do: don't read a single day as a verdict. Your engine answers on the scale of weeks — that's the value in your metabolic profile, and it's the one that barely moves.
You don't need a Powertest to start
A fair question at this point: if the Powertest is the measured anchor, is the curve worth anything before you've done one?
Our own numbers say yes. Of the athletes on the platform who have never done a Powertest but have connected activities, 831 out of 841 — 98.8 % have a VO2max estimate from their everyday training alone. The curve starts with your first sync. The test sharpens it later.
And how sharp that anchor is we checked against the lab: mean bias −1.8 ml/min/kg across 43 athletes with parallel spirometry (the full validation).
That's also the honest order of operations: connect your device first, and let the model watch you train for a couple of weeks. Start your free trial — you'll have a curve before you ever step on a test protocol.
One more thing
VO2max is only half of what the network estimates from each session. The other half is VLamax — your glycolytic power — and it's the number that decides whether that engine makes you a fast finisher or a rider who can hold threshold all day.
Here's why two athletes with the same VO2max race differently.
FAQ
Why did my VO2max drop after one bad ride? It almost certainly didn't. In our data the value shown on activities spans about 1 ml/min/kg from highest to lowest across a typical week, and in 92 % of weeks its standard deviation stays below 1 ml/min/kg. A single session can sit at the edge of that band because of heat, sleep, fuelling or heart-rate quality. Check the weekly value in your metabolic profile — if that's steady, nothing has changed.
Why does one of my activities show no VO2max? Because the model couldn't make a prediction it stands behind. By far the most common reason is a missing signal: no power meter, or no usable heart-rate trace. Very short sessions and rides that carry almost no information can do it too, as can having no Premium subscription. It's a deliberate rule, not a failure.
Is the Mader model still used if the activity says "AI"? Yes, always. Mader produces the physiology of every session — lactate, PCr, VO2, fuel usage. The neural network's job is narrower: estimating your VO2max and VLamax when Mader can't be solved backwards, which is any session where you weren't fully spent.
Is the "blood lactate" figure my actual blood value? It's a simulated value, and it holds up well. It describes the lactate turnover across the session in absolute mmol, so read it alongside your own sessions rather than against a lab fingerprick in mmol/l — different quantity, different unit. Coaches who measure in the field are usually struck by how closely the simulation follows what they draw.
Do I still need a Powertest? Yes, but not often. The test is the measured anchor the curve calibrates against — it fixes any personal offset in your level. One per year is enough. Between tests, your everyday sessions carry the trend.
Why is my running VO2max there almost every time, but my cycling isn't? Because on the run we don't depend on your hardware. We calculate running power ourselves — from speed, gradient and a few other signals — so a run almost always arrives with a power trace, while on the bike everything hinges on whether you had a power meter. In our last 90 days, 99.5 % of runs produced an estimate versus 75.6 % of rides.
How does this relate to what my watch shows? A watch estimate is generally derived from the relationship between heart rate and pace, using population-level assumptions. Ours is trained on 15,000+ maximal power tests and calibrated to you personally by your own test. Comparing the two absolute numbers isn't very useful — different methods, different reference points. Compare each one's trend instead. And if you want the full picture of where your value sits, start with the VO2max reference tables.
Sources: Mader, A. & Heck, H. (1986). A theory of the metabolic origin of the anaerobic threshold. International Journal of Sports Medicine, 7(Suppl 1), 45–65. · Mader, A. (2003). Glycolysis and oxidative phosphorylation as a function of cytosolic phosphorylation state and power output of the muscle cell. European Journal of Applied Physiology, 88(4–5), 317–338. · Kalman, R. E. (1960). A new approach to linear filtering and prediction problems. Journal of Basic Engineering, 82(1), 35–45. Platform figures: A Faster You production database, queried 11 August 2026 — within-week variation from 16,911 athlete-weeks of at least four rides (1,457 riders, calendar weeks 7–32 of 2026), season-long change from 28,467 consecutive pairs of weekly values, test–retest spread from 493 pairs of valid Powertests taken no more than 21 days apart (348 athletes, one test per athlete and day), coverage rates from 90 days of activities.
