21 September 2026

TT bike or road bike? What nineteen minutes at Nice 70.3 actually bought

I raced the Nice 70.3 World Championship twice, seven years apart.

I’m North American. We have hills, and we have highways, and not much in between. So I’ve always thought of myself as a decent climber and a genuinely bad descender. Nice doesn’t care what you think of yourself. It gives you twenty kilometres of switchbacks and lets you find out.

In 2019 I rode it on my time-trial bike and spent most of the descents quietly terrifying myself. In 2026 I came back on a road bike. Nobody would call me fast down that mountain, but for the first time I actually enjoyed it.

Then I looked at the clock.

Seven years older, so I knew some of the difference was going to be me. But not that much. I was almost twenty minutes slower over essentially the same road.

I wanted to know where those minutes actually went, because “you’re older” isn’t much of an answer. So I built a tool to pull the two rides apart and estimate what changed. The result surprised me.

About eleven minutes was the bike. A TT bike is worth a lot on a course like Nice, more than I expected, and by choosing the road bike I gave most of that back in exchange for a bike I could descend on without frightening myself.

And about four minutes was me. I’d rather not have discovered that part. But that is also what makes this interesting: a tool that only tells you what you want to hear isn’t measuring anything.

There were things the data couldn’t answer with any confidence. Wind is the obvious one. Rather than force an estimate, I left it in both rides, and every result below says how sure it is.

That is really why I built the site. Not to tell you a TT bike is always faster, or that you should ride one in Nice, but to take the rides we already have and ask better questions of them. How much did the bike matter? How much did position? Was I faster, or did I just have better conditions? What changes if I change my drag, my weight, my tyres, my kit?

Some of the answers are obvious. Some are surprisingly large. A few are slightly uncomfortable.

If you have a couple of rides you’ve always wondered about, try them. You may find something much more interesting than the finishing time.

Here’s the comparison, exactly as the site produced it from the two files:

Your 2019 ride was 19:22 faster

On the 90.7 km both rides took, it was faster mainly because of less drag (about 11 minutes) and more power (about 4 minutes). The 2026 ride got about a minute back from warmer, thinner air. Road only one ride took accounts for about a minute more.

Start
Compared 90.7 km both rides tookOnly 8 Sep 2019: 0.4 kmOnly 13 Sep 2026: 1.5 kmMap, elevation and map-data services can see the area of the ride · © OpenStreetMap contributors, SRTM, OpenTopoMap, Mapzen
See who was quicker where ↓
Compared on
90.7 km of road both rides took98% of the longer ride; the other 1.9 km is set apart as a different road
Difference
19:22 over the whole ride, 3:16:13 against 2:56:51
8 Sep 2019
2:56:51 · 91.5 km · 188 W average · 17 °C
Edge 820, Power meter · 83.2 kg with bike and kit
13 Sep 2026
3:16:13 · 92.6 km · 179 W average · 29 °C
Edge, Rally · 84.5 kg with bike and kit

Where did the 19:22 go?

Biggest first. Each bar is time the 2026 ride lost to one reason on the road both rides shared; left of zero is time it gained. The whisker is how far the realistic unknowns could move it. Open a row for what explains it.

Dragposition, drafting or windDrag: +10:59 (10:59 lost). High confidence. Could be +9:48 to +12:11.+10:59 High confidence

The 2026 ride pushed more air. The 2026 ride had the higher drag area on 11 of the 11 stretches of road the data could measure. The costliest stretch was km 77.0–83.8: 0.18 m² against 0.38 m², worth 2:40.

Sure of the amount to within ±1:12; not of which cause it was.

Likely causes, strongest evidence first — the files cannot tell which

  1. Drafting in 2019. On 5 flat stretches the drag area held 0.16–0.20 m² at 37.9–46.9 km/h, which is lower than most riders manage alone.
  2. Position. Hoods against drops, or simply sitting up. The files cannot tell this apart from riding on a wheel.
  3. Wind in 2026. In 2026 drag was high heading both north (0.42) and south (0.39). One wind cannot raise opposite directions, so particular roads or a change of position explain this as well as weather does.
Powerfewer wattsPower: +3:57 (3:57 lost). Medium confidence. Could be +1:23 to +6:31.+3:57 Medium confidence

Fewer watts. Most of it on km 26.4–37.3: 260 W against 242 W. The rides used Power meter and Rally, and two meters can disagree.

±2:34 if each meter is off by 2%.

Descendingbraking and corneringDescending: +1:38 (1:38 lost). Measured.+1:38 Measured

Slower downhill. Timed on 4 descents rather than explained. The model has no brakes or corners, so braking and line choice stay a measured gap instead of being passed off as drag.

Unexplainedmodel error and pacingUnexplained: +1:22 (1:22 lost). Measured.+1:22 Measured

What the model could not put a name to: pacing, model error, anything the files do not carry. The smaller this is, the better the named reasons hold.

Different roadoff the shared routeDifferent road: +1:08 (1:08 lost). Measured.+1:08 Measured

Road only one ride took — a detour, an extra lap, a different start. Timed as measured, and kept apart from every other reason, which are all worked out on the road both rides shared.

Air densitywarmer air is thinnerAir density: −1:07 (1:07 gained). High confidence.−1:07 High confidence

The air helped. 28.6 °C against 16.7 °C made the air 4% thinner (1.115 against 1.160 kg/m³), read from each file's own temperature and altitude.

Weightrider, bike and kitWeight: +0:56 (0:56 lost). Can’t tell. Could be −0:53 to +2:45.+0:56 Can’t tell

Weight. 83.2 kg against 84.5 kg, all in. The files carry no bike weights, so this could be anywhere from −0:53 to +2:45.

Stoppednot movingStopped: +0:28 (0:28 lost). Measured.+0:28 Measured

Time standing still on the shared road, read straight from the files rather than modelled.

2 weight checks passed. See how sure this is ↓

A model, not a measurement. What it can show depends on the numbers above — what you typed, and what your files recorded — and on assumptions this page states; anything it cannot stand behind says so rather than drawing a tidier line.

Where on the route did you lose time?

The map colours only the road both rides took, by who was quicker on each half-kilometre; road only one ride took is dotted. Below it, each ride's own profile with its features numbered, then feature by feature the time each reason cost and each ride's drag.

1020304050607080Start

OpenTopoMap sees the area of the ride, never your files · © OpenStreetMap contributors, SRTM · style © OpenTopoMap (CC-BY-SA)

Moving time, compared every 500 m, so stops are left out. Grey is level (within 2 s per km); the deepest shade is 24 s per km or more.

road only one ride tooka stop filled it, or nothing to comparekilometres along the 8 Sep 2019 ride

Dig deeper

Three closer looks at the drag, and what to do about it.

Was it the wind?

Drag on straight, flat road, by the way you were heading. A headwind makes one direction draggier and the opposite one easier; a better position, or a wheel to follow, lowers every direction at once.

8 Sep 2019
0.00.10.20.30.4typical 0.21N0.375.8 kmNE0.206.3 kmE0.193.4 kmSEtoo little straight, flat ridingS0.186.2 kmSW0.186.6 kmW0.213.7 kmNW0.204.6 km
13 Sep 2026
0.00.10.20.30.40.5typical 0.34N0.425.3 kmNE0.305.7 kmE0.356.4 kmSEtoo little straight, flat ridingS0.397.4 kmSW0.287.0 kmW0.274.3 kmNW0.255.0 km

A model, not a measurement, on the same terms as the first chart.

5 km/h from the north, left in the drag area above — the wind swung about all day, so it settles nothing.

5 km/h from the southeast, left in the drag area above — drag was highest heading somewhere that wind cannot explain.

Hourly wind from Open-Meteo, for the day and the place each ride happened, fetched with the comparison rather than on a click. Each ride's date and its midpoint, rounded to about a kilometre, go to that service and nothing else does.

Climbs, flats, descents

Drag by how steep the road was. Sitting up to climb shows as more drag uphill, and tucking as less downhill. Climbs are slow, so drag barely shows in the power there: a hollow dot is too uncertain to read. On a descent, braking would look like extra drag.

  • 8 Sep 2019
  • 13 Sep 2026
  • line: how far it could be out · hollow: can't tell
0.00.10.20.30.4Down 1–2% · 1.8 kmtoo little steady pedalling hereFlat, within 1%29 km · 31 km8 Sep 2019, flat, within 1%: 0.19 ± 0.01 m² over 29 km of steady pedalling, in 45 stretches0.19 ± 0.0113 Sep 2026, flat, within 1%: 0.31 ± 0.02 m² over 31 km of steady pedalling, in 54 stretches0.31 ± 0.02Up 1–2%4.0 km · 3.9 km8 Sep 2019, up 1–2%: 0.20 ± 0.04 m² over 4.0 km of steady pedalling, in 8 stretches0.20 ± 0.0413 Sep 2026, up 1–2%: 0.29 ± 0.04 m² over 3.9 km of steady pedalling, in 8 stretches0.29 ± 0.04Up 2–4%3.4 km · 7.6 km8 Sep 2019, up 2–4%: 0.25 ± 0.05 m² over 3.4 km of steady pedalling, in 8 stretches0.25 ± 0.0513 Sep 2026, up 2–4%: 0.35 ± 0.06 m² over 7.6 km of steady pedalling, in 20 stretchescan't tellUp 4–6%5.4 km · 4.5 km8 Sep 2019, up 4–6%: 0.26 ± 0.12 m² over 5.4 km of steady pedalling, in 17 stretchescan't tell13 Sep 2026, up 4–6%: 0.36 ± 0.18 m² over 4.5 km of steady pedalling, in 16 stretchescan't tellUp 6–8%7.3 km · 7.2 km8 Sep 2019, up 6–8%: 0.23 ± 0.25 m² over 7.3 km of steady pedalling, in 29 stretchescan't tell13 Sep 2026, up 6–8%: 0.33 ± 0.31 m² over 7.2 km of steady pedalling, in 31 stretchescan't tellUp 8–10%0.9 km · 0.2 km8 Sep 2019, up 8–10%: 0.04 ± 0.44 m² over 0.9 km of steady pedalling, in 4 stretchescan't tell

A model, not a measurement, on the same terms as the first chart.

What would make you faster?

Worked out on the shared road by riding it again with one thing changed. A kilogram costs minutes on an alpine pass and seconds on a flat loop, so the road is half the answer.

Carrying a full bottle+25 sRider, bike or anything you carry: every kilogram counts the same.
Riding on the hoods instead of the drops+3:41Your position is most of the air you push.
Training tyres instead of race tyres+4:17Tyres, tube and the road surface all change how easily you roll.
1% more power−56 sHeld for the whole ride.
1 °C warmer air−12 sWarm air is thinner, so it is easier to push through.

Asked of the 90.7 km you both rode, which took 3:12:22: that road ridden again with one thing changed and nothing else. The changes are typical, not measured on you, and each answer is a margin on the model’s own version of the ride (3:04:53) rather than a prediction of the clock.

How sure is this?

What these two files can and cannot tell. Nothing is fitted freely: a number is only used where the rides actually pin it down.

WhatStatus8 Sep 201913 Sep 2026How we know
Stopped timeMeasured1:351:46From the clock: time spent not moving.
Different roadMeasured91.5 km92.6 kmMatched by GPS. Time covering ground the other ride did not — a detour, or more laps of the same road — is counted on its own (+1:08).
Elevation profileOne profile, both ridesfusedfusedOn the shared road both rides use the average of their two altimeters, so a disagreement between the instruments cannot read as a cause. Before that, 13 Sep 2026 read 16 m higher in level, and the two differed by ±8.0 m along the road — at speed, a metre over 500 m is about ten watts of climbing one file saw and the other did not. Level and drift come from the terrain model (Mapzen terrain tiles on AWS, about 30 m): the profile sat 18 m below it and drifted 0.4 m per 10 km, both now taken out; the shape stays the altimeters'. They differ from the model by ±9 m along the road, mostly the model's 30 m cells on sloping ground.
PowerMeasured, not calibrated188 W179 WEach meter is good to about 2%, and nothing in the files can check one against the other.
Air densityMeasured1.160 kg/m³1.115 kg/m³From each file's own temperature and altitude.
Drag area (CdA)Estimated along the ride0.16–0.26 m²0.25–0.38 m²Tracked through the ride and allowed to change as you move. Tighter on flat road than on climbs, where the speeds are too low for drag to show clearly.
Weight, rider and bikeFrom your profile83.2 kg84.5 kgYour head unit's rider profile plus 11.5 kg of bike, kit and bottles. The climbs are used to check it.
Rolling resistanceCan’t tellheld at 0.005held at 0.005These rides read 0.0051 and 0.0048, but not knowing the bike weights moves that further than the rides ever could, so it is held instead. It would cover tyres, road surface and bearings together, not tyres alone.
WindIndirectfrom the northwest?from the east?Read from drag by heading. The wind that actually blew on each day is looked up with the answer and checked against that pattern, further up; where the two agree it is taken out of the drag area, and where they do not it is left in and the page says why.
DraftingCan’t tellLooks exactly like a lower position in the data. Only the rider knows who they rode with.
Braking and corneringTimed on descentsThe model has no brakes, so descents are timed rather than explained.

Checks

The 8 Sep 2019 climbs match the weight given.They imply 78.5 ± 1.2 kg against 83.2 kg, well inside the unknown bike weight.
The 13 Sep 2026 climbs match the weight given.They imply 80.4 ± 1.0 kg against 84.5 kg, well inside the unknown bike weight.

Your rider and bike profile

Every ride you add updates one profile. Your weight drifts slowly and you own only so many bikes, so each new ride sharpens the numbers for the others.

Rider

8 Sep 2019
71.7 kg, from the head unit's rider profile
13 Sep 2026
73.0 kg, from the head unit's rider profile

Bikes, recognised from their sensors

8 Sep 2019
Power meter · Edge 820 — 1 ride so far; weight and rolling resistance need more
13 Sep 2026
Rally · Edge — 1 ride so far; weight and rolling resistance need more

Pedal power meters move between bikes, so the shifting unit and wheel settings count for more when matching a ride to a bike. You confirm the match once.

What this is, and what it is not

Time, distance, climbing and where you stopped are measured, read straight from the two files. Everything that says why is modelled, and a model is only as good as what the head units recorded.

Every watt comes from your power meter. Two meters, or one meter years apart, can disagree by several percent, and that goes straight into the power line. Nothing in these files can check one against the other, which is why the confidence beside it is what it is.

Only drag area is estimated from the rides. Weight is anchored and rolling resistance is held, because two rides like these cannot separate the three: fitted together they return a negative drag area and a rolling resistance no tyre has. Where the model cannot reproduce a stretch, its time is reported as measured and no cause is put on it. Descents are timed rather than explained, because there are no brakes in the model and braking would be read as drag.

GPS decides which road you were on and how long each stretch of it is. On shared road both rides are given one elevation profile, set against an open terrain model where one could be reached, because two altimeters on the same hill disagree by enough to look like a cause. The evidence ledger above says how far apart yours were.

Your files never left this browser. The decoded numbers went to the server for the comparison and were not kept. Map, elevation and weather services can see the area of a ride; the note under the map names them.

Questions

Which files work?

Any .fit file from a bike computer, such as Garmin, Wahoo or Hammerhead, including the zipped .fit.gz that Garmin Connect exports. The full breakdown needs a power meter on both rides.

Are my rides uploaded anywhere?

No. The files are read in your browser. The map loads its tiles from a map service, the elevation check loads terrain tiles from another, and the wind comes from a third; each is told the area of the ride and nothing more, and the wind service is also told the date, because the day the wind blew is the point of asking.

Do the two rides need to be the same route?

Mostly. The rides are matched by GPS; road only one ride took, such as a detour or an extra lap, is counted separately as a different road rather than blamed on you.

How accurate is it?

Every number says how sure it is, from the things that could really be wrong: an unknown bike weight, a power meter's tolerance, too little flat road. Descents are timed rather than explained, because braking would otherwise look like drag.

Can it tell a headwind from being less fit?

Often. Wind makes drag higher in one direction and lower in the other; a change in fitness shows in the power instead. Where the files cannot separate them, the page says so.

Does a wheel speed sensor make a difference?

Yes. Distance and speed are taken from your file, and your head unit measures them from a wheel sensor when it has one and from GPS when it does not. GPS wanders under trees, in cuttings and through switchbacks, and it cuts every corner, so a ride without a sensor reads a little short and its speeds a little rough. A wheel sensor with the right circumference set is the more accurate of the two, and every figure here that is measured per kilometre is measured better with one.