Ask AI Tom
Free Tool

Cycling Power-Speed Calculator

Enter your power output, total weight, CdA, and gradient. It solves the cycling power equation and returns your expected speed. Same physics as Best Bike Split. No subscription.

Power Speed Physics
Thomas Prommer
Built by an engineer who chases finish lines and is obsessed with data. Thomas Prommer — technology executive who has worked with Google, Apple, Nike, Adidas, Netflix and other global brands. Also an Ironman finisher, HYROX Pro Division competitor, and marathon runner. These tools combine engineering rigor with real race experience.
Thomas Prommer

FTP for long climbs; peak power for shorter efforts.

Rider + bike + kit + nutrition. Include everything.

Typical values: hoods 0.38, drops 0.32, TT position 0.22–0.26. Use the CdA estimator for a field-test value.

Road tyres at 100 psi ≈ 0.004. Rough road or gravel ≈ 0.008–0.012.

Positive = uphill, negative = downhill. Flat = 0.

Used to adjust air density. Sea level = 0.

How the calculation works

Your speed at a given power comes down to three forces: aerodynamic drag, rolling resistance, and gravity. The calculator finds the velocity v where:

P = Faero × v  +  Froll × v  +  Fgrav × v

where:
  Faero = 0.5 × ρ × CdA × v²      (air resistance)
  Froll = Crr × m × g × cos(θ)    (rolling resistance)
  Fgrav = m × g × sin(θ)          (gravity component)
  ρ    = air density (kg/m³), adjusted for altitude
  θ    = arctan(gradient / 100)

Air density uses the barometric formula: ρ = 1.225 × e(-0.0001184 × altitude). At 2,000 m that's roughly ρ = 0.999 kg/m³, about 18% lower than sea level. That's why the same watts produce more speed at altitude.

The equation is cubic in v, so the calculator uses Newton-Raphson to solve it numerically. It converges in 3–5 iterations.

Typical CdA values

PositionCdA (m²)
Upright / city bike0.45–0.55
Road bike, hoods0.36–0.42
Road bike, drops0.30–0.36
Road bike, aggressive drops0.26–0.32
Time trial / triathlon0.20–0.26
World-class TT position0.18–0.21

Use the CdA Estimator to get a field-test value specific to your position.