This week, the second round of Zwift Racing League 2025/26 kicked off with a team time trial on Greatest London Flat. I knew it wouldn’t be easy, but I didn’t make it any easier by getting the start time wrong…
Once again, I’m racing with team Coalition Delusion in the Lime B1 Development division. Read on to learn how our race unfolded!
Shortest Warmup Ever
It was Tuesday at 9:55am here in Northern California when I glanced at my phone, opening the Companion app on a whim. I’m still not sure why I did it.
But it’s a good thing I did. Because Companion told me my ZRL race started in 12 minutes. I thought it was still over an hour away!
I’ve given up trying to understand how daylight savings changes work in ZRL, or in Zwift events as a whole. I had assumed my races were still at 11am like they were in Round 1, and I hadn’t even looked at my start time after signing up for this first race.
Panic immediately set in. Could I be ready to ride in 12 minutes? Would my lack of a warmup ruin my performance?
Mentally tossing those thoughts aside, I dashed downstairs as I yelled to the wife, “Gah! My race starts in 12 minutes and I thought it was an hour away!”
I rushed into my bedroom and started grabbing what I needed. I’ve done this, slowly, hundreds of times before. But it sure feels like a lot of stuff when you’re in a hurry!
- Bibshorts
- Jersey
- Sweatband
- Gloves
- Socks
- HRM
I put all that on and hustled upstairs, turning on my Zwift computer while my sainted wife filled a couple of bidons and grabbed me a sweat towel. Seven minutes to go. Pull on the shoes. Climb on the bike.
Happily, my computer already had the latest Zwift update installed, plus it boots up fast. I changed my in-game kit to Coalition’s, changed my name so it included my pull number (I was rider #6) and team name, switched to the Cadex Tri bike with DT Swiss 85/Disc wheels, and joined the pens with around 4 minutes to go. It was a good thing we were the 7th team to start (at 10:07) instead of the first (at 10)!

Our sixth man joined the pens with just a minute to go (cutting it closer than me, Fabian), and I even had a spare minute to fire up OBS and get my race video recording for posterity (see it at the bottom of this post). Whew. Let’s race!
The Race
This being the first race of a new round, and only my fourth race with Coalition Delusion, I’m still getting to know my team and their strengths. Captain Neil had our pull order worked out, with a bit of help from the Zwift TTT Calculator:

When the clock hit zero, it was go time. I’d been spinning my legs for a few minutes, but I was far from warmed up. Happily, I was the last guy on the list to pull, which means I’d have a few easier minutes before needing to ramp it up to 370 for 60 seconds!
Settling Into a Strong Pace
We rolled out like pros, getting into a single file quickly despite the rollers at the start that can make it difficult to hold formation. Teammate Chris M was on Discord as our DS, not racing but playing a vital role in calling out what’s going on and making decisions so we didn’t have to.
We settled into a rhythm, calling out what time on the ride clock we’d be pulling to each time we took to the front and when we were about to pull off. I’d forgotten to fire up Sauce for Zwift, so I clicked to do that, giving us extra visibility into time gaps for teams ahead and behind.
As we turned right onto Northumberland Ave, I could see we were doing well, having put time into all the teams I could see in Sauce: to up the road and two behind. A good start, but could we hold the pace?
We ramped up the effort a bit on Northumberland, the first proper uphill of the course. While you have a pull order with power targets in a TTT, that’s your target on flat ground. For a team to maximize their overall speed, they need to push over those targets on climbs. And if you need to, you can ease and drop below the target on descents. The same rules apply in outdoor time trials, because… that’s how physics works.

Bless this Mess
Things got a bit messy formation-wise as we continued our race, so I reminded everyone on Discord that riding 2-3 meters behind the next guy is helpful in TTT races. You still get a full draft, but you aren’t constantly overlapping wheels and pushing each other out of the draft. It gives you breathing room. So we tried to stretch our line out a bit, with varying degrees of success.
I might have pushed on Discord for a cleaner formation, but what I was seeing in Sauce showed that we were still putting time into all the teams we could see. At the 16.6km mark we passed the team ahead, the BZR Lions. These poor guys had their work cut out of them, because they started with only four riders! I gave them a ride on as we passed…
Suffering In the Hills
Through the subway, then out into the countryside. This is where the work begins on this course! You’ve got a small climb up to the base of Box Hill, then a series of shallow, draftable climbs through the park area. We ramped up our power on the climbs, but also reminded each other to hold formation since the climb were quite draftable. Sauce said I was saving 40W drafting on the climb, and by the end of this tough section we were less than 30 seconds from catching the next team up the road.
Chris was on Discord, dishing out the positivity: “You’re flying, guys. Keep doing what you’re doing, this is awesome.”
Down the other side, into the Underground, then the next challenge reared up: the escalator ramp! Chris reminded us of the best approach to this tricky section: ramp up before you get to the bottom so you carry momentum up the climb, then keep pushing over the top.
I was first over the top, which gave me a welcome chance to ease up and let the team pass, with Fabian starting another long pull and me catching the tail end so I could sit in for a bit.
One Rider Down
We still had all six riders at this point, but I could tell Dylan, the rider ahead of me, was struggling. I was on his wheel, and he let a big gap open to the four riders ahead. Uh oh! He didn’t call for help, and was able to push hard and close the gap. A noble and strong move, but I think it pushed him past the redline. Seconds after closing the gap he sat up. Parachute pulled. Well done, sir.
Five riders left, with 7km to go.
Another Team Caught
We caught the next team (Foudre) at the 24.8km mark, then kept pushing. Fabian and I had been taking longer pulls, and we were both feeling it. We called out our pull lengths, shortening them so we could hold on to the finish.
The Foudre team sort of sat in our draft for a bit, making things a bit messy and not dropping off until around 26.1km:
(This happens often in TTT races, and I think it’s generally not intentional. It’s hard for the passing team to increase their power even more in order to gap the passed team quickly, and the team getting passed doesn’t want to ease up to let the gap form. So instead, the passed team gets sucked into the draft of the passing team until the elastic snaps!)
Andrew’s Disappearing Act
At the 26.4 mark, our team of five suddenly became four when Andrew disappeared. He was the middle rider in our formation when it happened, too, which really confused things. Fabian was dropping back after taking his pull, Neil had just started his, then Andrew disappeared, leaving Neil 20 meters off the front and the rest of us wondering how that gap opened up!
Andrew appeared again as Fabian started pushing to close the gap. I was feeling the effort, but I knew Fabian was too, having just taken a pull, so I upped the power and came around him to try to pull Fabian and Robert up to Andrew and Neil. Andrew disappeared again, and we climbed up Northumberland, catching Neil halfway up.
That’s when DS Chris noticed Andrew had disappeared. (It’s only in watching my video that I’m seeing what happened earlier.)
Up Northumberland, we were clearly all on the rivet. “Is anyone able to go?” Chris asked, looking for someone to take a pull. *crickets*
Eventually, team captain Neil got on the front (chapeau!) then suddenly, Andrew appeared again, 3 seconds up the road. What a stud! (Anyone who’s ever had an Internet dropout on Zwift knows how hard it is to stay with the other riders when they disappear from the screen and you lose their draft and position. He must have pushed hard to keep his speed higher than ours.)
With 3km to go, the five of us turned right onto the Classique course for our finish. Chris put together an ad-hoc order and we kept rotating through, complete with Andrew disappearing again mid-pull. But we kept our speed up, then went all-in with 400 meters to go. Empty the tank!
I averaged 493W for the final 30 seconds, pushing hard on tired legs. Our final time, taken off our fourth rider, would be 42:51.16.
Watch the Video
Results and Takeaways
We knew we had beaten the teams we could see on screen. And the results screen that popped up showed us in 1st place, but I wasn’t sure if that results screen works the way it should for a TTT. (In hindsight, I think it does.)
After cooling down, I headed over to the WTRL website to see if our results were up yet. And they were… and we’d won!

Overall, I was happy with my performance on the day, as I was able to take 60-second pulls, help close gaps, and generally be an asset and not a liability for the team. That’s the beauty of racing in the B Development division… I’m not constantly struggling just to hold on!

The team did well as a whole, too, of course. While we could certainly tighten up our formation and get even faster, a win in the first race bodes well for this round. Next week is gonna be a tough one, but that’s part of racing ZRL. See you then!
Your Thoughts
How did your first race of round 2 go? Share below…


