Docs

What every number in this app means, how the model computes speed and power, and — importantly — which parts are Zwift's actual values versus estimates. Two badges flag every quantity:

actual Zwift's own value — not a guess.   estimated a model stand-in for a value Zwift doesn't publish.

The physics model

Cycling speed is a balance of forces. To hold a steady speed v, your legs must supply enough power to overcome gravity (on a climb), rolling resistance, and air drag:

P = ( m·g·sin θ  +  Crr·m·g·cos θ  +  ½·ρ·CdA·v² ) · v  /  drivetrain_efficiency
gravity m·g·sin θ
Mass × gravity × the slope. Dominates on climbs — this is why a light bike matters uphill.
rolling resistance Crr·m·g·cos θ
Tyre-on-road friction, proportional to weight. Small but constant.
air drag ½·ρ·CdA·v²
Grows with the square of speed — so it dominates on flats and descents, and barely matters on a slow steep climb. This is where aero equipment helps.

Zwift runs this in two stages:

Stage 1 — steady-state solve actual constants
Given your power and the gradient, solve the balance above for the target speed. The app inverts it both ways (power→speed and speed→power).
Stage 2 — motion smoothing actual
Your avatar doesn't jump to the target speed instantly — it ramps toward it, capped at +15 km/h per second accelerating and −10 km/h per second slowing (Zwift eases you down gently — a smooth coast). The steady-state charts here show the settled speed, so this mainly affects transitions.

Aerodynamics & CdA

CdA estimated (rider) + actual (equipment)
Drag area = drag coefficient (Cd) × frontal area (A), in m². The single number for "how much air you push." Bigger CdA → more drag → you need more watts for the same speed. It's the biggest lever for flat speed. Your total CdA = rider base + equipment biases.
Rider base CdA estimated
Your body is ~70–80% of total drag. Zwift computes this from your height & weight, but doesn't publish the exact function — so the app estimates it: it anchors a 175 cm / 75 kg rider at ~0.40 m² and scales by the DuBois body-surface-area ratio (bigger body → more frontal area). The "rider CdA calculation" expander on the main page shows the arithmetic.
Equipment CdA bias actual
Each frame, wheelset, and helmet adds a small CdA correction, added on top of the rider base. Negative = more aero = faster. These are Zwift's actual per-item values. Most of the aero lives on wheels and helmets; road frames are mostly 0 (differentiated by class, not a per-frame number).
Air density (ρ) actual
1.226 kg/m³ — the fixed value Zwift uses in the drag term. Higher density = thicker air = more drag.
Frontal-area scale / draft mechanism magnitude
Zwift scales the whole aero term by a "frontal-area scale" factor — the same one it uses for drafting and power-ups. Draft in this app multiplies air drag by (1 − draft%): a 25% draft removes a quarter of your air resistance. The effect is real; the percentage is yours to set — Zwift's own draft curve (how rider count and gap map to a %) is computed on Zwift's servers and isn't published.

Weight & resistance

System mass actual
Everything gravity and rolling resistance act on: rider weight + frame + wheels + helmet, plus a fixed 200 g wheel offset Zwift adds. Frame/wheel/helmet weights are Zwift's actual grams.
Rolling resistance (Crr) actual
0.004 — the tarmac value. Zwift varies Crr by road surface and by wheel type — see Road surfaces & wheel choice. The ride simulator applies that per surface along a route; the calculator here uses the flat tarmac value, since a gradient sweep has no specific route (and so no surface).
Drivetrain efficiency estimated
0.975 (97.5%) — the chain/drivetrain loss. Zwift doesn't publish a number for this, so 0.975 is a typical estimate.
Gravity & slope
Slope / gradient is rise ÷ run as a percent (5% = 5 m up per 100 m along). Gravity is per-world in Zwift; the app uses 9.81 m/s².

Equipment

What the columns on the Equipment list mean.

CdA bias actual
The item's aerodynamic correction in m² (negative = faster); it adds to the rider's height/weight base CdA. Frame biases are mostly 0 (bikes differ by discipline and weight); a TT frame switches to its time-trial aero. Weights are the item's own grams (wheels also carry Zwift's fixed 200 g offset in the calculator).
Class, unlock level & Drops actual
Class (ENTRY / MID_RANGE / HIGH_END / CONCEPT), unlock level and Drop Shop price come from Zwift's bike config. “—” level means no level gate (special/reward/paid); “—” Drops means not purchasable with Drops (e.g. the climb-unlock concept bike). Drops are derived (config price × 71) and match ZwiftInsider's listed prices within rounding.

Road surfaces & wheel choice

Zwift's worlds aren't all smooth tarmac. The game models eight road surfaces, and each one has its own rolling resistance (Crr) — the tyre-on-ground drag from the Crr·m·g·cos θ term above. Grass drags many times more than pavement; a boardwalk, cobbles or dirt sit in between. And your wheels matter: Zwift sorts wheelsets into three families, and each family has a different Crr on every surface.

The three wheel families actual
Road — the default for almost every wheelset. Gravel — a handful of wheelsets Zwift classes for mixed terrain (Zwift Gravel, Roval Terra, ENVE G23, Zipp 303 XPLR, Cadex AR35, Reserve 25 GR, …). Mountain — the Zwift Mountain wheel. Which family a wheel belongs to is Zwift's own classification, not a guess.

Lower Crr = less drag = faster. Here's the full recovered table — the fastest wheel for each surface is bold:

SurfaceRoad wheelsGravel wheelsMountain wheels
Pavement / tarmac0.0040.0080.009
Brick0.00550.0080.009
Wood (boardwalk)0.00650.0080.009
Cobbles0.00650.0080.009
Snow / ice0.00550.0060.014
Gravel0.0120.0090.009
Dirt0.0160.0090.010
Grass0.0250.0160.014

The pattern is a clean trade-off:

So the right wheel depends on the route's surface mix. A course that's mostly dirt rewards gravel wheels enough to overcome their tarmac penalty; a mostly-paved route with one short gravel sector usually doesn't. The route and simulate pages now show each route's surface breakdown — a colour ribbon under the elevation profile, and a Grade / Surface toggle on the map — so you can see how much of a ride is off-road before you pick a bike.

actual the per-surface Crr values and the wheel-family assignments are Zwift's own, and the ride simulator applies them: pick a route or segment and each off-road sector actually slows you, with the picked wheels' tier setting the rolling resistance. The simulator also shows what every tier would cost or save on that route, so you can see when gravel or mountain wheels are worth their tarmac penalty. The plain speed calculator stays tarmac-only (a gradient sweep has no route, so no surface).

Positions & modes

TT / aero mode actual
Time-trial frames are a genuinely lower-drag, faster state in Zwift, and the rider is locked in the aero position (no sitting up, no draft benefit). This app identifies TT frames from Zwift's own bike classification, so picking a TT frame switches the readout to aero: TT. Note: unlike real cycling, Zwift road bikes have no user-selectable "hoods vs drops" that changes speed — hand position is cosmetic there.
Rubberbanding / Pace Partner handicap actual
When you ride with a Pace Partner (RoboPacer) or in a "keep-together" group, Zwift applies a hidden climb handicap so the group doesn't shatter on hills. It's a slope-ramped drag multiplier — 1.12× at flat, ramping to 6.0× at ≥10% gradient — that Zwift applies internally. It is not applied to normal solo riding. Toggle "Pace Partner group" on the main page to see it slow your climbs. Caveat: rubberbanding also has a second power-scaling handicap that isn't modeled here, so on the very steepest climbs the real slowdown is a bit larger than shown.
Sandbagging & power caps actual
Zwift has anti-sandbagging (multiplies a flagged rider's power by 0.7) and W/kg power caps for competitive events. These only apply when you're flagged in a race/event, so they're not part of this solo calculator — real Zwift behaviour, just out of scope here.

The charts

Speed vs slope
Hold your entered power constant and see the steady speed at each gradient. The classic "how fast will I go up this?" curve.
Power vs slope
Hold your entered speed constant and see the power needed at each gradient. On descents it clamps at 0 W (you're coasting).
Speed vs power (flat)
The core power→speed relationship on flat ground, swept across a watt range — good for comparing setups at a glance.
Configs A–F
Add multiple configs to overlay different riders/bikes on the same charts and compare.

Descents are approximate. The model is a pure force balance with no descent speed cap or coasting/braking model, so the steep-downhill end won't match in-game feel.

Actual vs estimated

QuantityStatusValue / note
Per-item aero (CdA bias) & weightactualZwift's own per-item values
Air density ρ, rolling resistance Crractual1.226, 0.004 (tarmac)
Per-surface Crr (8 surfaces × 3 wheel families)actualZwift's own per-surface values
Route surface segmentationactualwhich stretches are dirt / gravel / cobble / …
Per-surface Crr applied in the ride simactualroute & segment sim; the calculator stays tarmac
Equipment combination rulesactualas Zwift combines them
TT flag, wheel weight offsetactualTT class, 200 g
Motion accel / decel capsactual+15 / −10 km/h·s⁻¹
Rubberbanding climb handicapactual1.12× → 6.0×
Rider base CdA from height/weightestimatedDuBois BSA model
Drivetrain efficiencyestimated0.975
Draft percentageestimatedyou set it; the effect is real
Bike upgrade levelsnot modeledvalues are base / un-upgraded

The equipment option lists don't print the raw grams/CdA numbers, though a determined user could still back them out of the compute endpoint — this is obscurity, not secrecy.