Category Enforcement Update - Weight Changes [December 2022]

Hi racers,

We’ve caught wind of a way to gain an advantage in races related to user weight to lower the recommended category in the category enforcement system. This problem cropped up after we changed the frequency and timing at which the user metrics are calculated and was initially overlooked by our team.

Given that, we have made some changes with the goal of preventing this problem. Instead of using the most recent set weight from any Zwifter, we have started using the weight for calculations in the as explained below.

These changes are live as of this posting, so this post details what the current behavior is.

1. Weight

The weight used for category enforcement calculations in watts/kg (using zFTP and zMAP) will be determined by the average weight of all weights that were in effect at the moment that certain key peak power values of the power curve were set (within the last 60 days).

This means that as Zwifters change their weight, it influences all of their power metrics we record as opposed to just a single set of power metrics for a given activity.

The key durations of time that we examine are:

  • 3 min.

  • 5 min.

  • 12 min.

  • 20 min.

As an example, Zwifter X set their peak power records for various times as follows:

3 min. : 400w at 70kg on 23rd of October

5 min. : 380w at 72kg on 13th of November

12 min. : 340w at 73kg on 14th of November

20 min. : 320 at 73kg on 14th of November

The weight that will be used on the present day (e.g: 10th of December) will be 72kg (average of the 4 weights)

So, assuming zFTP=310w and zMAP=370w, this will equate to 4.30w/kg and 5.14w/kg respectively used for this Zwifter’s recommended category.

2. VO2max

With the changes mentioned above, it didn’t make sense to keep using the VO2max value for the category determination for two reasons:

  1. Because VO2max is a metric that already includes weight normalization, it uses the weight currently set in the user account. It is also calculated at the same time the other power metrics (zMAP, zFTP) are. Continuing use of VO2max with these changes would cause inconsistency with the weight average that will be used for the category enforcement moving forward.

  2. The use of zMAP - a proxy of the user’s maximal aerobic capacity - allows us to discontinue using VO2max in the category determination.

3. Categories Table

Here is how the new category limits should look given the above information:

Open Races zMAP (watts/kg) zFTP watts/kg 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 and <150W
Category E N/A N/A

We welcome your feedback! To keep the feedback focused and on topic, this post will be locked 7 days after the original post.

Ride On :ride_on:


I welcome the concept as I’m sure many will, but unless I’ve missed it, this update has a big flaw…

There’s no limit upon how much you can change your weight with a new weight entry, so people can sway their 60 day average weight with a big change up or down, if they so wish.

There are many riders with no weight update in months or even years. I know one rider who has weight changes amounting to ~19Kg loss over the last 60 days, another who has switched between 75Kg and practically double that number in the last 60 days.

1 Like

Glad VO2 max is gone (that was always going to cause issues), and some focus on weight manipulation too. Good job. 5m Compound Score could replace MAP too and then weight is only an issue for zFTP (or maybe not at all, if Compound Score became the key metric).

1 Like

I’m glad it’s been recognised as an issue and is being addressed…
il hold judgement till we see how this fix plays out.

Edit to add in agreement with @Gerrie_Delport_ODZ would locking the category for 10 or 14 days be an option… it’s enough to disrupt sandbaggers, but short enough to allow for genuine change?

1 Like

I am so exited to see al the development in regard with racing and trying to make racing more fair and fun (fun as in hard like racing should be)

But wouldn’t it be just easier to lock the category when it has been exceeded for 60 days. So for 60 days it can’t go lower.

I think you are making it harder on yourself than it need to be.

EDIT: I went form a C to a B with this change. So it seem to be working. :ride_on: (I am not a C I am just in a base training phase). I would not race as a C when I know I should be racing B



Are you doing away with the minimum watts floor within the zMAP column ?

1 Like

Same confusion D Category. A rider whose ftp is <2.625 w/kg but who’s ftp is >150 watts? Usual example… 80kg rider whose ftp is 2W/kg = 160 watts. Think the ‘and’ should be an ‘or’ probably


You are correct John. The D cat requirements should be “<2.625W/kg or <150W”

I don’t think so. Because it’s not your 60 day average. It’s the average of your weights on the days you set your peak power values.

If you’re trying to game the system you’d have to increase your weight AND set a new peak power value. If you then drop your weight back to your race weight you’d need to make sure you don’t set a new peak power value otherwise your average weight will be updated.

It’s still possible to game the system but it sure would take a lot of hard work as you’d need to set the peak values at the higher weight and then make sure you never exceed those peak values during an actual race (where you are using your “real” weight).


You are calculating zMAP incorrectly. Thank you have a good day. Mine should be nearer 3-5 minute power than using my 6 minute power. All sprinters and punchers will skew towards the 3 minute end.

I see the zFTP and zMAP info on my Zift page but the value is in watts while the cat enforcement is w/kg. Will you be displaying the weight and/or w/kg?

I mentioned in another thread - but this one is probably more relevant - please reconsider wattage floors, I think they’re reasonable to have in place but people who greatly exceed wkg limits while staying under the floor are an issue. Specific example I saw recently is someone who was putting out 4.6wkg for >20min but zFTP number only around 240w so not being pushed into A.

Some stepped limit might be appropriate - i.e. if 95% of 20 minutes is 4.1wkg and that’s 240w fine, B is definitely the place to be. If 95% of 20 minutes is 4.3wkg then push up to A. Just examples, not saying 4.3 is the right number.


I don’t think you are talking about me but I have the same numbers…
And I almost never win anything because with that ftp, in B, people ride too fast for me on flat, and I am exhausted when we get near the end.
I really think you don’t understand what riding near your treshold for the entire ride is… being able to do 4.6 wkg for 20 minutes is only useful on a few circuits (climbers gambit for exemple) but on the vast majority of races what is important is raw watts.


@xflintx - did you really just find this out? I’d discussed this with people the first week CE came out. Change weight up, wait a day, enter a bunch of races in the future, change weight back has worked the whole time, and I don’t think was a big secret.

people have definitely talked about it on these forums before and i know mr attoe actually tried it before that and found it was possible, possibly during the discussion

1 Like

Of course they knew about it, James posted in September which is now 4 months ago

But like you say, its been called out for the last 8 months in clear & simple terms.

1 Like

Weight appears to be Zwift’s green kryptonite (they won’t/don’t want to address it or even admit that weight manipulation is still a problem).

OK, scrub the above; they are trying to address it…duh :roll_eyes:

True, but since CE weight will be the average of 4 values, in order to offset the impact of the 3 other values, I suppose in theory the 4th entered weight would have to be something more drastically different than it otherwise would need to be (and therefore more obvious to casual inspection)?

I assume ZP will still show the entered weight for each event as opposed to the calculated average weight that CE will rely upon.

There will always be challenges especially with edge cases, my experience in ZRL B1 races is that they’re often dominated by light racers putting out well over 4wkg (and yes, they’re working very hard as evidenced by HR data). Some sort of graduated limits could go a long way, ideally Zwift would move to results-based categorization but that has its own problems with leagues like ZRL as opposed to one-off races. I just think as it is with hard power floors leads to more issues than it needs to.

1 Like