The first category enforcement test races on Zwift were announced in late February 2022, and the initial test was a success by anyone’s definition. For the first time in Zwift’s history, riders were restricted in their choice of race category based on their historic power data.
Since those early trials, Zwift’s Category Enforcement tools/features have been evolving, as has their documentation. We published this update in April 2022, and today we’re publishing this update thanks to some important category enforcement changes recently announced.
Usage
Back in April 2022, 23% of races were using category enforcement. Today, that number has doubled to 46%. (This is based on the next 7 days of events as of the date of this post. Currently there are 705 races happening in the next 7 days, with 327 of those races using the new category enforcement tools.)
This is especially impressive when you consider that category enforcement is still just an option for event organizers to use on request. It is not yet the default.
Latest Changes
Two Category Enforcement changes were recently announced by James Bailey on August 21:
- Any ride that would cause an increase of 70% or more to a rider’s CP will not be included in the power curve used to assign a category. These are normally caused by a trainer miscalibration or someone sharing their account.
- All category boundaries have been increased by 5%, to make the difference between Zwiftpower and CE less apparent and confusing (because Zwiftpower uses 95% of your best effort over 20 minutes).
How Category Enforcement Works
With the latest changes in mind, here is a summary explanation of how Zwift’s Category Enforcement currently functions.
- Zwift uses your last 60 days of riding activity on the platform to build a 2-50 minute power curve profiling your fitness as a rider
- This power data is used to compute your VO2max, Maximal Aerobic Power (MAP), and Critical Power (CP)
- These three data points are then used to determine your minimum race category (see category boundaries below). When signing up for a race that uses Category Enforcement, you are only allowed to sign up for that minimum category or higher
- New or returning Zwifters who don’t have enough recent activity data in their account are placed in the “E” category of Category Enforcement races so they won’t interfere with properly-classified riders
- Any ride that would cause an increase of 70% or more to your CP is not included in your Zwift power curve, as it is assumed to be caused by a trainer miscalibration or someone sharing your account
Category Boundaries
Here are the boundaries currently used by Category Enforcement to determine the minimum race category for riders in open or “mixed” races (where both men and women can participate). Hitting just one of these thresholds will qualify you for that minimum category – you don’t need to hit all three.
Open Races | VO2max and Watts | MAP value and Watts | CP and Watts |
---|---|---|---|
Category A | ≥60 and ≥250W | ≥5.4W/kg and ≥250W | ≥4.2W/kg and ≥250W |
Category B | ≥50 and ≥200W | ≥4.1W/kg and ≥200W | ≥3.36W/kg and ≥200W |
Category C | ≥45 and ≥150W | ≥3.9W/kg and ≥150W | ≥2.62W/kg and ≥150W |
Category D | <45 and <150W | <3.9W/kg and <150W | <2.62W/kg and <150W |
Category E | N/A | N/A | N/A |
Race events that only allow women have their own set of boundaries:
Women Only Races | MAP 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 |
Next Steps
While Category Enforcement seems to be functioning quite well in terms of meeting its overall goal (stopping sandbaggers), there is still plenty of work to be done to make it a user-friendly feature. Zwift still needs to develop:
- Support material explaining how CP, MAP, and VO2max are calculated
- Better integration and visibility in ZwiftPower
- Ability for event organizers to customize limits
- Better information presented when signing up for an event, to explain why certain categories are unavailable to you
About Critical Power
The use of Critical Power (CP) instead of FTP is a smart move on Zwift’s part and one that will have reverberations throughout the cycling world just as Zwift’s focus on FTP has made it a more prominent metric. While CP and FTP are sometimes used interchangeably, they’re actually two very different metrics.
CP and FTP are typically within 10% of each other for any given cyclist, but they are calculated using very different inputs. While Zwift’s FTP estimation requires a 20-minute full gas effort, CP takes into account your best efforts from 2 minutes all the way to 50, which should (in theory) provide a more accurate fitness metric for classifying racers.
If you don’t know your CP, you might check out intervals.icu as a free service that can calculate your CP and many other metrics. Tip: find your CP by going to Power>Options, and choosing “eCP: Single max effort & Morton’s 3P” as the “power model used to estimate FTP”.
For a deep dive into all things CP, check out this post from Highnorth.
Finding Category Enforcement Races
Zwift has no easy search filter built into Companion, etc to list only those races using category enforcement. But ZwiftHacks, as always, comes to our rescue! Here’s a custom ZwiftHacks search showing all upcoming category enforcement races.
Category Enforcement FAQ
Zwift has been building out support documentation for their Category Enforcement features. If you still have questions about Category Enforcement, their Category Enforcement FAQ is a good place to start.
Questions or Comments
Are you tending to prefer Category Enforcement races… or those without it? Share below!
Sorry – Because of scenarios where riders would spend the summer outdoors, then do a group ride, then enter ZRL, we increased the threshold from 20% to 70%, for instances where we would ignore a power curve due to potential miscalibration.
Hi James, please stop using a wattage floor, you need to use wattage ceilings. M from OTR is a C in mixed races on Zwift and races like Bologna she will continue to destroy other C riders even the ones sandbagging the system. A wattage ceiling maybe moves me to B as well, no big deal there. Also, anyone who can do 4.1 to 4.2 wkg for 5 minutes or longer is not a C, they are a B because they should be capable of a CP around 3.3-3.4 wkg on power duration curves and they can’t say it’s because… Read more »
I think this is a really tough call. Lighter riders are still likely to suffer on flats because they don’t have the sheer watts to compete against 1000+w in the sprints & think we need to look at lighter rider performance in general.
Will be working on results based categorisation later in the year which will hopefully make this more of a non issue.
So looking forward to results-based rankings. Can’t wait.
Results-based! And with something resembling a timeframe! You, Sir, have made my day 🙂
Be careful, he just says “will be working on…”. That could mean anything in terms of delivery date
Means it’s not going to happen before we got rowing, which was promised to us by the CEO, several times. Zwift is the shitiest company ever tbh.
“Will be working on results based categorisation later in the year which will hopefully make this more of a non issue.”
This This and THIS 👏👍
Category enforcement has been a greatly appreciated, very successful stepping stone but can’t wait for results to be the definitive way forward.
One thing to add is that a results based system should also make it feel more satisfying, like you earned your promotion, rather than just crossed an arbitrary line in the performance sand, as is now the case. You raced well and you stepped up and all that. Looking forward to seeing what it holds 👍
Amen
results based categorisation – BEST NEWS EVER!!!
Big yes to results-based categorization! Category enforcement is great and all, but results based would be even better. Keep up the great work, James!
No system will be perfect, but the original iteration was just about perfect, it rid C and B of all borderline racers and sandbaggers. It forced the D’s who needed to move up to do so into races they could still compete reasonably well with the borderline riders gone with the Sandbaggers. I am a heavier rider so a wattage ceiling hurts me as I would have to say a ceiling for C riders should be around 260-280W maybe it is higher say 280-300W which puts it little out of my reach right now & possibly forever and the Ceiling… Read more »
Also, James if you want you can publish my MAP and CP numbers. I assume it is 3.8ish and my CP is 2.7ish with a 20 minute best of 3.0wkg.
Daniel can you give some further explanation as to why you think a results based system needs to retain a power element? I don’t follow the logic. To my mind the beauty of a results based system is that it does not require any information on how you achieved your place (whether by a better sprint, better 5 minute power, better drafting ability, better tactics, dumb luck, and so on and so on) – only your placing in the race and the quality and number of those you beat. Those outputs in the long run will capture all of the… Read more »
HaHa so funny, “Category Enforcement for Zwift Racing” Should be “Category Enforcement to preclude edge case riders from Enjoying Zwift Racing” Only a guess as not seen data choose or model used, CP30seconds (Maximal Anaerobic Power) has skewed enforcement up to Cat B for me, As a sprinter (1800+w) was and will be dropped from every race within 5 minutes, sooner if there is an sort of incline, due to minimal aerobic power. @James Bailey – looking forward to a result based system, similar to IRL, would be great as would a least have a chance of competing, rather than… Read more »
Updated, thanks!
Wouldn’t it be better to default it to use “60-days OR the most recent period where 3 or more race results exist within a 60-day period”? That way if someone does a load of races (say ZRL), then has 2-3 months of not racing on Zwift (say the summer), then comes back to racing it would default to using their 3 most recent race results within any 60-day period regardless of whether that was more than 60 days ago, and then starts using their current data once they have 3+ races since their return?
No, I don’t agree. There are a lot of other reasons why people would have time away from Zwift and racing/riding outdoors is only one of those.
I’m also not saying that I necessarily agree that 60 days is the right number, mind.
It’s a tough one to get right, you can’t please everyone. Just look at the latest Zwift Classics races, especially Bologna. You have C cat riders putting out 3.7w/kg or more for 19 1/2 minutes and these results stand and stay in the league tables so how do you stop these obvious B cats spoiling the results for genuine cat C riders? Here’s an example https://zwiftpower.com/events.php?zid=3054598
I wish I had the answer..
those C results are XD
Yeah I had a few like that in my Bologna Classics race the other day – and remember that is all without them having any drafting, so imagine them in a ZRL race with draft! However hopefully the way that Category Enforcement works with using a range of values from 2mins to 50mins will mean that riders of that power level will start to be auto-cat set as Cat-B since it doesn’t require them to have a 20-mins 3.45w/kg (or whatever it is) to be auto-cat upgraded.
60 days is a fair number of days.
Bum firmly on the fence then over the time period eh? Lol! Fair enough, so long as it is still being fine-tuned and improved rather than set in stone (like the old Cat system) then that’s good – and Auto-Cat has definitely been a MAJOR improvement already for the integrity of races, and simply not having them blown apart and ruined by sand-baggers or under-catters Also looking forward to seeing how your work on a results based system goes – can you say whether you’re planning to hybridize things so that Cat is partially based on Watts/CP/etc. and partially on… Read more »
Are the category boundaries “And” or “OR”? Do you just have to meet 1 of the 3 to be placed in the higher cat or do you have to meet all 3 to be placed in the higher cat?
OR. Just meet 1 of the 3.
Right, but for Cat D shouldn’t it be, e.g., CP w/kg<2.62 OR 150w on zwift power (I was closest at 152W)
Any estimates on when the cat enforcement numbers will be auto published, whether it be on ZwiftPower or in Zwift itself so we don’t have to keep bothering James to look it up for us😂?
My understanding is that we are going to work on this in the next few weeks.
Can I race in A without yet being classified?
Yes, you can always race up in categories.
Nope, without any prior history I was only allowed to enter E
I am a 63 year old and 66kg rider. My ftp the last 12 months has maxed between 200 and 210. After nearly 3 months of outdoor riding this year I had only one ride remaining within the 90 day Cat calculation period and that one ride had an avg power of 3.2w/kg . So on my first Zwift Race on 6/19 I was forced into Cat B, where I of course finished last. Historically my results have been: CAT Position Date B 9 of 9 6/19/2022 C 2 of 8 5/3/2022 C 2 of 4 4/13/2022 C 1 of 5 4/11/2022 C 10 of 32 4/6/2022 E 37 of 62 4/4/2022 C 7… Read more »
But now you would be a C cat racer with the new boundaries, so your argument really doesn’t make sense anymore.
The current model for CATs is terrible for light riders. And if I manage to improve to 3.3w/kg I get bumped into B againand will again be in last place. The categories should be result based instead.
Agree 100% on results based cat enforcement. Im a 75 kg rider. I was off the bike for an extended time and when I started riding again I entered a few races. I would ride at the top w/kg allowed in the D category so as not to be DQ’d from the results on Zwift Power and would be 4 over mins behind the “winner” at the end of the race. If I could put out enough power to stay with the lead pack I’d get DQ’d from the results. 90-100 kg riders definitely have the advantage in the lower… Read more »
Love the idea of results-based categorization.
Thank you for all the work you do to continue to make Zwift racing fair and fun!
intervals.icu is great. I check out most of my rides there, imported from Strava. It’s free but I contribute because I make so much use out of it, and the operator is always working hard on improvements.
difference between B->A vs C->B is wild y0
I’m not complaining about results – I could lose weight and be competitive. Or train harder.
My 20 min FTP was solidly B. I’m fat so have no issues going downhill, but have no 5 min to sprint power (10-50 min power is pretty flat, 5min to sprint power curve could be done on a single speed, zone 2-3).
is this what looking to CP is designed to capture vs FTP? To level the field if you have some power for your weight but watch everyone disappear on Hills and sprints?
Age should also be a factor for determining which category an athlete should be in. I’m 71 years old and I keep getting put into C category. I will never even come close to staying with riders in C categories.
You might not, but I got well and truly dropped by a 77y/o rider the other day in my Cat-C race – damn that guy could ride – so age isn’t generally a good indicator, some people are fitter/faster than others at their age (I’m certainly not the fittest 40y/o around, haha!)
you get put in any particular Cat because of what your WPK is capable of.
What I would like to see is an A and A+ category. As a low/mid A it is pretty disheartening to enter a race and be blown away by people who can hold 5.5-6w/kg for 20 mins or 8 w/kg for 5 mins etc…one of the main reasons I have stopped doing ZRL since going up to A
With category enforcement, it would be great to see more categories. Even an option to have say between 3 and 8 categories depending on the amount of races. Zwift could split up the fields evenly by power or results based.
Couldn’t agree more. CE may prevent sandbaggers in cats B-D, but not in cat A!
Results based category could be interesting. But is it not easy to be cheated? when I get close to the upper limit, I register and race some un-important races where I finish last one on purpose in order to lower my results-based grade. Then I go back to ZRL (for example) and I win easily.
The simple way around this would be to take your X best results during the defined time frame (like ZP Race Ranking already does, taking your best 5 only in the 90 day period). So if you do a race as a training piece perhaps, or have a really bad day, or are actively trying to game the system it doesn’t alter your rating.
Please, please, please WTRL use this for the new season’s racing!!!
I guess the 5% increase explains a cat C race I did last night, top 6 all had HR around 140bpm, mine was 165bpm and I was on the limit all race. Checked these riders on ZP and they had all been racing B races all summer but now where C again. Bet they couldn’t believe their luck, tempo ride for the win. The winner last night had a HR of 146bpm, previous 8 races they were a B and had an average HR of 167bpm and finished between 30-50th. Clearly they had an easy ride last night for the… Read more »
Probably just an easier / weaker effort on their first ride back after taking the summer off. I did a ride after three months off zwift and got shellacked, and it dropped me back to C the next ride. Now I’ll ride like crazy to get bumped to a B to finish in the bottom 1/3 B by spring.
We should have promotion/degradation based on calendar year results.
Where can I find my individual numbers that are actually used?
Currently you cannot. That’s why I mentioned intervals.icu above, which will give you an idea of what numbers Zwift is seeing…
I’m not sure this statement is entirely correct, “New or returning Zwifters who don’t have enough recent activity data in their account are placed in the “E” category of Category Enforcement races so they won’t interfere with properly-classified riders What exactly do you mean by “not enough recent activity” ? I am a 66kg C rider but had only 1 race within the last 60 days and that ride was just over the threshold for B, so on my first race on 6/19/22 I was forced into the Cat B where I finished last. So unless something has changed a… Read more »
If you rode “just over the threshold for B“, then you are not a C-rider, you are a B-rider. Zwift’s CE categorizes you according to your best numbers…
I assume you did not undertand my question/comment since you responded to something else.
My comment was that “not enough race activity” in my understanding of English means less than three races when in fact even one race means your cat will be determined by that one race.
So a more correct statement should be
“Riders with any activity within the last 60 days will be placed in the category based on the average of their recent rides.”
Appreciate this is a work in progress and admire the progress James and team are making – however absolute priority has to be to make this user friendly if we are to grow Zwift racing beyond the hard core. Just tried explaining this all to a newbie and even found myself lost along the way. Hopefully ZWIFT have some decent CX and UX folk from outside the industry helping them on design from a new user perspective.
I am in the incorrect C Category Enforcement group. Should be D as I am in ZwiftPower. This problem resulted from me using a dumb trainer in a race (I was out of town) and recording NP of 176 instead of the more normal average of 150.
Any way to adjust for this? I am 79 so not likely to get any faster !!
Seems like Category D thresholds should be </OR , not /AND thresholds for Category C
website mangled my post. </OR not /AND for cat C
It’s been a couple of months and I’m still confused by the new boundaries. It could be because my mind is still based on 95% of 20 minute power, but the bottoms of these new levels (at least the B level) seems too high to me. According to Zwiftpower, I’m a very low B (ZP puts my average 20 minute power at 3.29 W/kg – my best 20 minute power, not 95%, is in the 3.5 range). Intervals.icu puts my CP at 3.27. So traditionally, that’s low B. I’m fine with that. I am nowhere near the front group when… Read more »
Hi I have a question about category enforcement. I am a C rider for over a year now according to Zwiftpower. Now since yesterday Zwift excludes me from races in the C category by category enforcement. Looking at the average wattages I am clearely a C-rider. I am 68 years old, and to my experience at my age it becomes harder and harder to stay at the fitness level i was. So how can it be that I am excluded from C races by category enforcement?
Ummmm why are C and D the same. Having recently been “promoted” from D to C and coming last in most events csn be offputting. However, i am flipping the narrative and saying i am tso good I am better than athletes both half mybage and with twice as much zwifting experience.
apologies for typos. hard on a little mobile and no specs for an almost 60 year old. i love Zwift and 100% agree with CE and tweaking thereof of zwift etc. My last issue is with Zwiftpower. lwts have running state treated as imprtantly as riding..perhaps a flip screen/tab for running FTP and results
It seems that one of the wonky edge cases that isn’t explained in the FAQ is what happens when you have Zwift history in the past 60 days and try to register for a race that doesn’t have an “E” category. “New or returning Zwifters who don’t have enough recent activity data in their account are placed in the “E” category” That makes sense – but then if the promoter doesn’t offer an “E” category you’re only option appears to be to register for the “A” race? Is that because “E” isn’t considered the “lowest” category but is considered an… Read more »
i’m a c rider who is able to achieve 3.0w.kg and not winning or getting near to podiums in C cat races i’m really disspointed to find out tonight whilst i was looking for a race tomorrow to find out i can’t enter into them anymore? How can that be? i’m finishing in 20th position in most C races and now i’m supposed to race in B races with just 3w.kg? Terrible outcome for me personally. Real shame
I feel like you basically get punished for riding a ITT.
I’ve did one around the short volcano circuit CCW and gave it my all (3.9W/Kg for 13′)
Result: I’m no longer allowed in the C-category and I’m losing my standings in the overall GC for ‘Flat is Fast’ and ‘TT Club racing series’
That’s not a punishment… it’s an upgrade. To your proper category! Welcome to the B’s. Smash it!
Every race longer than 15minutes I will probably be obliterated. Even with C on the longer efforts it was difficult to hang on.
I would love to know how they estimate some of these stats. I have done the Alpe and other tough racing over Christmas. I set a 60 day best 20 min best of 237w and a 30 min best of 230 but they have my zFTP calculated as 243w which is what they say I should be able to hold for 40+ mins. I am comfortably a C on ZP and no other stat on CE put me over limit bar this one which puts me into B on CE.
I have a question for mixed races: If a woman can enter in the D category of “mixed” races but has a B category in “women only” races. Shouldn’t the result for female riders also be based on the woman’s category within the “mixed” race for the overall result for women? Of course in a woman’s only race the category enforcement would already separate the riders in their own categories, so all would be fair. But in a “mixed” race, it makes it pretty difficult for a D category woman to win against a B category woman, if both have… Read more »