Measurement log
Garmin says your VO2 max has no decimals. Your watch disagrees.
Garmin support says the rounded number is all there is. It is not — the exact value sits in your own data. Three ways to get it.
Ask Garmin whether you can see your VO2 max with a decimal place and you get a straight no. From Garmin staff on their own forum:
Unfortunately, there is no place to see a decimal — only rounded numbers.
That is true about the screen and false about the watch. Your device calculates the value to several decimal places, stores it that way, and hands it to you on request. It just refuses to print it.
Why the rounding is worse than it sounds
Here is what my Forerunner 265 showed me over two months of half marathon training, against what it had actually recorded.
| Date | Shown on the watch | maxMet in my data | Actual VO2 maxmeasured |
|---|---|---|---|
| 17 Jun 2026 | 50 | 14.2709 | 49.95 |
| 27 Jun 2026 | 51 | 14.5036 | 50.76 |
| 12 Jul 2026 | 51 | 14.7038 | 51.46 |
| 27 Jul 2026 | 51 | 14.6593 | 51.31 |
| 31 Jul 2026 | 52 | 14.8382 | 51.93 |
| 11 Aug 2026 | 52 | 14.7647 | 51.68 |
| 19 Aug 2026 | 52 | 14.8721 | 52.05 |
Three numbers in two months. Look at what that hides:
- 27 June looks like a jump. The watch went 50 → 51 overnight. The real move was 49.95 to 50.76 over ten days — a steady climb, displayed as a step.
- 31 July looks like another jump. 51 → 52. The actual change since 27 July was six tenths.
- Mid-August looks like a plateau. The display sat on 52 from 31 July onward. Underneath, the value fell to 51.68 on 11 August and climbed back to 52.05 by the 19th. None of that is visible.
The rounding does not just cost precision. It invents step changes on the days you cross a boundary and hides real movement everywhere else. If you are watching this number to judge whether a training block is working, you are reading an artefact of rounding half the time.
Method 1: the account export
This gives you every value you have ever recorded, and it is the route I used.
- Garmin Connect on the web → your profile picture → Account Settings
- Find Export Your Data and request the export. It is not instant — request it before you need it, not the evening you want the number.
- When the download link arrives by email, unzip it and look in
DI_CONNECT/DI-Connect-Metrics/for a file namedMetricsMaxMetData_<dates>_<userid>.json.
Every entry looks like this:
{
"calendarDate": "2026-08-21",
"sport": "RUNNING",
"vo2MaxValue": 52.0,
"maxMet": 14.83770751953125,
"calibratedData": 1
}
vo2MaxValue is the rounded number you already saw. maxMet is the value the watch actually
computed, in METs. One MET is 3.5 ml/kg/min, so:
VO2 max = maxMet × 3.5
14.8377 × 3.5 = 51.93, which the watch showed you as 52.
If you would rather not do it by hand, this prints your whole history:
import json
path = "DI_CONNECT/DI-Connect-Metrics/MetricsMaxMetData_<dates>_<your-id>.json"
for e in sorted(json.load(open(path)), key=lambda x: x["calendarDate"]):
if e.get("maxMet"):
print(f"{e['calendarDate']} shown {e['vo2MaxValue']:.0f} actual {e['maxMet'] * 3.5:.2f}")
I ran this against my own export and checked it: 26 of 26 reconstructed values round to exactly the number the watch displayed. The conversion is not an approximation of Garmin’s arithmetic — it is Garmin’s arithmetic.
Method 2: a single activity’s FIT file
Faster, if you only want today’s number rather than the history. Garmin writes VO2 max into the FIT file of the activity that produced it.
- Garmin Connect on the web → the activity → gear icon, top right → Export Original (a
.fitfile) - Read message 140, field 7
That field is a scaled integer rather than a MET value, so the conversion is different:
VO2 max = raw × 3.5 ÷ 65536
The 65536 is 2¹⁶ — the value is stored as a 16-bit fixed-point fraction. This route is documented by the Intervals.icu community, who worked it out to feed the same number into their own platform.
Method 3: let something else do it
If you are not going to unzip anything, several training platforms already read the unrounded value out of your files and display it. Intervals.icu is free, connects to Garmin directly, and shows VO2 max with a decimal without any of the above. Runalyze does the same and has a free tier.
That is genuinely the right answer for most people, and it is worth saying plainly that the free option is the one I would start with — I earn nothing when you use it.
How much precision is real?
Now the caveat, because an article that hands you two decimal places owes you this.
A wrist-based VO2 max is an estimate built from heart rate and pace, not a lab measurement. The extra digits tell you exactly what your watch computed; they do not tell you that your body changed by 0.2 ml/kg/min. A single hot day, a poorly-fitting strap, or a run in wind moves the input enough to move the output by more than that.
What the decimal is genuinely good for is direction over weeks. My own series shows a real decline from 51.93 to 51.68 during the second week of August that the rounded display erased completely. That is a signal worth having — a small negative trend during a heavy block is exactly the sort of thing you want to notice early. Reading a single day’s third decimal as news is not.
Use it as a trend line, not a scoreboard.
Sources
- Garmin Forums, How can you see VO2 max with decimals? — the official “no decimals” answer
- Intervals.icu Forum, Garmin VO2 max from FIT file — message 140, field 7, and the ÷65536 scaling
- My own Garmin Connect account export,
MetricsMaxMetData, 26 running entries between 17 June and 21 August 2026