Most speed calculators divide distance by time, which you can do in your head. This one runs it the other way: tell it the power you can hold and it works out how fast you will go and how long the ride will take, climbs included.
Everything is worked out in your browser. Nothing you type is sent anywhere.
At a steady speed on a steady gradient, the power you produce is spent on exactly three things: pushing the tyres along the road, pushing air out of the way, and lifting you and the bike against gravity. There is no fourth thing. Write that as an equation and you can solve it in either direction.
The equation is the one Martin and colleagues published in 1998 and validated against riders on real roads. Give it your power and it returns your speed. That is what this calculator does, segment by segment, and it is why it can tell you a finish time instead of just converting units.
The useful part is what the equation says about where your watts go. Air resistance rises with the cube of speed, so it barely matters at 12 km/h up a climb and it is almost the entire bill at 38 km/h on the flat. Rolling resistance rises in a straight line, so it never dominates. Gravity does not care how fast you go at all: a 6% climb costs the same watts per kilo whether you crawl or fly.
Ask a typical bike speed calculator about a 60 km loop with 1,200 m of climbing that finishes where it started, and it will take the net elevation, see zero, and quietly model a flat ride. The answer is useless, because you did climb 1,200 m. You just came back down.
That is not a rounding error. Climbing is slow and expensive, descending is fast and free, and the two do not cancel out in time even though they cancel out in altitude. A loop with 1,200 m of climbing takes substantially longer than the same 60 km on the flat at the same power.
So this calculator never uses an average gradient. It splits the route into three parts: the climbing, worked out from your elevation gain and the average gradient of the climbs; the descending, if the route returns to where it started; and whatever distance is left over, which it treats as flat. Each part gets its own speed, and the times are added.
Descents are modelled as coasting at terminal velocity, capped at 65 km/h. The cap is not physics, it is corners and brakes.
Aerodynamic drag is set by your frontal area and how cleanly air flows around you, combined into a single number called CdA. Sitting up with your hands on the tops is around 0.45 square metres. On the hoods, around 0.40. In the drops, around 0.32. On aero bars, around 0.26.
Run those through the equation at the same power and the difference is large: at 200 W on the flat, moving from sitting up to the drops is worth several kilometres an hour, and it costs nothing. That is the cheapest speed available to any cyclist, and it is why the position selector is the input most worth playing with.
The honest caveat: these are typical published figures, not your figures. A tall rider in a flapping jacket and a small rider in a skinsuit can differ more in the same position than one rider differs between two positions.
Air density falls with altitude. At 2,000 m it is about 20% lower than at sea level, so the same watts push you through about 20% less air. Temperature does it too: warm air is less dense than cold air.
For a flat effort this is worth real time, which is why hour records are attempted at altitude. On a climb it barely registers, because up there you are fighting gravity, not air. The calculator takes both altitude and temperature so you can see the size of the effect rather than guess at it.
The whole model runs as JavaScript in your browser. Your weight, your power and your route never leave the page, and nothing is stored or sent to a server.
The drag and rolling figures are typical published values for a position and a surface, not measurements of you and your bike. This is the single biggest source of error, and it is why the result comes with a band of about 8% rather than a time to the second.
A headwind adds to the air you have to push through and a tailwind subtracts from it, and the effect is large. Model a windy day by picking a slower position or accepting that the answer is the calm-day answer.
The model is steady state. It takes the watts you give it and assumes you produce them for the whole ride. If you give it your FTP for a five-hour ride, it will happily return a time no human will match.
Junctions, cafes, mechanicals, and the fact that nobody descends at a perfectly constant speed are all outside the model. Treat the answer as moving time in good conditions.
On smooth flat asphalt, on the hoods, with 80 kg of rider and bike at sea level, 200 W comes out at roughly 32 km/h. Move to the drops and the same 200 W is worth around 3 km/h more, because you are pushing less air. Point the road uphill at 6% and the same 200 W becomes about 13 km/h, because now you are lifting 80 kg rather than parting the air.
Because the two answer different questions. The total elevation gain tells it how much climbing there is. The average gradient of the climbs tells it how much distance that climbing occupies: 1,000 m of gain at 4% is 25 km of road, and the same 1,000 m at 10% is only 10 km. Same climbing, very different rides.
No, and this calculator is the clearest way to see why. The same rider at the same power produces wildly different average speeds depending on terrain, position, surface, altitude and wind. Average speed measures the day. Power measures the rider.
The underlying model is well validated against riders on real roads. The uncertainty is not in the physics, it is in the inputs: we are guessing your drag and your rolling resistance from a dropdown. Expect the answer to be within about 8% on a calm day, and treat anything closer than that as false precision.
Three usual reasons. The model gives moving time with no stops. It assumes no wind, and wind is rarely zero. And it assumes you held that power for the whole ride, which is the assumption people get most wrong: your five-hour power is a long way below your one-hour power.
Much less than people think. On the flat, weight only shows up in rolling resistance, which is a small share of the total, so 5 kg is worth a fraction of a kilometre an hour. On a climb it is nearly everything, because you are lifting it. Try it: change the weight with the gradient at zero, then with the gradient at 8%.