Category Enforcement is a crucial part of fair community racing Zwift, since it forces riders to enter the correct race category.
This post is a thorough look at all things Category Enforcement including the history, usage, and possible future of this feature. Let’s dive in!
The Backstory
For the first several years of Zwift’s existence, racing struggled with one key problem: riders could join any category they wanted. While the A-B-C-D category scheme was meant to break riders into competitive groups based on fitness, an A rider could just hop into a D race and blow it to pieces.
Some riders didn’t know any better, while others certainly did. But reasons didn’t really matter, because in the end, the effect was the same: a diminished experience for those who raced fairly.
Of course, “real” Zwift racers knew the final results lived on ZwiftPower, where sandbaggers would be removed from results for racing out of category. But that didn’t fix the problem of overpowered riders blowing apart lower-category races, especially in the C and D categories.
In February 2022, Zwift began testing a feature they called “Category Enforcement”. The goal was to set a minimum race category based on a rider’s historic power numbers on Zwift, blocking riders from racing categories below their detected ability.
And it worked! Race organizers quickly began adopting Category Enforcement for their events, and Zwift continued to tweak the model to improve racers’ experience. Today, approximately 2/3 of all race events on Zwift use Category Enforcement.
How Category Enforcement Works
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. Every ride is used, whether you save the activity or not.
This power data is used to compute your zMAP and zFTP, and you can see these values by logging into my.zwift.com.
zMAP and zFTP are 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
The following Category Enforcement boundaries are used to determine the minimum race category for riders in open or “mixed” races (where both men and women can participate):
Open RaceszMAPzFTPCategory A≥5.4W/kg≥4.2W/kg and ≥250WCategory B≥4.2W/kg≥3.36W/kg and ≥200WCategory C≥3.3W/kg≥2.625W/kg and ≥150WCategory D<3.3W/kg<2.625W/kg or <150WCategory EN/AN/A
Race events that only allow women have their own set of boundaries:
Women Only RaceszMAPzFTPCategory A≥5W/kg≥3.88W/kgCategory B≥4.2W/kg≥3.36W/kgCategory C≥3.5W/kg≥2.625W/kgCategory D<3.5W/kg<2.625W/kgCategory EN/AN/A
Note: exceeding just one of the thresholds (zMAP or zFTP) will bump you up to the next category. You don’t need to exceed both to be upgraded.
What are zMAP and zFTP?
These two crucial values are Zwifty versions of the commonly-used MAP and FTP metrics.
MAP (Maximal Aerobic Power) is your power at VO2max (maximum oxygen use). FTP is the wattage you can stay below and sustain for longer durations, while going above it causes fatigue to occur very quickly. A trained cyclist on fresh legs should be able to sustain their MAP power for 4-6 minutes and their FTP for 40+ minutes.
Zwift hasn’t shared their precise formulas for calculating zMAP and zFTP, but they told us zMAP is calculated using a standard MAP formula. They’ve also said zFTP “is calculated based on the CP/W’ formula, which uses a few different values plus a linear regression to find the line of best fit. We don’t use one single time interval to determine the FTP.”
We aren’t sure what that zFTP description actually means, but so far we’ve heard from multiple riders whose zFTP matches their Critical Power (CP) on intervals.icu. So our theory/hot take is that Zwift is actually calculating our CP using Morton’s 3-Parameter CP Model and calling it zFTP because cyclists are more familiar with FTP than CP.
Finding Category-Enforced Races on Zwift
Category-enforced races are generally fairer, more competitive events than those not using category enforcement. So how do you spot category-enforced events? Easy! They include the category enforcement symbol:
Finding category-enforced races is easy, too. If you’re browsing Zwift events online at zwift.com/events, just click “Filter Events” and select “Category Enforcement” to restrict results to Category Enforced events. The same can be done in game:
Lastly, the Zwift Companion app lets you show only events with Category Enforcement, and clearly indicates which events are category-enforced:
Category Enforcement FAQ
But I’m a B on ZwiftPower!ZwiftPower’s categorization scheme is not attached to Category Enforcement in any way, and probably never will be. While most racers’ ZwiftPower category matches their Category Enforcement category (because both schemes use similar FTP thresholds), riders on the edges of categories may find they are one category higher or lower on ZwiftPower. That’s OK. Just race whatever category you’re assigned!
Zwift says I’m an A, but I should be a B.Sometimes riders are convinced that Zwift has placed them in too high of a category. We haven’t seen many examples of this actually happening, though. Usually a rider just doesn’t understand how category enforcement works. On some occasions the rider may have had an equipment malfunction that gave them too high of a power reading – or they may have let a stronger rider use their account. In those cases, unfortunately, you’ll probably need to just race that higher category until your power numbers expire after 60 days.
If zMap and zFTP thresholds are in W/kg, couldn’t someone just increase their weight and thus lower their category? “Reverse weight doping” may have been possible in early iterations of Category Enforcement, but Zwift has made changes to make it basically impossible. Take that, cheaters! See this forum thread for details.
Why am I being placed in the E pen?The E pen is for riders who don’t have enough data in the system to be properly classified. The best solution is to put in a hard 12+ minute ride (20 minutes+ is even better), then come back and try signing up for your event again.
See more FAQ on Zwift’s Category Enforcement support page >
Next Steps
What’s next for Category Enforcement? Based on a recent post in the forum, we know that Zwift is working on showing our fitness metrics and minimum category in Zwift Companion. That’s a good step.
We’ve got three more things we’d love to see:
Zwift needs to make its fitness metrics simple and effective, then apply them across all aspects of the game. Prime example: we can now see our zFTP in our dashboard, but the game is still detecting FTP using the “95% of your 20-minute best” model. This is unnecessarily confusing.
Make a few minor changes to ZwiftPower, to make it more Category Enforcement-friendly. Indicate when a race uses Category Enforcement – this will reduce the “my ZwiftPower category doesn’t match my Category Enforcement category” confusion. Perhaps swap out the unused “Anti-sandbagging measures” toggle on the events filter to be a “Category Enforced” filter, for easy searching.
While Category Enforcement is doing a good job of forcing riders into proper categories, race organizers are hoping for the ability to define custom power thresholds for the categories in their events. This could make racing much more dynamic, as the same riders wouldn’t always at the top or bottom of their category.
Questions or Comments
Got thoughts or questions about Category Enforcement? Share below!