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 — a single global value Zwift uses for everyone in this build (per-wheel Crr exists in the data but isn't combined into the model here).
- 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².
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 — the honest summary
| Quantity | Status | Value / note |
|---|---|---|
| Per-item aero (CdA bias) & weight | actual | Zwift's own per-item values |
| Air density ρ, rolling resistance Crr | actual | 1.226, 0.004 |
| Equipment combination rules | actual | as Zwift combines them |
| TT flag, wheel weight offset | actual | TT class, 200 g |
| Motion accel / decel caps | actual | +15 / −10 km/h·s⁻¹ |
| Rubberbanding climb handicap | actual | 1.12× → 6.0× |
| Rider base CdA from height/weight | estimated | DuBois BSA model |
| Drivetrain efficiency | estimated | 0.975 |
| Draft percentage | estimated | you set it; the effect is real |
| Bike upgrade levels | not modeled | values 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.