This week, our Top 5 Zwift Videos feature a speedy Zwift badge, a ZRL team time trial, race-winning advice, and one Zwifter’s try at A-category racing.
Can We Ride 100km/hr on Zwift? Advent Week 2
Fernwee and the Ride Beyond Crew set out to complete 5 weeks of challenges during December. One of those challenges was to unlock the 100kph badge on Zwift. Can they do it?
Zwift 100 KPH Unlocked // How To
If you want to unlock the badge for 100 kilometers per hour yourself, Lone Cyclist will show you one way to get that speed.
We Rode Our First Team Time Trial and This Happened…
Benji Naesen coaches the ZHQ Ravens through a Zwift Racing League TTT. See their strategy and how it worked out!
The Key to Winning a Zwift Race
After winning a race, Oli Chi (ZRace Central) wants to help you do the same with tips about sprint timing, positioning, using PowerUps, and drafting.
How Hard is Racing A-Grade on Zwift?
Tilly Field (Tilly on a bike) joins an open A-category Zwift race in Yorkshire. It’s definitely not easy!
Got a Great Zwift Video?
Share the link below and we may feature it in an upcoming post!
Zwift has rolled out a fresh Mission for January, and it’s all about trying out some of the many workouts in Zwift’s library, including the recently-added shorter workouts.
Getting Started
To begin the Mission, select the mission card on your homescreen and click to register:
Once you’ve registered, clicking the mission card will show your progress for the Mission.
Completing the Mission
To complete the mission and earn the achievement badge, complete 5 unique workouts.
The Fit & Fast Mission runs from January 3-31, 2023.
Cycling has a history of unbelievable performances being … unbelievable. When Ed Hoole went thermonuclear at the Europe & Africa Zwift Worlds Qualifier, Kevin and Mike were just a bit incredulous about Hoole’s performance. Just a bit.
Well folks, sad but true, Hoole’s 8.2 bajillion w/kg on the final climb of the Worlds qualifier were, uh, not real. Dr. Zada investigated and delivered a blistering report that put Hoole in his proper place.
After KBH made some bold claims about what he would do if Hoole’s performance was real, Nowhere Fast just had to do an emergency podcast to cover Hoole’s flight too close to the sun.
About the Podcast
Nowhere Fast is a part of the Wide Angle Podium network and focuses on virtual bike racing. It includes Zwift commentary, interviews, and coverage of real races on fake bikes. Get it on Apple Podcasts, Podbean, Spotify, or anywhere else fine podcasts are shared.
SISU Racing took the months of November and December to pilot two separate race series concepts. After working out the niggles and fine-tuning the schedule, they’ve just announced the SISU iTT and SISU Climb race series, beginning in January!
SISU iTT
You, your TT bike, and a race against the clock! Fresh routes every week, available in eight time zones (midweek thru weekend)
SISU iTT event times across various timezones
Each week is a stand-alone race. There is also a monthly GC classification on ZwiftPower for racers who complete all races (see January GC).
Important update: WTRL sent the following email on race day, January 24th:
On behalf of WTRL & Zwift, we regret to inform you that the much anticipated Segment Battle Point element of ZRL has been placed on hold and will not feature in Round 3. We know many people, including ourselves, were looking forward to this new element. The project has run into a number of unforeseen issues over recent days and the ZRL organizing team do not feel confident that it can be launched successfully at this time.
We greatly apologize for any disappointment this may cause you. Zwift Racing League will continue with the original formats and once we feel that everything is working optimally and accurately with SBP’s, we will look to run some test races later in the spring/summer.
In the meantime, we wish you success for the remainder of the Zwift Racing League Season.
WTRL, organizers of Zwift Racing League, have just announced the details of “Segment Battle Points” (SBP) – a new way to score in ZRL races. Since ZRL is by far the largest racing league in Zwift, and this is the first time the league’s scoring structure has been modified significantly, this is big news in the Zwift racing world.
I chatted with Martin at ZRL to make sure I understood the SBP concept completely, and to get his take on why SBP are a good addition to ZRL. Looking to understand all things SBP? Let’s dive in!
Starting in Round 3 of the 20022/23 season, all riders will score Segment Battle Points. The idea is to place several races within a race and will create plenty of points battles amongst groups of riders. You’ll need your wits about you to figure out who your rivals are to beat them.
Every member of a team will receive a number 1 to 12.
As racers signup for each points race, this numerical order will be converted to 1 to 6. (example: team members 2, 4, 5, 7, 8 and 11 sign up, they become 1,2,3,4,5,6 respectively for the race.
This number correlates directly to the group of riders you will be battling for SBP points against.
Group 1: Rider #1 from each team
Group 2: Rider #2 from each team
Group 3: Rider #3 from each team
Group 4: Rider #4 from each team
Group 5: Rider #5 from each team
Group 6: Rider #6 from each team
SBP points are awarded on the order of First Across the Line at each nominated segment within each group and are determined by the number of teams in the division:
16 teams in the division 1st = 16 points, 2nd = 15, 3rd = 14 etc with 16th winning 1 point per designated segment.
10 teams in the division 1st = 10 points, 2nd = 9 points, down to 1 point for 10th per designated segment.
Where a team fields fewer than 6 racers, the team will not be able to compete for points available in those groups where they have no representation. I.e. a squad of 4 would not be able to win points in groups 5 & 6.
A pre-race list of all signed-up rider groups for each division will be available here.
Digging Deeper
The explanation above raised some questions for me, so I chatted with Martin for clarification. Here are more details, in FAQ style.
How will the riders be assigned numbers 1-6?
WTRL will assign members of each team a number from 1-12 based on their own algorithms. Presumably (though WTRL isn’t saying this) rider #1 will be the strongest on your team, and #12 the weakest. No teammates will have the same number.
When your 6 team members sign up for a particular race, WTRL will assign them a number based on their ranking – basically numbering your race team 1-6, from strongest to weakest.
The takeaway here is that riders and team managers have no control over who gets placed into which number group. That is handled by WTRL’s algorithms, with the intention of creating 6 competitive SBP groups between the teams in the division.
How will I know who I’m up against?
WTRL will publish a list of all signed-up rider groups on their website. Of course, teams could always wait to sign up riders, or swap riders at the last minute. But my guess is most teams will have most of their riders signed up well ahead of time.
This will allow you to see which group you’re assigned to, and see the names of the other riders in your group. Those riders are your SBP competition for the race!
How are SBP scored if we go through the same segment more than once?
SBP are scored every time you go through a segment. So if you’re racing 6 laps of Lutece Express, that means 6 times through the Lutece Sprint where SBP will be earned.
In a division with 16 teams, a single rider who takes 1st place on all 6 segments would earn 6*16=96 SBP for the race.
Note: it’s possible that only certain segments will award SBP, although Martin thinks for ZRL Round 3 all segments that award FAL will also award SBP. If this changes it will be reflected on the race schedule.
Race Implications
SBP will certainly affect the way ZRL points races unfold. A few examples:
No easy segments: you’ll be competing against your group on every sprint and KOM segment, so sitting up and conserving for the finish will cost you points.
Fewer “FTS Slackers”: related to #1, SBP will cause riders to think twice before dropping from the front group to spin easy and only attack certain segments for FTS, since doing so will surely cost them in SBP.
To bridge or not to bridge? If the pack breaks up into groups, you’ll want to know what groups contain your SBP competitors. Are they up ahead? You may want to push to bridge. Are they behind? Go to the front and keep the pace high so your group stays away and you grab easy SBP on upcoming segments! To the smart go the spoils. This adds a fresh element of strategy and intelligence to ZRL races, making a splendid use case for Sauce for Zwift‘s “Marked Athletes” feature.
Rewarding well-balanced teams: with every team member competing for SBP against riders near their abilities we should see fewer race wins from “top-heavy” teams and more wins going to teams where all riders perform well in the SBP competition. This rewards well-rounded teams and makes it harder for teams with just 1-2 strong riders to take the overall win.
More focus on segments: SBP will serve to further reduce the importance of finishing position, while increasing the importance of your performance on segments. For example: in race 1 of round 9, a team of six could theoretically score a maximum of 1110 points… and 432 of those points (38.9%) would be from SBP! (This assumes 12 teams in the division. SBP will decrease if there are fewer teams.)
Race 1 (Chain Chomper) Points Distribution
This chart shows the maximum points a team of 6 could earn in the race.
Of the points above, I think the first four are positives. But WTRL+Zwift may need to tweak SBP based on the last item, because races with a high number of segments and/or a high number of teams will end up with SBP making up the majority of race points, which is probably not the intention. It may be that WTRL will need to restrict SBP to certain segments in some races (including race #4 of this round, which features 8 segment attempts).
The Visibility Challenge
One challenge facing the implementation of SBP is the difficulty of seeing your competition in game. With no in-game indicators showing who is in my SBP group, how will I know how to ride strategically against them?
Can you spot your SBP group in a peloton of 70+?
Sure, we can keep it simple: stay in the front group, and push hard on every segment. But even this strategy is flawed, because I can’t easily see which (if any) of my SBP competitors are also in the group. And what happens when I get dropped from the front group? How do I know which groups contain my SBP competitors?
There are some hacks racers will undoubtedly use. ZwiftPower’s live view lets you highlight multiple riders, then shows their location in the race, refreshing every 30 seconds. Sauce for Zwift lets you mark riders, then shows a near real-time view of their timings on course.
Those solutions may have to work for now, but in the future it would be nice to have better visibility in game. What if your group members were highlighted green in the rider list, like Meetup members? Or what if your group members showed up with numbered bibs or something else to make their avatars stand out?
There are lots of things that could be rolled out to improve the SBP experience in game, but for this round it looks like we’ll be experimenting with a basic version of SBP that rewards those who do some homework and implement hacks for improved battlefield visibility.
Wrapping It Up
In the end, I’m always a supporter of experimentation and innovation in the Zwift racing space. So I applaud WTRL for rolling out this change, and I’m looking forward to seeing how it unfolds. Game on!
Your Thoughts
What do you think of ZRL’s new Segment Battle Points? Share below!
Give This Guy a Ride On: John Walkley Attempts 4000km in 7 days
Team Vegan’s John Walkley is an A-cat British racer who is currently 1,542 kilometers into the longest Zwift ride of his life.
He’s trying to set a Zwift endurance record of 4000km in 7 days, which he says is “the hardest challenge I’ve ever attempted.” Why is he doing it?
My son, Edison, has been extremely ill since February this year, and it has been a very challenging time for him, both physically and emotionally. The Children’s Hospital at Stoke has been instrumental in helping him through this by providing not only essential medical care, but by supporting us as a family and helping Edison cope with anxiety about medical procedures and dealing with his long-term illness. When things have gotten especially tough, they have swooped in with interactive play, art therapy, surprise Lego drops, fidget toys, raising his spirits and improving his well-being, time and time again.
John is undertaking this challenge as a fundraiser. His goal is to raise £5,000 to buy toys and equipment to allow the Children’s Hospital at Royal Stoke University Hospital (England) to continue their great work in lifting children’s spirits through play and making a bad time a little bit better.
A screenshot from the start of John’s massive effort, with Team Vegan teammates in support. When this post was published, he was just over 42 hours of ride time, with 1,542 km completed.
Saturday marks the end of the 2022 Rapha Festive 500, and now it’s time to focus on the new year. This week’s selection will help you start off strong!
The second Zwift Fondo also takes place this weekend, but this list will highlight the notable community events, as the fondo has already received a good amount of attention.
Every week, former hour world record holder Victor Campenaerts leads a group ride where riders can join and ask him questions in his live stream. This week, Victor will be helping riders complete the longest route in Zwift: the famed PRL Full course in London. This course will likely take riders 4-6 hours depending on their pace.
Victor will be holding a brisk pace at 3 w/kg on the flats and 4 w/kg on the climbs, likely completing the route in less than 5 hours. This is a great opportunity for riders to complete this iconic route in as little time as possible!
GCN’s own Cillian Kelly will be leading a social group ride to celebrate the start of the new year. (Cillian manages statistics for GCN, and was the Zero to Hero rider on the GCN channel. Check out the Zero to Hero series as Cillian tackles a Tour de France stage.)
The group ride is open-paced, so riders are free to go at whatever pace pleases them. This 45-minute group ride will take place over the Watopia Flat Route. Riders who complete the event will also receive the GCN kit in Zwift.
Pas Normal, a Copenhagen-based cycling brand, is hosting a social new year ride as a way for riders to unlock the new Pas Normal in-game cycling kit. So far, this is looking like a pretty big group ride with 150+ riders already signed up! These events will be happening every Sunday throughout the month of January.
The leader will be holding a steady 2 w/kg and up to 2.5 w/kg on the climbs. The ride takes place over 90 minutes on Suki’s Playground, so riders will likely complete ~4 laps of the course. Riders must complete the full 90 minutes in order to receive the kit.
Up for a challenge? Team Italy is hosting an endurance ride over 40 laps of the Volcano Circuit with Saverio Addante, a well-known endurance Zwifter. Saverio has many notable indoor achievements, including riding 1000km non-stop, several veverests (virtual everests), and over 120,000 km logged on Zwift. There are numerous badges that riders can unlock on this ride since Zwift offers a badge for the first completion of 5, 10, and 25 laps. Many riders will also achieve the 100-kilometer and 100-mile badge.
There will be a lead and sweep, but participants can go at whatever pace they would like. The ride will likely take upward of 5 hours, so be prepared for a long time in the saddle! Riders must complete the full duration for the Team Italy in-game kit.
Join Saskatchewan, a Canadian cycling club for a metric century around the newest expansion to the Makuri Islands, Urukazi. This ride is meant to be a fun social ride where riders can enjoy the company while ticking off some mileage to start the year. Leaders will not be present in this ride, but a relatively high attendance is expected.
The ride features four different categories, allowing riders to ride with a group around their pace. Over the course of the 100km, riders will complete several laps of the Island Hopper course.
UPDATE: on October 7, 2024, Zwift released Zwift Racing Score, their new method of ranking and categorizing riders. While the old category scheme is still used for some events, the vast majority of races now use Racing Score. Read all about Zwift Racing Score >
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 90 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 Races
zMAP
zFTP
Category A
≥5.1W/kg
≥4.2W/kg and ≥250W
Category B
≥4.1W/kg
≥3.36W/kg and ≥200W
Category C
≥3.2W/kg
≥2.625W/kg and ≥150W
Category D
<3.2W/kg
<2.625W/kg or <150W
Category E
N/A
N/A
Women-only race events have their own set of boundaries:
Women Only Races
zMAP
zFTP
Category A
≥4.8W/kg
≥3.88W/kg
Category B
≥4.1W/kg
≥3.36W/kg
Category C
≥3.2W/kg
≥2.625W/kg
Category D
<3.2W/kg
<2.625W/kg
Category E
N/A
N/A
Note: exceeding just one of the W/kg thresholds (zMAP or zFTP) will bump you to the next category, unless you don’t meet the minimum zFTP wattage requirement.
Example: if your zMAP is 3.4W/kg, your zFTP is 2.8W/kg, and your zFTP (watts) is 140W, you can race in pace groups D, C, B, or A. Even though your zMAP and zFTP would place you in Pace Group C, your zFTP (watts) meets the criteria for (and allows you to race in) Pace Group D or above.
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 “the estimate of your actual lactate threshold”, but haven’t shared the actual formula.
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
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 90 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.
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!
Change Log
June 9, 2023: Updated zMAP limits after Zwift updated them today. Also changed power window from 60 days to 90, per Zwift’s change today.
Last week’s Tiny Races were all held on Watopia’s Two Bridges Loop, but each race got longer as we progressed through the set of 4. Riders seemed to enjoy this approach to the races, so we’ll probably do it again with another route in the future!
Congrats to William Ng, a D rider in Zone 3 who took 1st in all four races. Watch him with the first three below (check out that Sauce for Zwift overlay!)
*Shonagh Pinecone tied with Manja Peters for points, bu Shonagh takes 1st with the higher race finish.
This Week’s Routes: Short Circuit
This week’s short circuit theme finds us racing around tiny loops. Some are so tiny that we’ll race multiple laps, while others will just be a lead-in plus one lap. Either way, each course has its own challenges, spots for early attacks, and strategic finishes.
Race 1: Downtown Dolphin (3 laps, 5.7km) Racers know this route well. The question is: who will go long, and can they stay away?
Powerup: Feather 2x
Race 2: Volcano Circuit (1 lap, 6.9km) After a lead-in from downtown Watopia we’ll hit one hot lap of the Volcano, finishing at the banner. This finish is always an interesting one, timing-wise. Use your aeros wisely!
Powerup: Aero Boost 2x
Race 3:LaGuardia Loop (1 lap, 4.4km) A quick lead-in, then a hot lap in Central Park that ends in a tricky sprint. The shortest race of the day will be fast… but you can catch your breath afterward in preparation for the race 4.
Powerup: Anvil 2x
Race 4: Mech Isle Loop (6.06km, ends atop dirt climb) This is approximately 1.5 laps, finishing atop the dirt climb. Gravel bike or road bike? Choose your weapon!
Zwift displays preliminary race results in game when you cross the line, but points are computed after all four races are finished, with final results on ZwiftPower. (We have to do some data processing on our side to compute results, so if your rankings don’t show up right away, be patient.)
Riders will earn points based on finish position in each of the 4 Tiny Races. The category winner of each week’s series is the rider with the most points across their timezone’s 4 races. Here are the links for each timezone’s results on ZwiftPower:
Tiny Race rules are simple. Four races, four rules:
You must have a ZwiftPower account, because final results are processed by ZwiftPower (learn how to sign up)
No skipping then returning. These races are meant to be raced as a set of 4. If you need to leave early, that’s fine… but once you miss a race in your hour’s set of 4, don’t come back and race another or you’ll be disqualified from that race since you rested while others were racing! (Example: racing only races 1 and 2 is fine. Racing 1, 2, and 4 is not – you will be DQ from race 4. And if you race 2, 3, and 4, you’ll be DQ from all those races, since you skipped race 1!)
Heart rate monitors are required for podium finishers
ZPower/Virtual power is not allowed. Smart trainer/smart bike or power meter required.
Join a Chat & Chill Cooldown
Immediately following each hour’s racing, we’ve scheduled 30-minute “Chat & Chill” events where riders from all categories can spin out their legs together and have some fun chatting about how it all went down. Find them at zwift.com/events/tag/tinyraces.
Festive Ride with the Erics – Kit Winners and Ride Review
A good time was had by all on this morning’s “Festive Ride with the Erics” event hosted by Zwift co-CEO Eric Min and myself.
410 riders joined us for 4 laps of Richmond UCI Reverse, a route with a few climbs in the first half of each lap, and a flat second half. Although Eric and I had ride leader beacons over our heads, this was an open-paced group ride. A strong group jumped off the front and stayed away to the finish, quite a few hung with the Erics, and a good number of riders were grouped up behind the beacon group as well.
We had a nice time chatting on Discord, too, with around 50 riders in voice chat.
This wasn’t an easy social ride – the beacon group(s) took nearly 2 hours to finish! Since riders were required to finish to be eligible to win the Zwift kit, it felt like one of those “whoever keeps their hand on the car the longest wins it” sort of endurance contests after a while, as various riders messaged “work calls, gotta go”, “dropped my chain”, etc.
But hundreds of riders held on to the end. Chapeau to all!
Negative Splits
Eric and I held a pretty steady pace around 2.4-2.6 W/kg for the first three laps – a bit higher on the climbs, a bit lower on the descents and flats. But somehow, each lap got just a bit spicier, as evidenced by our E Main St climb times:
Lap 1: 3:54
Lap 2: 3:45
Lap 3: 3:26
Lap 4: 2:40
But Eric was getting his last ride in before a few days off the bike, and he wanted to stretch his legs a bit… so on the final lap he went to the front and pushed harder, especially on the climbs. I hung on until the last climb up E Main St, when I sat up and let Eric go away up the road… because I’m a helpful red beacon and wanted to help the stragglers. (The huffing and puffing you heard on Discord must have been someone else! 🙂)
My final lap times:
Lap 1: 27:42
Lap 2: 26:51
Lap 3: 25:59
Lap 4: 24:18
Drumroll, Please…
As promised, two finishers (one man, one woman) were drawn to win Zwift’s new kit bundle: the Expression jersey, Core bib shorts, socks, cap and bottles (see them in Zwift’s online shop). And the winners are: