Category enforcement - does it even work?

Since Zwift integrated Zwiftpower and revised the category calculation, I get the experience that category enforcement no longer works.

Even though an event is classified as enforced, it seems that anyone can enter (I am a C). That was also often the case previously. However, you could sometimes (not always) experience, that the above-category participants were then removed from the results on Zwiftpower post race.

However, that does not seem to happen either anymore.

Does anybody know if that is a deliberate decision or a bug?

/Hans Christian

1 Like

There is no reason to additionally disqualify people when they are being enforced into the correct category.

There are always edge cases, but riders shouldn’t be DQ’d when they are already entering (at the time) the correct category for the race.

1 Like

This should not be the case if the event uses category enforcement, but it can be challenging to understand a rider’s category at the time they entered the race, since ZwiftPower does not always timely update their displayed category, and you don’t have access to their upgrade history.

‘There is no reason to additionally disqualify people when they are being enforced into the correct category’

I agree. Except: clearly, riders are not enforced. I have kept an eye on entries before the races and it is evident that long-time B-racers (and E) are free to enter.

It is annoying :worried:

Recent changes to the CE calculation mean that many previous B riders are now in C. When you see a rider with E category in ZwiftPower, that most often means that their profile has not received an updated category since that change was made. Can you share an event ID that you’re referring to?

It’s impossible for a rider to enter an incorrect category (unless they cat up) on a category enforced race.

It is likely you were looking at un-updated data.

So, I have noticed it on several occasions over late winter/spring and yesterday I got so annoyed, that I created this post today.

However, when I revisit the race result now on ZwiftPower (DBR Wednesday race), I can see that the E-cat racer who ‘won’ (pushing close to 4 w/kg on average) has actually disappeared from the result.

However there was also a B-cat entry who dropped out of the race just before the finish and he should not have been eligible to participate in the first place (there is no startlist where I can track him down anymore).

I probably won’t race much indoors in the coming months but I will make sure to collect some examples for you next time I go racing.

Thank you for your responses.

/Hans Christian.

It’s likely that they entered the “correct” category in that it was their category at the time having not completed any intense efforts. They would have been upgraded as a result of that effort.

If you click on the Filtered tab, it looks like the winner was excluded from the results. I haven’t seen this DQ code before

Screenshot 2023-05-11 at 09.07.52

If you click on the LIVE tab for the race, it will show non-finishers. The B rider was probably a C with a stale profile, who recently drifted down to C. It is frustrating that profiles are not reliably updated.

Their profile in ZwiftPower would not have determines which category they were able to sign up for.

Absolutely, the problem is that you can’t be certain of a rider’s CE category by looking at their ZwiftPower profile, because it may have changed without the profile showing it. It’s a visibility problem.

Sure, I understand that. My point was that organisers shouldn’t be DQ’ing riders because they haven’t updated their profile in ZP.

1 Like

FWIW we looked at updating everyone, but there were technical limitations preventing us from doing so.

Because Zwiftpower.


I would agree to disagree that riders should get DQ in CE events.

Example rider hasn’t done any rides in the last 60days od 90days if CE will be extended.
He does a Z1/Z2 ride and then enters cat D race…but his history is B or A. He wins a race with a solo breakaway averagine 4.0Wkg.

This to me would qualify for a DQ … i would even go as far and give him SANDBAGGER Tag on ZP.

zFTP calculation is somehow broken for a while now…the only thing keeping me from racing in Cat C in zFTP events is my zMAP Wkg. There is many with 4.5Wkg for 20mins that can enter Cat B cause zMAP Wkg is set to high at 5.4Wkg. It works for Cat C limits much better.


But that will only happen once and then he is back in his proper category. If you want to use CE then you need to respect the process.
I agree there are some very obvious cases of people not riding and then entering the minimum category.

CE does have some things that can be improved, but in the grand scheme of things we have better racing than before.

We’re looking to extend 60 days to 90 which will help to an extent.


I get the sneaking impression, the bar for A cat is being increased via stealth - I have never seen so many B riders well over (previous) cat limits remaining B riders.

Even now, we cant be sure what the limit is as, ZFTP is derived from various timeframes and efforts across every user, the way that ZFTP is gained doesnt seem to be uniform.

This is a race that just started

There are 2 riders with crazy 5min or 20min power as zFTP (B)…you got to be kidding me.

EDIT: it looks like there 60days numbers are much lower :man_facepalming:

I can post all day this type of riders in Cat B it’s just crazy.

There are absolute shed loads of riders like those…

I think the MAP boundary needs to be looked at, as its probably far to high for B > A. The 1-5min power is what is going to separate racers and it just seems worse than before.


I guess the issue is some people really only race once in a while, and otherwise are not putting out true efforts, so 90 days of data will certainly help, but it only takes one person to blow up a race in some cases, so while I do like Category Enforcement overall I do think if you put in an effort that is far and above your category (4w/kg in D cat for 20 mins as an example), that type of thing should still be able to result in a DQ.

At some level I don’t see why the CE algo can’t determine your cat was clearly defined by efforts nowhere close to your max and retroactively DQ you in that type of a situation. Basically a post race sanity check as part of Cat Enforcement, not for riders that are a few decimal points above the cat w/kg (those riders can get pushed up next time), but for riders who clearly were in the wrong category to begin with.