Should Froome Run?

Yesterday, Tour de France yellow jersey bearer Chris Froome was caught up in a crash approaching the end of the monstrous finishing climb up Ventoux caused by the congestion of spectators. His bike broken but with no team or neutral support car in sight, he started running up the hill.

Let’s set aside all questions of whether it matters or not that Froome broke a rule (UCI 12.12.14: Attempt to be placed without having covered the entire course by bicycle), and the more important question of why don’t the ASO and UCI do more to ensure safe and fair courses. Here’s a much smaller but still interesting question: Did it make sense for Froome to start running?

I would argue that it doesn’t make sense from the perspective that he took a big risk on slipping & falling, twisting an ankle, or any number of other problems by running in his cleats. But, purely from a time perspective, did it make sense?

That turns out to be not as obvious as it might seem. A smart friend who’s an experienced racer & official made the reasonable point that you want the support car to catch up to you as quickly as possible. Being on a bike is much faster than being on foot, so running away from the car and prolonging the time it takes to get a new bike doesn’t make sense.

My argument was that if the car is blocked from getting to you quickly, you should continue moving forward. Once it clears any slowdown, i.e., the crash site, its speed will dwarf the distance you’ve gained, so you won’t be penalized by running from it. Therefore, in the interim, while the car is slowed or blocked, you should gain what ground you can. Otherwise you’d just have to cover that distance anyway, but after standing around waiting and wasting time.


To investigate I wrote a simple simulation. The model works as follows.

Scenario at T0.
Scenario at T0.

At time zero the racer starts running or waiting patiently at distance zero, the crash site, while the support car is some distance behind.

The car passes the crash site and starts moving at its full speed.
The car passes the crash site and starts moving at its full speed.

The car moves at its blocked rate until it passes the crash site, at which point it starts moving at its free rate. The racer meanwhile moves at their running rate.

The car catches the racer and gives them a new bike.
The car catches the racer and gives them a new bike.

Eventually the car catches up to the racer, who then switches to their new bike and a faster rate of travel.

The finish!
The finish!

The racer then eventually pedals on to the finish some distance ahead.


A program implementing that model is very simple. I wrote one in Go:


You can play with it yourself in your browser using this link. Hit the Run button up top, and in a moment the output will show up at the bottom of the screen. You can change the scenario by altering the parameters starting on line 17:

  • goaldistance: How far the crash is from the finish line;
  • runrate: How fast the racer can run;
  • bikerate: How fast the racer can bike;
  • carstart: How far behind the support car is when the crash happens;
  • blockedrate: How fast the car goes until it passes the crash site;
  • freerate: How fast the car goes after passing the crash site.

Whether you use miles or kilometers for the parameters shouldn’t matter as long as you consistently use the same units for all of them.


The default settings in the script seem like reasonable approximations of the Ventoux scenario or something similar:

  • The finish is 1km away;
  • The racer can run at 4mph and bike at 12mph (I believe these guys are generally going 12–14mph on Ventoux);
  • The car starts only 1/16 of a mile behind (~100 meters, .0625 miles) and can move 16 mph while blocked and 20 mph afterward.

The simulation reports the rider will finish in 3:18.03 minutes. That makes sense: The car gets to them very quickly, so they do nearly all the route at their cycling pace of 12mph, which would take 3:06 minutes. But, changing their running rate to 0 to reflect not running and waiting for the car, they take 3:20.38 minutes to finish. Therefore they should run, and that bears up if they run a little slower (2mph: 3:19.33) or faster (6mph: 3:16.36).

Obviously those aren’t huge gains, but this is a sport where seconds matter quite a lot. Those default parameters are also arguably friendly toward the not running hypothesis. Watching the clip, I could believe Froome is running better than 4mph (a brisk walk). I also doubt the vehicles can do 20mph in that heavy congestion even after the crash.

Importantly to the final time, no support cars are anywhere in sight. There are clips of Froome definitely running for a solid 30 seconds before one arrives, and the video cameras seem to have missed the start of his run. So, plugging some numbers in to get a ~30–40s catch time, if he did 4mph on foot and the car did 12mph and then 16mph, it would have started just under 1/8 mile back (200 meters, the length of a good sprint), which seems plausible.

Froome himself said in interviews later that he believed his team car to be a whole 5 minutes away. At those same speeds, a car half a mile back would take 2.5 minutes to reach him if he didn’t run, which fits his very rough estimate of it being minutes away. After waiting for the car, he’d finish in a total of 5:09.70.  If he ran just 4mph though until caught, he’d finish in 5:02.56, definitely worth it.


Trying to look at the question a bit more systematically, I had the script vary over some reasonable parameters:

  • goaldistance: 1km, 2km, 3km, 5km, 10km
  • carstart: -1/16 mile, -1/8 mile, -1/4 mile, -1/2 mile
  • blockedrate: 4, 8, 12, 16
  • freerate: 8, 12, 16, 20
  • bikerate: 8, 12, 16

Among those combinations I discarded instances where the freerate was less than the blockedrate or the bikerate, under the very reasonable assumptions that the car does not go slower after passing the crash, and after the crash goes at least as fast as the rider (the latter constraint actually posited by my running-skeptical friend). For each combination then I evaluated the racer running at 0mph (reflecting waiting for the car), 2mph, 4mph, and 6mph.

That tabulation is available in this spreadsheet. The upshot is that at each running speed it makes sense to run in ~72% of the scenarios.

Glancing through the spreadsheet the pattern is pretty clear, and a quick formula confirms: Strictly in terms of time and under this abstracted model, the only cases in which it makes sense to stay put is when you can bike at least as fast as the car can go at its full speed. Remember that cases where the racer can bike faster than the car have been discarded from the spreadsheet, but in those unusual circumstances it also makes sense to stay put.



We as humans naturally focus on the rider, but the best way to think about this is in terms of the bike. Its progress is what controls the overall time required to finish the race. Going back to our model, its progress has three components:

  • Interval A from where the support car starts to the crash site;
  • Interval B from the crash site to wherever the car catches the rider;
  • Interval C from the catch point to the finish.
The three intervals through which the bike proceeds.
The three intervals through which the bike proceeds.

The easiest case to see this is when the rider can go the same speed as the car. In that case it doesn’t matter if the bike is moved by the rider or car, so the rider may as well stay put at the crash site.

In the rare situation when the rider can go faster than the car, you want to maximize the length of Interval C and minimize Interval B because the former progresses faster. So then it also makes sense for the rider to stay put.

Conversely, if the rider is slower, you want to minimize Interval C and maximize Interval B, so that the bike covers the most ground at the best rate. The only mechanism available to do this however is for the rider to advance during Intervals A & B, when the bike has to be with the car. So in this common case, it makes sense for the rider to run. Now, the time spent traversing Interval A has nothing to do with the rider, it’s completely determined by carstart/blockedrate. The rider may not be able to get very far in that interval. But it’s still increasing the amount of distance traveled at the best rate, Interval B, so formally speaking it’s going to be faster to run, even if only marginally. Note that none of this depends qualitatively on how slow the blockage is. You should always run. The only thing the blocked rate affects is how much benefit there is from running, not whether or not there is a benefit.

Unfortunately my numerical analytical modeling is embarrassingly rusty so I haven’t been able to put together in short order the equations formalizing that. But a related graphical way to think about it is in terms of a plot of the bike’s distance over time. It has three segments, corresponding to Intervals A, B, and C. Interval B has the greatest slope, so you want it to be the longest segment by time. The only way to make that happen is to run, so get going!


Long story short, assuming there aren’t errors above (*), strictly in terms of time this modeling argues that Froome made the right decision to start running, and benefited from doing so. I still think it was a big gamble in terms of risking getting hurt. And ultimately the officials’ decision to nullify the end of the race made it moot. But running wasn’t nearly as ridiculous as it at first seemed.

(*) I would be very happy to hear any comments or corrections.