We can't set your personal best for you, but this might help.

CdA is the number that decides how hard the air pushes back. Lower it, and you go faster for the same watts. This suite works it out from real ride data. Test in steady conditions, repeat your runs, and the numbers start to take on meaning.

Three ways to get your CdA. Ride Test reads a GPX, TCX or FIT and does the work for you, two ways: quick lap averages, or virtual elevation that tunes CdA until each lap closes. Best for outdoor runs, where the real weather and route matter. Manual Test takes numbers you enter by hand. Best for the velodrome and other controlled conditions, and for quick what-ifs. Coast Down uses repeated no-pedalling roll-down runs to estimate drag from how quickly speed decays. Best on a quiet, flat road with consistent wind, matched start speed, and several runs in both directions.
Session
Sessions save your typed inputs and CdA numbers. Uploaded ride files aren't stored, so re-drop a file to redraw its charts.

CdA & Aerodynamic Test

Enter your test numbers by hand. This is the tool for controlled conditions, the velodrome above all: still air, flat track, a lap of known length. Type the density from the trackside reading, not an outdoor forecast. Indoor mode hides wind and grade, since the track is still and flat; switch to Outdoor to log them. It also suits quick what-ifs and teaching, since you see exactly which input moves the result. Up to three setups, three runs each. Typical CdA: 0.30–0.32 most riders · 0.24–0.27 optimised road · 0.20–0.23 time trial. A position must also be sustainable, not just low.

Humid-air density from temperature, barometric pressure and relative humidity. Sets every air-density box to the result.
Rider & bike
These are the defaults. Each setup can override rider and bike weight below, for a kit or wheel change, bottles, or runs weighed on a different day. Blank uses the default.

Results

CdA by run

How CdA is calculated
Apparent wind speed v_app = √(v_bike² + v_wind² + 2·v_bike·v_wind·cos θ), where θ is wind angle (0° = headwind). Yaw φ = atan2(v_wind·sin θ, v_bike + v_wind·cos θ). Aerodynamic power P_aero = P·η − C_rr·m·g·cos(slope)·v_bike − m·g·sin(slope)·v_bike. Then CdA = 2·P_aero / (ρ·v_app³·(cos²φ + 1.2·sin²φ)). Based on Martin et al. (1998); Debraux et al. (2009); Grappe et al. (1999).

Coast Down Test

No power meter needed. Roll down a flat, windless road twice, once fast and once slow, time how long each drop takes, and the physics separates your CdA from your rolling resistance. Aero drag grows with speed squared while rolling drag stays flat, so two segments at different speeds give two equations and two answers.

Fast segment (e.g. 40 to 30 km/h)
Slow segment (e.g. 20 to 12 km/h)
How the maths works
When you stop pedalling, only two forces slow you on the flat: rolling resistance, which is near constant, and aero drag, which scales with speed squared. Newton gives m·a = Crr·m·g + ½·ρ·CdA·v² for each segment, with a the measured deceleration and averaged over the drop. Two segments at well separated speeds make two equations; the tool solves them for the two unknowns. The fast segment is dominated by aero, the slow one by rolling, which is what lets the maths tell them apart. Mass is bumped by 1.5 percent for the spinning wheels, which act like extra weight when decelerating. The deceleration is treated as constant within each segment, so keep the speed drops modest; that approximation costs only a couple of percent.
Doing the test well
Find a flat, smooth, straight road with no wind and no traffic. Get up to speed, stop pedalling, hold your normal riding position dead still, and time the drop between two speeds on your head unit; no braking, no freewheeling out of position. Ride the same stretch in both directions and enter both times, the tool averages them, which cancels most of any slope or breeze you could not feel. Repeat each segment two or three times and use your most consistent pair. Keep the fast segment genuinely fast and the slow one genuinely slow; if they are close together the two equations look the same and the split between CdA and Crr goes soft. The result is a field estimate: good for tracking change and feeding the race tools, not a substitute for a controlled velodrome test.

Race Predictor

Feed in your CdA (auto-filled from a Ride Test or Manual Test, or type your own) and solve for finish time, required power, or distance. Over 16.1 km the gap between 0.24 and 0.34 CdA can be up to three minutes.

Power & Speed Relationship

Enter up to three CdA values (auto-filled from a Ride Test or Manual Test) and watch where extra watts stop paying off. The curve shows speed across a power sweep, and how a lower CdA usually beats a bigger engine.

Speed vs power

Watts & Time Saved

The question every position change really asks: what does it buy me? Enter your CdA values, up to three, and see what each costs against the most aero one: the watts to hold a target speed, and the time over a set distance at a held power. Auto-fills from a Ride Test or Manual Test.

Wind Tunnel View

Build a rider and a setup, and watch the wake. Position folds the body. Bike, helmet, fabric and size shift the drag. The air runs in level, curves up and over the rider, deflects across the wheels, and breaks into the turbulent wake the whole machine drags behind it. That wake is your form drag, and the bar underneath splits the total into the three things drag is made of.

wake← flow
Drag breakdown CdA 0.000
Pressure / form drag Skin friction / surface Interference
No baseline set. Pin a setup, then change things to see watts saved.
How the drag is modelled
Total drag is F = ½·ρ·CdA·v², drag power P = F·v. CdA here is built from your choices, not measured, so treat it as indicative. Pressure (form) drag comes from the size of the wake; for a rider it is the large majority of the total, moved most by position, frontal area, body size and helmet. Skin friction is the viscous drag along the surface, the smaller slice, and the one fabric changes. Interference is the extra drag where parts meet.

The air works the whole machine, not just the rider: it climbs over the back, deflects across the wheels and frame, and the spinning wheels shed their own wind into the wake. Fabric follows the wind-tunnel findings (Kyle & Burke; Brownlie; Oggiano): a textured or tripped skinsuit trips the boundary layer turbulent earlier on the rounded limbs, delaying separation and cutting form drag by more than it adds friction. That trade is speed-dependent, so the fabric's effect on CdA here changes with the speed box; see the crossover explainer below. The flow view shows that attachment: with a tripped suit at speed, a teardrop lid or a tucked position the streamlines hug the surface and follow it further round the back before separating into a later, narrower wake; loose kit lets go early and the wake rolls up large. Watch the dots too. They speed up where the flow squeezes over the back, then stall in the wake, the velocity deficit your legs are paying for.
The fabric crossover: why a fast suit can be slow
A textured skinsuit works by tripping the boundary layer turbulent so it clings to your arms and shoulders for longer, separating later into a smaller wake. The catch is that the trip only bites once the air is moving fast enough. Below that, you have paid the texture's friction and bought no attachment, so the suit is slower than plain race kit. The chart shows the watts each fabric costs or saves against standard kit across speed, for the rider built above. The teal line crossing zero is the crossover: below it the textured suit costs you, above it it pays, and the faster you go the more it pays. This is why a suit chosen for a 50 km/h crit can be the wrong suit for a 25 km/h climb, and it is real tunnel behaviour (Oggiano; Brownlie), not a quirk of this tool.
The live solve, and what it really is
Tick Live CFD solve and the air stops being drawn and starts being computed. A lattice-Boltzmann solver runs the flow around your rider in real time; lattice-Boltzmann recovers the same Navier-Stokes equations a wind tunnel obeys, in the low-speed limit, so this is real fluid dynamics rather than an illustration. The shape the air flows around is lifted straight from your rider's silhouette, so separation, the wake and the draft pocket all pour off the true outline, helmet, position and bodies included. The rider is then painted back on top. Colour is air speed: teal near freestream, red where the air is slow, which is the velocity deficit you pay for in watts.

Two honest limits. It solves a 2D slice, so it tells the truth in profile but cannot see the flow round the legs, the spinning wheels or yaw, and the drag it implies is sectional and indicative, not a measured CdA. And fabric is the exception: a tripped skinsuit works by tripping the boundary layer, which lives below the grid, so it still moves the CdA number but the solver will not pretend to draw it. Everything geometric, position, helmet, build, height, bike and the second rider, does change the solved flow for real.
Why the wake is the drag
The air behind a rider is slower than the air in front; it has lost momentum to the body. That lost momentum is the drag, near enough by definition, and it is how a tunnel measures the wake. So the red region in the live solve is not decoration, it is the bill. Fold the body smaller, hold the flow attached for longer, shrink that red pocket, and the watts come down. Watch the dots in the schematic for the same story: they speed up where the flow squeezes over the back, then crawl in the wake.
What the draft actually does
Add the second rider and the follower sits in the lead's velocity deficit, the slow, broken air the first body leaves behind. Lower oncoming wind speed means lower drag, which is why the wheel is worth holding. In the live solve the follower is not handed a discount; it is dropped into the slow pocket the solver already created, and the saving falls out of that. The figure here is a rough one anchored to a real deficit; the gap, the overlap and any crosswind all move it in the real world.
Disc versus spoked wheels
A small thing the live solve gets right on its own. A disc wheel is drawn solid, so the solver treats it as a solid barrier and the air has to go round it. A spoked wheel is drawn as a rim and spokes, mostly open, so the air passes through, which is roughly what a spoked wheel does. Neither behaviour was coded in; it falls out of using the real artwork as the shape the air meets.
Two ways to read it. The schematic is a physically-informed illustration, fast and clear, with the trade-offs scaled the right way round. The live solve computes the flow for real, in a 2D slice. Both treat the CdA as indicative, built from your choices rather than measured. For a real number, run the CdA test tab and feed a measured value into the race tools.

Auto CdA from a ride file

Upload one or more GPX, TCX or FIT files. The tool finds the runs from lap markers, auto-detects them from speed, or lets you select them by hand on the chart. It fetches historical weather at each ride's location and time, reads gradients from the track, and calculates CdA per run. In the results you can switch between two methods: steady state, which averages each lap, and virtual elevation, which uses every data point and tunes CdA until each lap returns to its start height. Group runs into setups to compare positions or equipment, even across different rides. Best with a power meter, a flat repeatable circuit, and calm conditions. Indoor velodrome tests belong on the Manual Test tab: there is no outdoor weather to fetch and no GPS indoors.

📄

Drop one or more .gpx, .tcx or .fit files here, or

Garmin, Wahoo, Strava exports all work

Field estimate, not a wind tunnel. Accuracy depends on steady conditions and a repeatable position; treat CV above ~5% as too noisy to trust. Questions: ride@saddleupcycling.co.uk
References: Martin et al. (1998) · Debraux et al. (2009) · Grappe et al. (1999) · Kyle & Burke (2003) · Lukes et al. (2005).