It was over 3.5 years ago when we launched the Tiny Races – innovative events designed to give you a solid VO2 max workout across 4 back-to-back races. They were an instant hit, and we fine-tuned the setup by modifying category setups, disqualifying “snipers” who didn’t race all 4 events, and using a variety of courses.
But over time, we realized that Tiny Races weren’t actually delivering a very “pure” VO2 max workout. Instead, most riders ride below VO2 max for the first several minutes, followed by a sprint finish.
A good workout, to be sure, when repeated 4x. But could we do better? Could we structure races so riders can accomplish a true VO2 max training effort, with extra motivation from the race environment?
The Big Idea: A True VO2 Max Workout Disguised as a Race
Garmin says, “Improvements in VO2 max typically arrive in the form of increased stroke volume (the amount of blood pumped with each heartbeat), increases in blood supply, and adaptations in your muscles at a cellular level that help you store and transfer energy more efficiently.”
But how do you improve your VO2 max?
The simplest traditional VO2 max workout looks something like this: 3-5 intervals at 110-120% of FTP, each 3-5 minutes long, and each followed by an easy rest of the same length as the interval. Something like the “15.9” workout in Zwift – a straightforward VO2 max session, named for the atomic mass of Oxygen:

So a rider with a 300W FTP might do these intervals for a V02 max session:
- 345W (115% of FTP) for 5 minutes
- 5-minute rest (50% of FTP)
- Repeat above 5x
I’ve structured the VO2sday Micro Races to replicate this traditional VO2 max workout in a motivating race setting, complete with a time-based GC. Sign up at zwift.com/events/tag/vo2sday/.
Structured Workout Racing
The VO2sday Micro Races are nothing like your typical Zwift scratch race. Here’s how these races are distinctly structured to be engaging and fun while delivering a proper VO2 max session:
- 5 races in less than an hour – that’s 5 hard VO2 max intervals
- Very short efforts: Each race is very short, with a target completion time of 3-5 minutes, just like a good VO2 max interval
- Recovery time: Races are 10 minutes apart, so a 5-minute race leaves you with 5 minutes of recovery before the next interval
- Mix of courses: Each week’s race courses feature a mix of flat, climb, rolling, and even downhill parcours. Riders with lots of pure watts have the advantage in some races, while riders with strong w/kg have the advantage in others.
- Compound Score categories: Since results will be driven by your power numbers, riders will be categorized (A/B/C/D) based on compound score, not Zwift Racing Score. This takes into account your zMAP and body weight. (May 5’s races are categorized based on zFTP, while we work out the proper compound score setup…)
- Mass start: While riders are broken into categories, these are mass start events with all categories starting together, so everyone has riders ahead to chase. (Remember, the goal is to push as hard as you can for the duration of the race, not to sit in the pack and conserve so you can sprint to victory in the last 15 seconds!)
- Drafting is disabled, so these are effectively time trials. (Yes, you’ll want a fast TT setup.) Hopefully this forces you out of the “sit in then sprint” mindset, and into “hold steady high power for the duration” mode.
- GC-Based Final results: overall rankings are based on your cumulative time across the 5 races (see link below).

May 5 Race Details and Signup
Here are the courses for our kickoff races:
- Tempus Fugit (flat): 2.75km, ends 450m after the lead-in finishes
- Quatch Quest (rolling): 2.5km, ends on rollercoaster climb in Titans Grove
- Hilly Route (climb): 2km, ends just after KOM arch because we can’t create events under 2km in length
- Flat Route Reverse (rolling): 2.7km, ends on JWB Bridge
- Jungle Circuit (downhill): 3km, ends on a dusty descent

Sign up at zwift.com/events/tag/vo2sday/ >
Time-Based GC Results
Final GC winners in each category will be available on ZwiftPower at https://zwiftpower.com/league.php?id=3268.
Questions or comments?
If this concept proves popular, I plan to make this into a weekly race series. But I need to hear from you! I’d love to hear your feedback after you complete the first batch of Micros on Tuesday. Share it below, along with any questions or comments you’ve got before the races.
Will they also run 3 times a day like the Tinies ?
Scheduling is fluid currently. If they’re popular, I may try to run them 1-3x the day we run them.
Would definitely be interested if so. Current scheduling is at 3am here😴
Please add something a bit later. Even if the field may be a bit smaller, it will give more people a chance to try this style of event. (Kiss 2 km races ran a long time ago)
I like the concept, it is just what I was looking for, but also 3am for me 🙁
These are 10:00 AM for me, so I’m good. 😎
Yeah same here … these are currently 3am VO2wednesdays … doesn’t quite roll of the tongue. Would be great to have the same times as the Tiny Races. Zone 1 (7pm Australia East Coast) is perfect when ZRL isn’t on!
I am still at work when they are run so going to miss them also.
You buried the lede: no drafting?! Will be curious to see if people still cluster together even though there’s no point.
This is exciting. There was some scope creep in the Tiny Races as it felt like they tended to get longer than when I started 3 years back to the point where 70% of each race was just drafting and this will just be all out effort all the time
Oops, fixed.
1st of all thanks for your time and ZwiftPower , its my go to for the stats . These micro races saw them and signed right up. Being older its hard to out sprint riders half my age . Tiny races little long to hold on to the main pack then out sprint them close to the finish line. Now have a better chance with shorter races . Thanks Eric . Any way you can create a 70+ age division , next year leveling up 😂
Oh I forgot , great no drafting and using TT bikes , thanks again .
This sounds awesome! I don’t see them in the Zwift companion app yet, though. Any idea when they’ll be posted?
They’re already there…
Stop looking on Zwift Companion. Look on zwiftpower.com and search for “VO2.” They all come up.
Cool idea. Thanks for all you do Eric!
Can’t find them in tbe Events section of the CA, help please, tx.
Scrap that, found it. Pity they are evening races, dont suit me at all (cant sleep after racing in evenings). Good luck though, they sound great.
Why not go with one set of races every other hour, right out of the gate? The community is hungry for unique training/race formats and I’m sure there will be plenty of engagement in every time slot.
Worst case scenario, drop time slots that don’t get engagement.
I’m not sure James Bailey would even let me do that. 😂 I’m sure we can add more times if it’s popular, though.
I think mirroring the three time slots you use for the Tiny Races would work fine. There seems to be time slots for just about everyone.
I’ve been hoping for a concept like this for several years and it gets announced just after I hoped to cancel my Zwift subs for the summer.
Great news it isn’t using the quite frankly awful Zwift Racing Score to decide pen allocation!
Not sure how you would do it, but I think declared height should be part of the pen allocation process, due to insane cDa advantages to little people in Zwift.
Neutralised frames and wheels?
Hope this takes off, a few years ago a Zwift club did something similar, that allowed blokes to take part on alternate Sundays.
Thought about neutralizing frames and wheels, but I think it’s fun to have a bit of choice about which bike you use.
I need a level10 bike to keep with riders have my age .😂
I need an e-bike. 😎
I think you should reconsider and assign a bike for these. Since there’s no draft and it’s all going to come down to how much power you can put out it, I think it’s better to not have to worry or think about changing wheels every 5 minutes. If everyone has the same frame/wheels they can just focus on 5 min power.
This sounded really fun until I saw no drafting!
What’s the matter, afraid of having to work hard? 😉
Haha I’m just a lazy sprinter 😅
Solidarity, Reg.
For me I’m just too tall to push air the whole time, and zwift won’t take that into account for any of their categories.
Draft actually provides an additional motivation to ride hard, particularly in Mass Start events. I’d say it’s a real mistake to make these TT events instead of Races.
Eric, you sly dog, you know just how to reel me in! I’ll be there in a flash, diary willing 🙂
See you there, Alistair!
Fantastic idea!
Hello Theia… and thanks!
This is amazing! I’ve been dying for there to be something like the tiny races during the week (hoping you run them 3x as I’m sure they will be a hit).
I hate to be greedy but can we get another set of short races on Thursday too?!
Can’t wait!
Would love to do this, but it is in the middle of my workday.
Would have loved to be a part in this first run. Unhappy that I am hit with some late work that day. But hopefully I can join you another/next time you set it up. Great idea 🙂
I would love to race these! Unfortunately they’re too early in the evening for me.
Great idea Please add something a bit earlier 🙏🏼
Are these actually TT events, or will they be races with Draft?
I understand the idea is to push hard, but I’ve found the motivation of maintaining draft from riders ahead leads me to better power numbers thatn TT where when I’m feeling like I can’t push anymore there’s no incentive in trying to hang on a bit longer. I know it’s a mental thing but particularly in Mass Start races it has helped me to good power results but I’ve always done poorly in TT events, like ALWAYS, lol.
These are “no draft” events. Basically a mass start time trial.
Anyone else thinking that two, maybe even three of this inaugural week’s routes, could be quicker on not TT frames?
So basically, you came to the conclusion that the Tiny Races weren’t hard and lung busting enough, do I read that correctly? 🙂
Kidding aside, sounds like a lot of fun, will definitely try to fit those in my schedule somewhere!
Great idea! Thanks ERIC! But, doesn’t work in my workshedule!! ,(🏥)another day for sure! Go, go, go…
Honestly think this is going to miss the mark with many – I was stoked for these until I realized they are no-draft (guessing many currently signed up are in for a surprise) – for those who enjoy road bike racing, the draft (and hanging in it) is a huge part of the motivation and what makes it interesting.
~4-7 minute draft legal races on courses that encourage attacking would be awesome version of this
Im sure many will still enjoy this format – totally get the idea in terms of structured workouts – just was super excited and now less excited personally – poor me
“~4-7 minute draft legal races” is what we already do with the Tiny Races. I’m not trying to replicate that, though…
Yea I get that – 3-5 minute then I guess – moreso would require more specific pieces of courses that force things to not be “sit at tempo and then sprint”
a guy can dream haha
Great idea, Eric! Would appreciate it if you could add more event times throughout the day for those of us in other parts of the world. I like the Velos Klick 1km Challenge, but it’s only once a week… I think. At least whenever I’m awake.
So go for a gravel bike for race 5?
Definitely not, a huge part is tarmac and what’s left in dirt is mostly downhill so faster with a more aero bike
Is todays zFTP classification based on watts or wkg?
Since it is only 1 climb and no draft, raw watts = higher speed
For lighter riders, it will feel like constant Burrito.
Why not just take zrAPP’s Compound score? Since the vElo scoring is very accurate, I’d assume their CS is as well.
zFTP W/kg. I want to use Zwift’s Compound Score for classification, but I need to figure out what that should be set to first. Zwift isn’t providing much info to help in that regard… but we’ll get there.
It is a brilliant concept but please enable draft as long as zFTP is used for classification, especially if wkg is used, or use raw watts instead since that’s what drives speed at most parts of the courses
Thx
Brilliant. Working out which bikes to use and what music to listen to 🤔
Just finished the first races. Absolutely brilliant Eric! Can’t wait to go again next week 🎉🙂👍🔥
Thanks Eric, it was great ❤️Please, plan those races every week !
Can I just say, a well put together series.
absolutely horrible, legs and lungs hurt. But was very well attended and I look forward to next weeks series.
love Batman
I liked it. Seems like enough people it could be split into categories across timeframes. My only complain is that the frame rate on my Apple TV crashed due to the number of riders.
Great event Eric. Really nice for a change after ZRL. I liked the mass start as kept it mental.
Yes the mass start for all categories was brilliant. So much fun to set off with everyone 🙂👍
Fun series!
Looks like we might have lost all data for race 5? Oh no, there it is.
The results of the 5th race were almost immediately available on the new zwift.com page.
I couldn’t even see any live race data at zwiftpower when I originally posted, nevermind results data.
@Eric Schlange so cool of you to try something new! Like many have said, I did miss the draft… and I personally always want a power-up. Also – any thought to maybe have this as a mass start with a staggered start- D starts first, C 15 seconds later, B 15 seconds after that, then A out of the pen last? That would give the A’s someone to chase, while giving the lower categories just a little more rest between the sessions. I’ll come more prepared to suffer next time!
Hmmm…. the chase setup idea could be fun. Doesn’t give lower categories more rest, though, unless I start them later than the other categories in subsequent races…
Right you are – I was imagining just one offset time, but of course they’d be offset at every 10 min mark! But, I still think the chase format would be more fun – even MORE so if the D’s got double draft… 😁
I’ve included your draft suggestion in tomorrow’s “How the Race Was Lost” post. 😉
I enjoyed this format structure. This was a great vo2/anaerobic workout that was fun (in a painful sort of way) and motivating.
I really enjoyed it. Eric, thank you!
1. Tuesday is great, the perfect day for vo2max for those with an IRL race on the weekend.
2. The mass start is great. It’s a battle for the overall standings, your group, and yourself (TT): 3-on-1.
3. I like this kind of racing and it suits me better than losing sprints four times in an hour to riders with 15+ wt/kg. Because I’m old (43 years old).
Thanks for setting this up Eric. As a time trialist who hates boring training/workouts I loved this race concept!
So please keep the no draft and no power-ups. Just the rider, bike and 4-5 minutes of pain. The mass start was really motivating. All and all a great addition to tiny races on Saturday. Same time next week? 😄
Loved that!! A tough hour for sure, but really beneficial. Thanks for organising this, Eric, and very much looking forward to more!!
This was a lot of fun! Type 2 fun, but fun. 😀 I love the format and execution. I’m not sure if I tell people that I did a VO2 workout today or that I raced (five times in an hour), but it was great training either way. I loved the banter and funny comments, so my bonus motivation to finish fast was so I could recover my senses and get back to bantering with everyone. As a Sufferlandrian, this is my kind of party! 😃
By the way, I’m still looking into how to buy back my soul that I sold somewhere in these races…I mean my friend did, not me. 😅
This was awesome, Eric!
Question: Is your time calculated using the gun time or the time you cross the start line? Just trying to determine if it’s a disadvantage to be lined up at the back up the pack before the start.
Thanks!
It’s gun time! You can see it on my recording from today: https://www.youtube.com/live/kDuVEVLPybo?si=oBnEv–fTSRUfjOj&t=1639
Raced it today and it was insanely hard. The concept as of now favour heavy big watts riders too much, especially when it is zFTP based. Until you get the compund score in place, I think you should enable draft. For race 1-3 as a light rider you need to turn yourself inside-out completely empty your tank in order to match the raw watts, way above VO2MAX. Race 4-5, the heavy guys just Z2 away, because all matches as burned. With compund score in place, I think it will be more equal.
At 85.5kg I was one of the “heavy guys” (5th heaviest out of 58), spent all my time in z5 and z6 for all races, averaging 400 watts (about 16th best) for the 5 races but still only managed 30th overall. Only 2 of the top 10 overall were over 75kg. All the racers I saw, whether heavy or light, were pushing themselves to their limits in all 5 races. No weight class missed out on a hard VO2 max workout as far as I could tell. Have a look at Luke Walton’s YouTube Rough Draft Cycling video of the races to see a heavy guy (82.6) with a great effort but still not cracking the top 20:
https://www.youtube.com/watch?v=mGC1PFL7X7E&t=2894s
Which cat were you in?
That was awesome, I had a blast (except for the third one). Need more descent on the last one too for heavy riders :). Thanks for organizing this. We want more!
Awesome event!! More please, I should be recovered by next Tuesday…so painful but fun. 👍
Eric, this micro races were so much fun and challenging at the same time! Please plan it again our friend missed it due to his dentist appointment and feeling a big time FOMO!🤣
Great concept, really enjoyed it and able to push myself a lot harder than a vo2 max workout on my own! Thanks
It was really fun! Thanks!
Just a couple of thoughts: on climbs, lighter people have a HUGE advantage, just as heavier people seem to have on downhills. Would a completely flat range of courses make things more balanced for everyone?
Micro Race race power numbers from week 1 isn’t likely to increase successful racers’ Compound Score; VO2, zMAP… They were too short!🤓😬
Sub 5min race data isn’t properly processed by zwiftpower.
Even in pen D, every race was too short for at least the winner.
Looking at all finishers results at Tim Hanson’s zwiftracing site (racers not on zwiftpower are included as “private player xyz”), the time for 10th postion of ~50 pen D racers per race was…
4min34.3secs
4mins28.4secs
5min24.2secs (winner was 4mins58.4secs)
4mins56.1secs
4mins34.2secs
Good to see there are three zones over Tuesday 12th (1200 plus 1800) and Wednesday 13th (0000) according to BST.
Unclear what criteria are used for pen allocation, web page signup link from zwiftpower gives no clues, only pen I can’t join is A (but I’d expect to be in the weakest or second weakest pen).
Very surprised to see Coolhand signed up for the weakest pen (D) in the 1800 BST zone, surely something is wrong currently with the signup process!
Looks like the time slots for us West Coasters are no good. Why not make a 5 or 6pm time slot? Many of us work….