As I started putting together this week’s Tiny Race post (congratulating last week’s winners and announcing this week’s routes), I wrote up a section discussing the new Anti-Sniping rules and various challenges I’ve had trying to roll them out.
That section kept growing, until I realized it had taken over the post, making it rather long and awkward for all the racers who just wanted to learn about this week’s routes.
So I’m doing a separate post instead, a sort of brain dump full of notes explaining what I’ve learned and am learning about race management via ZwiftPower. Buckle up. Let’s go!
Anti-Sniping: How Did It Go?
As you may recall, we implemented a “no sniping” rule for the first time in October 15th’s races. Specifically, if you don’t finish all four Tiny Races in the timezone you race, you’ll be disqualified from ZwiftPower results for whatever races you did finish. Because it’s not sporting to hop into a race with fresh legs when other riders are coming in with tired legs after finishing earlier races.
So how did the new rule work out? Pretty well. Or pretty badly, depending on how you look at it. Here are the numbers of race results (riders crossing the finish line) vs sniping DQs for each time zone:
| Results | Sniping DQs | DQ Rate | |
| Zone 1 | 1353 | 273 | 20% |
| Zone 2 | 1546 | 300 | 19% |
| Zone 3 | 475 | 112 | 24% |
Do I like the fact that 1 in 5 riders who crossed the finish line got removed from the final results? Of course not. But do I think it’s fairer to remove those riders, so only riders finishing all 4 races are in the final results? Yes.
In a glorious stroke of irony, I got to DQ myself as a sniper, thanks to a Zwift bug that caused my finishes in race 2 and 3 go unrecorded by Zwift or ZwiftPower. You can see my full 4-race series below… and yes, I’ve reached out to Zwift to see if I can help them track down this bug.
My guess is the “sniper rate” will drop over the next few weeks as riders figure out what’s going on. Or maybe it won’t decrease at all. Here’s why…
ZwiftPower Ranking Madness
I confirmed this weekend that even when you DQ a rider from a race in ZwiftPower, they still “earn” ZwiftPower ranking points. The way it works is so goofy it has to be a bug, not a feature.
When the rider is DQ, their result for the race shows no points. All good. But if you look in their profile, if their race result in that DQ race was good enough to be in their top 5 results and thus boost their overall ranking, you’ll see the DQ race points in that list.
One particular rider from this weekend is a perfect example of how this bug works. The rider finished the first three races, but not the fourth, so they were disqualified from those three races. But if you look at his top 5 points results, 3 of the results are from the Tiny Races he was disqualified from!
I’ve reached out to Zwift, posted a forum question, and posted in the Zwift Racers Facebook group, all to ask if anyone knows of a disqualification code or some other trick I could use to truly remove ranking points from results. We’ll see what I uncover…
Editing Race Results on ZwiftPower
I’ve never seen this documented, so I’ll explain it here in case it helps some other race organizer in the future. Let’s open the ZwiftPower kimono just a bit!
ZwiftPower gives organizers the ability to edit race results in very specific ways. It starts by clicking “Edit Results” from the options menu at the top-right:

From there you’ll see a comma-delimited list of all the results, grouped by category and ordered by finishing order. Each result looks like this:
B, ua, 3, 2707, Eric Schlange [ZwftInsdr], 58160, 3397809063136107568, 0.000,
Those data fields are Category, country, PowerType, Team ID, Name, Zwift ID, Result ID, Penalty (seconds), Notes
There’s a second tab titled “Copy rider to apply edit”. This is where the magic happens. If you copy one of the results from the “All Riders” tab into “Copy rider to apply edit”, you can change the data. For instance, my result in Race 4 was changed from what you see above to this:
DQ, ua, 3, 2707, Eric Schlange [ZwftInsdr], 58160, 3397809063136107568, 0.000, Only finished 2 of required 4 races.
(Note: I added the explanatory note to all DQs, but I can’t see any place it actually shows up in ZwiftPower.)
So edit the results, then click “Update Results” and viola, the results list is changed! (Sometimes it takes a minute or so for the results to be regenerated.)
Changing a rider’s category to another code like “DQ” or “1R” or whatever will remove them from the results. They’ll be visible in the “Unfiltered” tab of the race results, along with the DQ code you gave them.
It’s important to note what you can’t change in the results. You can’t remove a rider completely – you can only edit their record. And crucially, as explained above, you can’t change the points result they earned – all you can do is hide that result. But it will still show up in their Best 5 scores, if the result was good enough.
Time Penalties? Nope.
In what I thought was a stroke of genius, I realized that adding a time penalty might solve my problems. “Perfect!” I thought. “I can add 5 minutes to a sniper’s finishing time and they’ll move to the bottom of the results and not get a points boost.”
Wrong. ZwiftPower still calculates the ranking result based on the initial finishing order. The time penalty changes how they’re displayed, but doesn’t change the points.
DQ Code Minutiae
A variety of codes have been used over the years to flag ZwiftPower results. These codes are poorly documented, and in fact race organizers can put in whatever code they’d like. But rumor has it, some codes behave in special ways.
Early feedback from some of the “snipers” was that they didn’t like the “DQ” tag next to their name in ZwiftPower, so I changed that to 1R, 2R, or 3R, depending on how many races the rider had completed.
But as I pored over the data, I realized that my custom 1R, etc codes weren’t behaving in the same way that a DQ code behaves. To be specific (and I know we’re getting into the tall weeds here), a DQ code takes the rider out of the Race Quality calculation, which in turn modifies the overall ranking points for the race (read how ZwiftPower ranking points are calculated).
But even if the rider’s ranking was taken out of the Race Quality calculation (meaning they finished in the top 10 of the race) they still get their ranking points added to their “Best 5” results, boosting their score. Which is a serious bug, because the rider is now gaining a ranking boost, without “contributing” their own high ranking to the Race Quality score.
Best 5 Score Calculation
Adding to my frustration, ZwiftPower only re-calculates riders’ Best 5 results on a nightly basis. I’m not sure when it happens, but I would guess between 9pm-midnight Pacific time.
So as I’m messing around with various DQ codes, I can’t tell if any of them remove results from the Best 5 list until the next day. Hmph.
Shrinkage Rates
Along with all the silliness above, I’ve also been pondering race shrinkage this week. Specifically, how the rider counts shrink throughout the Tiny Race process.
For example, this is what Zone 2’s B category numbers looked like this week:
- Signups: 193
- Starters: 167
- Finishers: 151
- ZwiftPower-Registered Finishers: 148 (if you aren’t on ZP, you’re not in the final results)
- Final Finisher Count after DQ: 123 (24 riders DQ for racing less than 4 races, 1 rider DQ for no HR)
So that’s interesting – actually a very low rate of post-race shrinkage (final finisher count is just 2.6% reduced from in-game finisher count) if you remove the “sniping” DQs. With the sniping DQs the final results list was 18.5% reduced from the finishers list that pops up in Zwift at the end of the race.
But the story is very different in lower categories. Glancing at the numbers, it appears that shrinkage increases as categories get lower, which isn’t surprising. Look at the D race in Zone 2, for example:
- Signups: 79
- Starters: (unknown)
- Finishers: 62
- ZwiftPower-Registered Finishers: 49
- Final Finisher Count after DQ: 17 (28 riders DQ for racing less than 4 races, 2 rider DQ for no HR, 2 rider DQ for using ZPower)
Without the sniping DQs, that’s still a shrinkage rate of 43.5% (62 finishers, but only 35 would show up in ZwiftPower after HR and ZPower DQs)! Add in the sniping DQs and the final results list is 72.5% smaller than the original finishers list!
Why is this? Multiple factors, really. While some D racers are serious, dedicated racers, many are newer riders who don’t know how Zwift works. So you get a lot more Ds who aren’t even on ZwiftPower, for example. And more Ds who don’t read the event description or follow Zwift Insider and read up on route and rule details. You’ll also see more ZPower-using riders in D than you will in B. And lastly, D racers are by definition not as strong as higher-category racers, so there’s more of a chance they may blow up and not finish all 4 races.
These shrinkage rates bug me, and here’s why: it’s (nearly) 100% preventable. Consider this:
- Some riders are removed from results because they aren’t signed up for ZwiftPower. Surely Zwift knows the ZP registration status of every user at this point. Why not let event organizers require ZwiftPower registration before you can join the event?
- Sniping DQs: these could be greatly reduced if Zwift allowed event signups to “stack” – that is, you sign up for one event, it also signs you up for the others in the set. Alternatively, I think these numbers will decrease as riders learn the rules, and perhaps if I can communicate them more clearly.
- HR and ZPower DQs: these are a smaller problem than the others above, and Zwift has actually just enabled a solution in the past week or so, allowing event organizers to prevent ZPower riders or riders without HR from joining their event.
Wrapping It Up
I’m not going to lie: I’ve asked myself, “Is all this hassle worth it?” I can definitely see why some race organizers just “set it and forget it”, creating simple races that work within Zwift+ZwiftPower’s abilities and require zero upkeep.
But I’m also not interested in hosting “just another Zwift race”. If I’m going to put Zwift Insider’s name on it, I want it to be special.
On top of that, I’m interested in learning how ZwiftPower works from a race organizer’s point of view, so all of this has been rather interesting to me. In that way, this post is just a continuation of what I’ve always done with Zwift: dig deep and figure out how it works. Then share that information with others.
If you made it this far, chapeau! You have a bright future ahead as a Zwift race organizer. Ride on.
Your Thoughts
Share below!
It is amazing the amount of work you put in. I want to thank you for all that you do, not just these tiny races, and this write up, but the whole Zwift Insider. Kudos to you!
Well done, keep it up and thank you.
I second that.
Is there any way of only requiring one event sign up (to ride 1), and completion of this automatically enters you for the next in the series, 1-2, 2-3, 3-4, 4-cool down, and making this the only way to enter the races?
Not without building some sort of huge backend system that integrates with Zwift’s API in some way (along the lines of what WTRL has done). And I’m not going to go down that route.
I am one of those Ds who blew up by Race 4 (a few weeks back). My initial races I was fine but as I got more competitive I went too hard and blew myself up 🤣. Working to get back . It’s definitely more fun to do all four . I regretted bailing .
Do it anyway!
I wonder what the shrinkage rate on this post was? Clicks -> first section -> etc, etc, etc -> your thoughts
High. Very high! 🙂
Eric, thanks so much for all your hard work on this. The Mini Races are by far the best racing I’ve done on Zwift. They’re competitive, hard, and very enjoyable. I’ve begun to organize my Saturday around being able to compete.
It sounds like it’s a lot of work so I want you to know that I appreciate it, as do the teammates I race with.
Thanks!
Thanks James!
Enjoying the Tiny races, best event to really push my 1/5 minute power (new 1 minute pb last week) but my legs are gone by race 2, I’m one of those who jump into a higher cat to make sure I’m on my limit for the race, I agree you should do all 4 and I did albeit slower and slower in each race 😀
you are a D running in B and you complain? do you want to win them all as in zrl?🤣
Tried these for the first time last Saturday D cat . Enjoyed them. Another possible reason for the higher number of DQs in D may be that riders took too long in race 3 and didn’t finish in time to start race4. I only made race 4 start by approx 90 secs and there were plenty behind me. I’ll try a few more over the winter.
i noticed there wasnt much time after each race too. i had the same thought about people who were still racing while we were on the next start-line.
My thinking is a little different on this. From ZwiftPower”s perspective of calculating category enforcements, I would think that all recorded efforts even the DQ’d ones should be used if they make it to the top 5. Why would we not use those efforts to still determine category? The DQ should impact the riders results in the races, but the efforts should still be counted.
The efforts are still recorded by Zwift and used to determine their Category Enforcement category.
It would be awesome if you can get ZP to redo the points calculations after the DQ. This has always been a problem.
I had a connection issue on Saturday and connected 15 seconds too late so I missed race one. Raced the next 3 which hurt, but are my favorite races for the week.
I have raced in 477 events on Zwift and I love the way this series is run. Yes I have 3 dqs in Zwiftpower and the three races were only for pride. For the record, I m a D racer although some feel I should be low C but my ftp puts me as high D.
I think you’re spending a lot of time/effort to try to make it fair for those who don’t compete in all (4) of the races…control what you can. It’s ok if the individual race results count towards a rider’s category classification even if they are DQ’d from the series for only racing some of the (4) races…the weekend event is essentially a (4) race series with no drops…if it was a (4) race series over (4) weeks with no drops, those not finishing the series would still have their individual race results count in their ranking, regardless if they competed in enough races to finish the series. Truthfully, there’s more than a few of us who spin (1) of the (4) as a recovery ride if we’re just no recovered or that (1) course doesn’t suit our strengths.
Keep the series going…even though on Saturdays in SoCal I’d rather be outside.
Can I suggest allowing C’s and D’s to miss one race?
Does ZP let you edit peoples points on primes and score the race off that? Tour de Hisp calculated rankings based on the sum of finisher, fal, and fts points for rankings. If you can edit those, snipers could be given 1 point which would send them to the end of the results. (I’m guessing you can’t edit them.) e.g. https://zwiftpower.com/events.php?zid=3075707
”ZwiftPower still calculates the ranking result based on the initial finishing order.”
So that is what creates the weird fact that finishing order determines the ranking points even in races with primes, where the final result might differ substantially from the finishing order.
Yep.
Is there any way to only offer rankings points based on the final standings for each zone after the 4 races? That way, those that complete 1-3 races will still be included in the final standings, but will likely be lower down vs someone that completes all 4? There is still a chance that people are “Sniping” by going all out in races 1 & maybe 2, and then cruising within 3 & 4. This way they might score well for 2 races. When only your top 5 results matter, there is presumably high incentive for this? (This is of course assuming ZP can stop giving points for a DQ rider, as without that fix it’s kind of all irrelevant!)
There’s no way to do that, as far as I can see.
I plan to ebter thrse this Saturday since ZRL recon is over. I think there will be more entries than ever for that reason.
Of course you are doing the right thing Eric.
I foubd the ecample a bit strange though. I don’t see why the person shoukd be DQ’d for completing the first 3 races in a row. They gained zero advantage.
If yiu experienced a bug, then there sureky nust be ityers unfairly DQ’d because of it too.
If Soneone completes consecutive races includung the first one, but misses either the last 1 or 2, that shoukdn’t be a disqualification.
Excuse my typing 😂
You make a good point, and this is something I’ve been pondering for a couple of weeks. I actually took a poll on Zwift Racers to see what everyone thought: should you be able to keep racing, as long as you don’t skip a race? Or should you be DQ from all races you finished, unless you do all 4?
The response, overwhelmingly, was to require all 4. (About 90% voted for that). I was actually surprised at how lopsided it was!
You DO gain an advantage from only racing, say, the first 3 races, though. Because you can empty yourself by the end of the 3rd, knowing you don’t have a 4th race. Or think of it this way: if you only raced the first race (and you KNEW you were only going to race the first race) how would that change your effort?
Not nearly the advantage you gain from, say, dropping into race 3. But still an advantage.
What is the representative value of such a poll, Eric? Asking race guns with their egos about the possibility to relax the rules is the same as asking vegans about meat products.
Disagree with your logic. I think asking racers what they think is fair makes plenty of sense. Asking anyone else would be like asking vegans about meat products.
I believe Cappuccino wanted to point out at the fact you had asked people on a channel where the sample was not diverse or sociologically representative enough. You should have asked people doing tiny races directly (in the race channel) to include hobbyists and sporadic racers to have a good sample. If I ask readers of a conservative newspaper about some liberal values such poll will be highly biased because the base sample is narrowed to one sociological group and I hardly can say “this is what population want”.
First of all, tons of kudos for arranging the tiny races. They are great fun and always pushes me to the limit.
I didn’t make the first race last weekend and got the DQ right back at me. Fair and square. It wasn’t a sniper attempt. I had login issues and didn’t make it in time. I expect many others of the 20’ish % have similar stories (including yourself it seems 😊).
Now to my point. If I were to do a sniper, I would take it easy in a race or two and all in on the other races. Probably there will be a fair amount of riders guilty of that sin without a DQ.
So, basically I don’t think DQ’ing “non all finishers” solves the issue. Actually I think the issue is in the ranking system. The “GC” should count more the the individual stages. But actually the GC doesn’t count at all
Couldn’t help myself 🙂
This is a quick and dirty analysis of per rider performance variation across the early tiny races on October 10th. First I calculate each riders 1m watt percentage difference from the category median in each of the four races. Secondly, I plot the difference between the max and the min difference. So, for instance, if you are 10% below median in your worst race and 10% above in your best, you get a 20. I don’t know what is a fair spread, but there is clearly variation between riders
It would be interesting to see how the median power of top riders changes throughout the four races. I have a feeling that Eric is wrong stating that people who race just first one or two races “empty their tanks” while others “save for later”. Within those 30 top guys nobody save for later, it is a full gas race, you are constantly on the limit.
Well done for documenting the process of repeatedly banging your head against a wall. Hopefully someone starts implementing some improvements rather than just minding it.
When I think about it, DQ-ing for dropping out doesn’t solve sniping. If I just wanted Zwiftpower ranking I could just target one or 2 races and go all out in those, e.g. race 2 and 4. Use first as a warm up, third for recovery. Roll through them with little effort. That would still be sniping, right?
Yes race rank sniping if you are expecting those two good races to put race points into your best 5. The warm up and recovery races will give you poor race scores but they probably won’t count as any of your best 5.
If a Race Ranking system only applied one score and therefore a moving ranking after each race then I would consider your proposed race strategy not to be Race Rank sniping as your rank would go up in two races and down in two races. It is the ZP ranking system that doesn’t deal with this issue.
Race Rank sniping & Podium sniping – possibly two different things. Your race strategy is aiming to give you the best chance of a win/podium and I see nothing wrong with that provided you meet the Race Rules. You might be choosing race wins over the overall win.
Also agree with Ian wholeheartedly that it’s the ranking system that is the problem. If rankings worked more like https://www.zwiftracing.app/ then every race would change your rank… that’s how it should work!
As long as the riders finishes all 4 I don’t consider it sniping, no. But of course I see why some people would consider it such!
In my mind, like any other race, you have to choose your battles to meet your goals, within the rules.
Also, keep in mind that if a high-ranked rider finishes a race (in ANY position), their ranking becomes a part of the overall points calculations, meaning they’re “giving” some ranking boosts to other riders. This is why the true bad-form snipers are racers who pull out and DNF once they realize they won’t get a top position. THAT is bad form.
Yeah, I often see top ranked riders pull out of races when they perform sub optimal (I won’t give any names). So extremely annoying when you know you beat a high ranked rider but they are no where to be found in the zwift power results!
Eric did you determine how many of the 25 DQ’d riders in the zone 2 B races actually achieved a result that improved their ZP ranking (although I get why someone without a hrm should be DQ’d)? I know I didn’t. If the DQ’d riders are back in the pack somewhere do they really matter? And in that case, shouldn’t you whittle this down to only the riders who are sniping successfully?
I didn’t determine that, no. No easy way to do that… would take hours (for all categories, that is).
You make a good point, though… one I’ve considered. DQing riders who finish midpack (or off the back) and (presumably) don’t really affect the race negatively is sort of pointless.
It WOULD be possible to only DQ snipers if, say, they finished in the top 20. And that may be exactly what I do in the future. The basic rule would be something like “Only riders who finish all 4 Tiny Races will be allowed a top 20 result in any individual race. Top 20 finishers with less than 4 races will have their top 20 result removed to discourage points sniping.”
The current anti-sniping rule isn’t set in stone. In the end, I want to minimize DQs, but also maximize fairness. It’s a balancing act, and will probably mean me changing the current rule. But I want to run one more week with the rule as-is, to see if people “learn” and we get significantly less DQs than last week.
Love the tiny races. I was DQ’d this week due to late sign-up caused by zwift update. Stupidly I was warming up with B brevet for 15 minutes and jumped into pen late, then the update put me a minute or two behind race 2 start. My results support the decision to require all-4. My best race was my first, race day’s 2nd. I did notice that ZP ranking wasn’t affected, thought that was a feature. I understand the need to keep the single race results “pure,” but think that worrying about ZP ranking is a bit much. I acknowledge that I personally want that ZP upgrade I received from last wknd ;), but if that was my goal, I could just cruise two races and work harder for 2 or 1, to focus on ZP ranking. IMO, this is the remaining snipe that can happen. Sorry, I only read most of the comments, so if someone made similar or there is already a bulletproof reply, I will sit back down.
Noob to “racing” and a DQ brought me here. lol! “racing” is a bit of a stretch, I’m currently one of slowest riders (not through want of trying, and slowly improving) on the whole of Zwift and entered a “tiny race” the other day as it looked short enough and flat enough for me to have a chance of going at a decent lick (for me) without fear of totally redlining and not completing the event. Managed to actually beat several folks in the race 2 of 4 I entered, including some Cat A and B riders (something seemed very fishy about that at the time as I usually finish last or near last in Cat D, now I kinda know why) but returning to my results a few days later saw the DQ against my name, oh the shame! I had no idea you are supposed to ride all 4 races consecutively – I’d already missed the first anyway as just picked whatever was upcoming in next few minutes and no word of these rules on signup that I noticed?
My question: If I enter other tiny races for just one leg so I can have the fun of competing and improving fitness, will successive DQs get me banned completely or incurr a bad rep?
Hi Mick,
If you read the event description, it explains that you can’t skip races and return. That’s sort of the cornerstone rule of Tiny Races.
If you choose to do that, you’ll get a DQ. It won’t get you banned completely or anything like that… you just won’t figure in the overall contest that is held across the 4 races, and your ZwiftPower profile will show a DQ.