Zwift just updated our web-based dashboards to display key power metrics used in race Category Enforcement. It also shows Peak Power numbers for a range of time windows between 5 seconds and 30 minutes.
See Your Numbers
Just sign into my.zwift.com to access your fitness numbers. On mobile devices you’ll need to tap the “Profile” link at the top of the page (then scroll down), while on full-sized screens you can simply scroll you’ll see your numbers down and to the right. Here’s mine:

More Info: zFTP, zMAP, VO2max, and Peak Power
What exactly are these key fitness metrics Zwift is displaying? First, it’s important to understand that these numbers are based on the last 60 days of Zwift ride data.
Clicking “More Info” shows additional details:
- zFTP: Estimate of your current Functional Threshold Power (FTP), the power you can sustain for a long period of time, i.e. > 40 min.
- zMAP: Estimate of your Maximal Aerobic Power, i.e the power at which you achieve peak oxygen consumption in a short duration effort 4-6 min.
- V02max: Estimate of your maximal oxygen uptake relative to your current weight expressed in ml/kg/min. (Assumes a fixed cycling efficiency)
Additionally, clicking “More Info” will show the date/time when you set each of your “Peak Power” numbers.
Category Enforcement Thresholds
According to this FAQ page, the current thresholds for category enforcement are:
Open Races | zMAP value and Watts | zFTP and Watts |
---|---|---|
Category A | ≥5.4W/kg | ≥4.2W/kg and ≥250W |
Category B | ≥4.2W/kg | ≥3.36W/kg and ≥200W |
Category C | ≥3.3W/kg | ≥2.625W/kg and ≥150W |
Category D | <3.3W/kg | <2.625W/kg or <150W |
Category E | N/A | N/A |
Women Only Races | zMAP value | zFTP |
---|---|---|
Category A | ≥5W/kg | ≥3.88W/kg |
Category B | ≥4.2W/kg | ≥3.36W/kg |
Category C | ≥3.5W/kg | ≥2.625W/kg |
Category D | <3.5W/kg | <2.625W/kg |
Category E | N/A | N/A |
If you match your zFTP, zMAP, and VO2max values up with the thresholds in the tables above, you should be able to see why Zwift has slotted you into the “Suggested Category” shown.
Why It Matters
This update brings much-needed visibility to the numbers driving Zwift’s category enforcement system. The first category enforcement races happened in February 2022, but racers have never actually seen the fitness metrics Zwift used to enforce categories, until today.
With category enforcement used in approximately half of all Zwift races today, giving riders more information about why they’re placed where they’re placed is a smart move.
But My Numbers Are Wrong!
I’m already seeing feedback from Zwifters saying things like:
- My FTP is higher than the zFTP value shown
- My Garmin doesn’t agree with the VO2max value shown
Here’s what you need to know: these numbers are based on your last 60 days of Zwift power data. The zFTP value is calculated on Zwift’s end using a formula they’ve kept under wraps, although we know for sure it’s not the simple “95% of your best 20-minute effort” formula that the game uses to auto-detect your FTP.
The VO2max number, similarly, is computed by Zwift using an algorithm that certainly differs from Garmin’s.
As always, the system is only as good as the data feed into it. In order for Zwift’s fitness numbers to best match your actual fitness, you need to be feeding some all-out efforts into the system. Clicking the “More Info” link on your fitness profile shows this: “*For accurate metrics estimation you need to have done maximal efforts of at least 12 minutes in duration.“
Questions or Comments?
Post below!
I use Xert which calculates FTP based on all previous activities, I have also “calibrated” the Xert FTP against a 20min FTP test on a few occasions and it’s pretty accurate and typically around +/- 2W of the 20 min test result. So using Xert as a measure to compare zFTP against. My current zFTP is 316W and my current Xert FTP is 325W. So Zwift is under estimating by 9W which is -2.85% in my case. Considering Zwift is only “seeing” rides done on Zwift that’s not too bad really.
It’s the opposite for me. I’m now in cat C from B on zwiftpower (have been for a few months). FTP on Xert is 207 and this new feature puts me in Cat B and 237 ZFTP.
My numbers from 8 months ago, before my injury.
Thanks for this great info.
Some strange things to work out. My team mate and I compared our stats earlier when we discovered this update. All his 5 secs to 30 mins wkg are higher than mine. He has a higher zFTP and zMAP than me in terms of wkg and a higher vo2 max value than me. However he can race Cat C and I can only race Cat B. His vo2 max is 52 and his zFTP is 3.46 both of which are B Cat.
There is a known issue for people who are able to push a really high X min power (not going to say it because I don’t want to enable cheating) relative to their 20 minute power that skews the curve used by Zwift in their zFTP calculations. There are some people who have figured it out and do it intentionally to sandbag, but it’s also possible that someone’s power profile naturally got skewed in the same way. The other thing to check is is your teammate above the raw W floor?
There will always be some who will game the system no matter what enforcement is used. He is above the watt floor. I am 71kg he is 74kg. His 5 sec is 1.6wkg greater and 1 min 1wkg greater the rest of the stats are very similar. We both have a 20 min of 3.46kg which correctly puts me in B but not him as he remains C
I’m guessing he is a lighter rider and his FTP is below 200W? While w/kg is a good way to compare riders, it is not perfect. The minimum wattage threshold of each category helps put riders of same force together, so a 180W rider does not get put against a +350W rider in a sprint or on the flat.
Wattage floor not a problem here. 71 vs 74kg rider. He has slightly better sprint stats. We have the exact same 20min at 3.46 wkg. His vo2 max is above Cat limit at 52. So he has broken two limits here but remains C. I break one and don’t argue with the fact I am B.
Is the algorithm used to decide what’s within or outside of limits the same for all riders, or different for different weights?
It’s based on w/kg mostly, so… you could say it’s different for different weights…?
How does this relate to the data shown and pulled from Zwift Power? Is this a step toward integration?
One would like to think so, but it doesn’t sound like it from what I’m hearing internally. My guess is Zwift won’t make major changes to ZwiftPower… but instead will invest dev resources in building their own system.
Hmm..I wonder if the new estimated metrics has anything to do with Eric Min’s visit to Trainerroad HQ a couple of months ago, and the fact that trainerroad has a “AI based FTP detection” in place by now… Maybe too far fetched,but one can dream 🙂
I’m sure the calculations have been tweaked since then, but James Bailey made a fairly comprehensive post about CE on March 30 in the Herd Racing League’s FB page. I had a brief excursion into CE Cat C starting in April and in a followup, James was able to point me to what caused it.
How this stacks up against TrainerRoad I wouldn’t know. I’m trying to square mine against my Intervals.icu numbers. Still, I’m less interested in how many training plans and calculations can dance on the head of a pin than that there’s something consistent.
As a TrainerRoad user, I can confirm my zFTP is 287 Vs TR’s AIFTP of 289 (which was updated about 2 weeks ago after 2 weeks off exercise)
So there is the Zwift Companion app, My Zwift and Zwift Power (3rd party)… It would be nice if the Companion app were simply more robust.
After looking at the threshold numbers, category D has increased its upper limit from 2.5 to 2.625. The same happens with category C, from 3.2 to 3.36. I’m guessing that they are trying to increase race participation in D. But as a sub 2.0 rider myself, I can help to thing that with more faster riders the time diference with the winner would be higher.
The boundaries posted above have already changed. There is no longer a VO2 max component (see forums)
Curses. I even asked ZHQ if the support post was current. Now I gotta go digging in the forums…
Found it. Edited the table above. Here’s the most recent forum topic on Category Enforcement, for anyone who wants to dig further: https://forums.zwift.com/t/category-enforcement-update-weight-changes-december-2022/596901
I read where they are using 12min power in cat enforcement calculations, but I don’t read where it’s factored in, nor what the the cat thresholds are for that duration.
Well, Dang! I just looked through the CE string in Forums. I’d much rather six laps of Cobbled Climbs. On a Buffalo Bike.
my.zwift.com concludes me as Cat C, but ZPower says i am Cat B
Yep. Two totally different systems. They usually match in terms of category, but not always, for those sort of on the cusp between categories.
Looks good. Aligns very well with my WKO5 data
This is what my.zwift.com
My zFTP is way higher than my FTP so don’t really understand why.
I have the same problem, can’t understand where the zFTP comes from. My FTP is 227 & zFtp 255.
Well, one obvious question would be: how did you determine your FTP?
Yeah mine is too high also. They are setting zFTP higher than your best 20 minute and 30 minutes power over the last 60 days? Not sure I understand that, but it’s a nice number to aspire to just not realistic.
Well, Zwift can’t just blindly trust the data of an FTP test, that would open an easy path for cheating: just open the FTP test, ride easy for 20 minutes and voilà, you’re in the D category. So they really have to look at a more broader picture of riders capabilities.
They also can’t look at just the last 60 days of data, otherwise everybody who comes back after a summer break will end up in D category 🙂
Hey C’s it says I can ride with you in a mid B power but savvy mover d can rip 5-10 some big u categoried or A races . I should be able to submax attack a few bumps and solo away. And I know how to drop people who draft (and out don’t fri part well at any level).Wric ibe beber won a raxe tho shoukd I go try to smash some C races? I understand why r projections are wrong sustained long oower is unusual if it’s a race you’re working too hard. they just need to count… Read more »
Anyone who can translate this deserves a tron bike for free
Finally!
I can’t believe Zwift didn’t start by making the values visible and then implemented enforcement. Such non-customer obsessed way to go about it.
neat they are bringing more data in-house. first baby step in the right direction
That final bit about “my numbers are wrong” should probably be up front! The crucial thing to understand here is that zFTP is not the same thing as FTP. zFTP is a critical power (CP) calculation based on all of your Zwift activities (including those that are deleted) over 60 days. From what I understand, CP is generally higher than FTP as it weighs shorter durations more heavily than FTP’s approximation of 1 hour effort. Which, to be fair, is a better indication of Zwift racing – how quickly can you recover and hit the next hill or sprint? It’s… Read more »
So if you do a FTP test or a race at least every two months, the data should be accurate.
Are these datas still only from races or also from workouts in Zwift?
ALL Zwift activities.
figured that out 10 min ago as my best 5 sec power was from a free ride.
huge improvement in my opinion. Nevertheles I should be more careful not using my wife’s account…
I recently got a “well done you FTP has increased to 173” after a recent ride but the zFTP is showing at 181. I have only been on Zwift for 55 days so would have assumed that they would be the same. Anyone know why they’re diffrerent?
Because they’re two different metrics. As I said above, “The zFTP value is calculated on Zwift’s end using a formula they’ve kept under wraps, although we know for sure it’s not the simple “95% of your best 20-minute effort” formula that the game uses to auto-detect your FTP.”
I’m at 75kg rider. Why is my minimum category A based on these values?
No idea. Did you set them when your weight was a different value? I’d ask Zwift support?
I fall foul of this system too as it estimates my zFTP at 273, which I may add I can get nowhere near!! it is higher than my max 32 minute effort which is 262. I do know that putting in a hard 3 minute effort is supposed to throw the data out and enable you to get a lower zFTP, which really doesn’t make sense and enables sandbaggers to stay sandbaggers, so the system really doesn’t achieve what it is intended to do. My point would be why don’t they use NP instead? I’ve looked at the NP of… Read more »
my Garmin vo2 max is 55 for cycling and 57 for running (running has been in the 56-60 range for nearly two years now) and today I had a peak at my Zwift scores the predicted vo2 max is 37.7 something doesn’t feel right, ( also to note my zFTP is higher @ 223W on zwift for a lower v02 max, and on garmin FTP is 2.4W/Kg @77Kg )
Same here. Lower VO2max estimate on zwift compared to Garmin by 8-10 points. The FTP estimates are close enough.
Is there any plan for having average watts displayed per workout segment? I think it is displayed on one of the FTP tests but it would be useful for those of us that hate erg mode so we can know how we are doing against target during threshold sessions.