Redline Athlete

How it works

A race is not an average speed.

It is a few thousand short segments that each cost you something. Everything here comes from that one idea. Below is the shape of the math, and an honest account of where it is least reliable.

Three steps

GPX in, plan out.

  1. 1

    Define the route

    Drop in a GPX from a race listing, Trailforks, RideWithGPS, Komoot, Strava or your head unit, or stitch several into one route. The terrain is read off the file, the trail’s own corners suggest where the ground changes, and you name each section or describe the route in a sentence.

  2. 2

    Set the pace

    One slider across the top, drawn on what each pace costs and buys: finish time falling, reserve at the line collapsing, and a red band where you empty before the finish. Weight and FTP are set once and stay set.

  3. 3

    Fuel it, mark it, take it with you

    Carbs per hour on the same kind of slider, feeds placed for you, markers that ride to your head unit, and a one page sheet, top tube sized.

What you need

A GPX file and your weight will produce a plan.

Everything else sharpens it.

FTPThe single most valuable number. It is what turns a pace into “sustainable” or “a blow up” for you specifically. CalibrationOne recent hard activity, and the model works out how your body burns calories compared to the textbook. Without it the fueling numbers are generic. SetupBike, conditions and laps shift rolling resistance, handling limits, and how much later laps compound. Bike and units are set once in Settings; conditions and laps belong to the plan. PaceThe one thing you change every time, so it sits at the top of the plan as a slider drawn on its own consequences: finish time on one line, reserve left at the finish on the other. Drag it and the numbers move with you; let go and the model re-solves.

Speed

A force balance, solved segment by segment.

Your watts push forward. Gravity, rolling resistance and air drag push back. Whatever is left over accelerates or slows you, and that speed carries into the next segment, which is why momentum over short risers is preserved instead of being averaged away.

ELEVATION PROFILE: SEGMENT COST2674 ft gain010203040miles1200 ft1700 ftflat / rolling3-6%6-9%9%+
The course, shaded by what each stretch costs to climb. This is the segmentation everything else is built on: a race is not an average, it is a few thousand short pieces that each demand something different.

Three different things can be the limit at any moment:

  • Power on climbs. You are simply against gravity.
  • Handling on twisty trail. Curvature sets a ceiling that no amount of fitness gets you past, which is why watts have diminishing returns on singletrack.
  • Braking on steep descents, so speed builds into the ceiling and bleeds off rather than being pinned flat.

Riders also do not hold one number. The model surges above average on climbs and soft pedals on descents, the way people actually ride.

PREDICTED SPEED: MOMENTUM & HANDLING15.4 mph average010203040miles05101520average 15.4 mphmph
Real output, not a mock-up: a 41 mile Midwest course at 220 W. The line is nowhere near flat, and it does not peak at the top of each descent. Speed builds into the handling ceiling and carries past the bottom of a dip, which is the momentum a segment-by-segment solve keeps and an average speed throws away.

Fatigue

Two loads run at once.

Aerobic load accrues every second you are on course and is never repaid mid race, so a long day costs more than a short one over identical terrain. Acute load is the sharp stuff: it builds when you are above your own average effort and pays back when you drop below it, which is what makes climbs bite and descents feel like relief. It pays back to fresh and no further: an easy first lap does not bank credit against the laps after it.

Both are scored against what is sustainable for a ride of that length, not against a fixed line. Holding 78% of FTP is a fair ask for two hours and an impossible one for six, so the reference slides with duration.

100% does not mean you stop. It means you have reached the end of what the model can express. If you are pegged there with half the ride left, the viability banner says so in words, because a percentage cannot show how far past the limit a plan actually is.

LEG FATIGUE CURVEfinishes at 88%010203040miles0%25%50%75%100%fuel points
The same course and rider, with four gels placed through the race (green). The curve is not a smooth ramp: it bites on climbs and gives some back on easy ground. The same climb costs differently depending on when you reach it, which is the whole reason this is a curve and not a number.

Anaerobic reserve

A second clock, for the sharp end.

The fatigue curve above is built for a long day. It was fitted against races of two and a half hours and up, and it measures the thing that decides those: how much of yourself you have spent by the time the hard part arrives. Under about ninety minutes it reads structurally low, because there was never time to accumulate a day’s worth of load, and a hard fifty-minute lap does not fail on that mechanism anyway.

It fails on this one. Above your threshold you draw on a finite reserve, the anaerobic work capacity that physiologists call W′. Below threshold it refills, faster the further under you sit, which is the published critical power model rather than a rule of thumb. Empty it and you cannot hold power above threshold any more, whatever your legs or the fatigue curve say. That is a mechanical ceiling, not a warning, and the plan reports where on the course it would hit it and by how many kilojoules the plan overspends.

The acute load in the fatigue curve is the rough version of the same idea, scored against your own average effort. The reserve does it properly, against your threshold, with the recovery kinetics from the literature. Both run on every plan. On a short course the reserve is the constraint that binds and the fatigue percentage is context; over a few hours it reverses, the pace preset scales down with duration, the reserve sits comfortable and fatigue and fuel become the story. The verdict says which one is deciding this ride rather than reciting both.

One correction sits between the physics and the reserve, and it is the same steep-pitch problem noted under known gaps below. The speed solver holds a minimum speed and will demand whatever wattage keeps you moving on a wall, which for most riders is far more than they can produce. That is a fair simplification for predicting time, since you either make the power or you walk and the clock runs either way. Fed straight into the reserve it would drain you against watts you never made. So efforts are capped at your aerobic ceiling, about 1.2 times threshold, and the segment is stretched to conserve the work the hill actually costs: you do not do less, you take longer, and the reserve pays for the grind rather than the fantasy.

The size of the reserve is the softest number here. It defaults to 20 kJ, the middle of the range for trained amateurs, and you can set your own in your profile from a three-minute all-out test. Until it is your number rather than a population one, the reserve alone is not allowed to declare a plan unrideable; it can say hard, and it can say where, but the harshest verdict on the page is reserved for evidence that does not rest on a default.

Why FTP matters

Terrain demands absolute watts. What they cost is personal.

A steep pitch costs the same wattage whoever is riding it. The difference is what that wattage means to you. A pitch that sits at 70% of a strong rider’s threshold might be 130% of yours, and you will be over threshold on every climb while also being out on course much longer. The cost compounds twice.

If your FTP is wrong, the speed prediction stays roughly right but the fatigue and viability verdicts drift. It is the number most worth testing honestly.

Fueling

You cannot fix a deficit at the moment you feel it.

Calories come from your watts. Crank power already includes every meter of climbing, so the burn is watts times hours times one fixed conversion: about 22% of the food energy you spend becomes work at the pedals and the rest is heat. Climbing is not added a second time. Your training calibration then scales that figure to you.

You start with a glycogen store that scales with your weight: about 1,800 kcal for an 84 kg rider who is rested and fed normally. Muscle glycogen is a concentration, so a bigger rider carries more of it. Loading for two or three days adds about a third, a hard ride the day before takes about a quarter off, and the plan asks which of those describes your morning. Only the carbohydrate share of your burn draws on the store, and that share rises with intensity, which is why a hard short race can still empty the tank.

Only carbohydrate counts. Fat and protein are real calories, but they cannot be oxidised fast enough to defend glycogen at race intensity. A 220 kcal bar that is 30% fat delivers about 155 usable kcal; a gel is close to pure carbohydrate. Your fuel total counts every calorie you packed. Your deficit counts only the carbohydrate.

Your gut ceiling depends on what you are eating, not on you. Glucose and maltodextrin cross the gut wall on the same transporter, and it saturates near 60 g per hour however practiced you are. Fructose uses a second transporter that does not compete, so a glucose-fructose mix carries 90 to 100 g per hour. That is 240 against 400 kcal per hour, and on a long day it decides whether a fuel plan can close at all. You tell the app which you are on; check the label rather than guessing.

Fuel you eat goes to your gut first. Swallowing a large amount at once does not erase a deficit the moment you swallow it, and eating past the ceiling is not counted as helping, because it does not.

Performance fades well before empty. A quarter of the way into the store, recovery between efforts starts to blunt, which is the part riders actually feel. Past a third, every effort reads harder than the watts say it should. That is why the plan puts fuel in long before you would think to reach for it.

Physics sliders

Two riders with identical FTP still differ.

Three settings describe how you handle terrain, which is the part of riding that physics cannot read off a GPX file. They change how much the day costs your legs. They do not change your predicted finish time.

Rider Physics Profile These sliders model how you personally handle terrain. A climber handlestech differently than a diesel engine. Tune to match your riding style,and the fatigue curve updates live. Move them freely to see whatchanges. Nothing is kept until you save.TECHNICAL SECTION EFFICIENCYi1.4Balanced: moderate cost on tech0.8: Efficient on tech (diesel/puncher)2.5: Tech sections drain you fastDESCENT RECOVERY / MOMENTUMCARRYi1.0Balanced descent pace0.3: Attack descents (less recovery)2.0: Cruise descents (legs reset well)BETWEEN-EFFORT RECOVERYABILITYi0.8Average recovery between efforts0.2: Fatigue stacks (poor recovery)2.0: Legs reset fast on easy terrainRider type: Balanced All-RounderReset to defaultsSave Physics ProfileSaved 3 days agoThese are saved separately from the profile above.
The card as it appears, at the defaults everyone starts on. Each one shows where you sit and what that position means in words, so you are describing yourself rather than picking a number.
Technical Section EfficiencyWhat rough, twisty, punchy ground costs you per second compared to smooth ground. A puncher pays less for it than a diesel does. Descent Recovery / Momentum CarryWhether a descent is a rest or another effort. Cruise it and your legs reset; charge it and you get very little back. Between-Effort Recovery AbilityHow quickly easy ground bleeds a hard effort back down, which is what decides whether the next climb starts fresh.

The defaults are fitted against real race telemetry. Leave them there until you have ridden with the app and know how the curve compared to your day, then move the one you have a genuine opinion about. Honest self-assessment produces a plan you can ride; optimistic self-assessment produces one you cannot. Nothing is kept until you save, so trying a setting out cannot quietly rewrite your profile.

Surface

The ground is worth more than the bike.

Measured against a race file with power: the same cross country bike needed less than half the rolling resistance on Birkie trail and forest road that it did on singletrack. That is 13 to 17% of your finish time, a larger effect than the gap between any two bikes in the list. Which makes treating a whole course as one surface a real problem, because almost no course is.

So the route can be split into sections, each priced separately. Rolling resistance and the handling limits are resolved per section, and the physics runs across the joins exactly as it does everywhere else, carrying your speed from the pavement onto the gravel rather than starting fresh.

PavementSealed road or bike path. Estimated from real rides, without measured watts. Fire roadGroomed doubletrack, gravel road, snowmobile trail. The one measured against a race file with power. Rough two‑trackLoose or chunky gravel, unmaintained forest road, ATV trail. About two thirds of the way from fire road toward singletrack. SingletrackDirt trail. The reference surface the whole table is built on. SoftSand, deep loam, grass. A placeholder: not yet checked against a ride file.

Where surface bites hardest is where it is flat. Measured inside one ride that was part sealed road and part forest road, pavement was 46% faster on flat ground and no faster at all on a 3 to 6% climb. Rolling resistance is a fixed force, so once the road tilts up, gravity swamps it. On a steep course this setting changes little. On a flat one it changes everything.

Where the sections come from

Three ways in. Suggest sections looks the route up on OpenStreetMap and proposes a surface for each stretch from the road or trail it runs on, named, for you to check. Or draw the sections yourself on the profile. Or describe the route in a sentence. Whichever way, nothing changes until you apply it, and anything left unanswered stays marked as not set and is modeled as the picker says.

Telling it, in the way you would tell a friend

Dragging boundaries around a map is slow, and nobody thinks about a course that way. So you can write it down instead: “first 13 miles paved, then forest road to mile 69, singletrack to 70.4, gravel home”, and that becomes the sections the model uses.

Worth being precise about what this does, because the distinction matters. It restructures what you said. It does not look the trail up. A language model has no map data, so asking it what surface sits at a coordinate would get you something confident and invented, and a made up surface tag looks exactly like a measured one while quietly changing every number that follows. The distances and the surfaces both come from you. Its whole job is turning your sentence into breakpoints. What comes back is shown for review before it is applied, and anything it cannot place is simply left alone.

Once tagged, the map and the elevation profile can be colored by surface, so you can see the ground change under you and check the tagging against what you know of the course.

Play by play

Not a prediction to admire. A search for advantage.

A finish time tells you what the day costs. It does not tell you where the day is won, and on singletrack those are not the same question. So the solver records something extra on its final pass: at every step, what actually set your speed.

There turn out to be two answers rather than three. Either your legs set it, in which case more power really does mean more speed. Or the trail set it: the corner you are in has a speed above which you do not hold the line, and the brakes are simply what brings you down to it. Braking is the visible half of the same state, and it is energy you already paid for being turned into heat in a rotor.

Your legsPower is the limit. This is the ground the pacing plan is about, and the only ground where riding harder makes you faster. The trailCurvature and surface cap the speed whatever your watts. Time spent here is time your FTP cannot buy anything with. The brakesThe same ceiling, with energy actively thrown away to stay under it. Counted in joules, because that is what it is.

Every stretch where it was not your legs becomes a play: where it starts, how long it runs, what it costs you, and what to do there in a sentence written from the ground rather than from a template. A braking descent reads differently from switchbacks on a climb, and both read differently from a tight flat section. Stretches where your anaerobic reserve refills are plays too, because knowing where the trail gives something back is worth as much as knowing where it takes.

They are drawn twice and you pick which: an overhead of the trail with each play numbered on it, or the elevation profile with the plays shaded under the line. Hover the picture and the play you are in lights up in the list beside it. Click a play and every other chart on the page locks onto that point, so you can read what your legs are doing when you get there.

Onto the bars

Mark the plays and each one becomes a note at the start of its stretch, carrying a cue short enough for a head unit to show: Set speed, Roll turns, Carry it, Let it run, Rhythm, Smooth, Recover. A note rather than a range, because a range takes its own metric value as its name, and 180W is not what you want read out to you at the top of a braking descent.

The plays come out of the same physics as the plan, so they move when the plan does. Change the surface on a section, say the day is muddy, put wider tires on, and they re-solve. They are not notes somebody wrote about this course; nobody has ridden it for you. The one thing they do not know yet is you. How hard you personally brake into a corner is not a slider and is not yet fitted from your activities, so the ceiling is the bike and the ground rather than your hands. That is the next thing calibration gets to.

Ride markers

The plan is no use in the car park.

A plan you read the night before is a plan you are recalling from memory at hour three, which is exactly when recall is worst. So the parts that decide the day can be marked and carried with you.

Drag across any chart to select a stretch, and the marker reads back what the plan already predicts across it. You are not typing a target in and hoping. You are reading out what the model says, which is why the number moves the moment your FTP, your bike or the surface does.

Average wattsTime weighted, the way average power is quoted everywhere else. What you would actually hold across the stretch. Average speedDistance over time. The cue every head unit shows, whether or not you own a power meter. Fatigue on arrivalHow deep into your legs you will be when you reach it. The marker fires as you arrive, so the state you get there in is the number that matters. TechnicalHow twisty it is, on the same scale the trail map colors by, plus roughly how many switchbacks.

Your fuel points can be dropped in as markers too, so the unit tells you when to eat as well as when to push. A feed the model placed for you is named by what to eat there rather than by a number: 67 g carbs, or 1 gel · 23 g carbs.

Getting it onto the bike

Export the route and every marker as a GPX, a TCX or a FIT course file. The difference is worth understanding, because head units do not agree. A GPX waypoint is a bookmark that happens to sit near a route. A TCX or FIT course point is part of the course itself, which is why a Garmin announces one and ignores the other. The FIT also records what each marker is: a gel, a drink, an aid station, the start of a climb.

GarminUse the TCX. Its course points are what an Edge calls out, and the timings come from the ride this model predicts for you, so each one lands when you are actually expected there. The FIT carries the same points and timings, with each marker’s type. Stages DashUse the FIT. It shows cues only from a FIT course. WahooELEMNT ACE, BOLT 3 and ROAM 3 show markers on the map from either file. Earlier BOLT and ROAM units list them in the cue sheet instead. Hammerhead KarooTakes the route, drops the markers. Send the file through Ride with GPS and sync from there if you want them. Suunto, AmazfitTake the route. Points of interest are managed separately in their own apps.

Checked against each vendor’s own documentation in September 2026. If your unit is not in that list, the route will still import; whether the markers come with it is the part that varies.

After the ride

The plan gets better once you hand the ride back.

Everything above runs on a route and a profile. None of it has seen you ride. The first time it does is when you give it a recording of a ride on a route you planned, and that is the point where the model stops being a generic physics engine with your weight typed in and starts being fitted to you.

Two ways in, and they are not equal

Upload the fileThe .fit your head unit wrote, dropped onto the route in My Rides, one at a time or a season at once. This is the file at full resolution, and it is the only one that can calibrate. Import from StravaConnect once in your profile, then pick from your recent activities under any saved route. Convenient, and honest about what it is: Strava sends a processed copy of the activity, not the recording, so an import is compared against the plan but never used to fit the model. Manual upload is also the one way in no platform can switch off.

Either way the activity is checked before it is kept. If you started the watch at the trailhead and stopped it in the driveway, the part that is not on the route is found and offered as a cut, with the distance stated; you can decline and keep the whole thing, in which case it is marked as not calibrating. A file that averages 35 mph, or jumps distance, or carries a minute at car speed, is flagged before it can teach the model anything.

Calibration: one number, and how sure of it

The solver takes the activity’s recorded moving time and average power and asks a single question: what share of your power has to reach the trail for this model to reproduce this ride on this route? It solves the ride on the bike it was ridden on, so the difference between two of your bikes never ends up in the answer. The answer is one scalar. 0.93 means the model was running you about 7% strong; 1.04 means you rode a little better than your number. It is one parameter on purpose. A fit with more knobs than activities will reproduce any single activity perfectly and predict the next one worse.

Alongside the scalar comes a band. The same solve is repeated with rolling resistance moved 15% either way and moving time moved 2% either way, and the spread of answers is stored with the number. A tight band clear of 1.0 means the activity separated you from the model. A band that crosses 1.0 means it did not, however good the ride felt. That band is what the rest of the app reads to decide how precise it is allowed to be.

Two activities do not calibrate at all, and the app says so rather than fitting them anyway: a plan with drafting on, because the shelter of the riders in front would be fitted into your FTP and then applied to every solo ride after it, and a Strava import, for the reason above.

Your bikes, and how you descend on each

Add the bikes you ride in Athlete Profile: a name, the kind of bike, its weight if you know it, and its suspension. A plan says which bike it is for, and switching bikes shows what the switch did to the finish. Every activity is tagged with the bike it was on: the one you pick when you bring it in from Strava, otherwise your default, and you can change it on the activity.

What a bike learns is how you descend on it. On descents steeper than 4% power hardly matters; speed there is braking, line and nerve. Your speed on those grades, against how fast the model takes them on that kind of bike, holds steady from one ride to the next for one rider on one bike, and it separates a confident descender from a cautious one clearly: on the same descents, a fast racer and a steady rider read a steady 13 to 27% apart. It is measured from the bike's own activities, shown activity by activity, and used in your plans only when you press Use in my predictions, for that bike only.

Cornering on flat ground and carrying momentum into a rise are not measured this way yet. You pedal through both, and until pedalling can be separated from skill there, the model keeps its standard handling for them.

Precision is the confidence display

No number on the plan is shown more precisely than the data behind it earns. With no activity of yours in the model, the finish is a range rather than a time, because 1h 47m would be fake precision. Calibrated with a wide band, it is a single time to the nearest five minutes with an approximate mark. Calibrated with a tight band, it is to the minute. The color says which: green, orange, or a translucent amber for no data yet, with a legend under the tiles.

Where the range comes fromThe model is run again with one thing moved each time. How far your watts sit from what the model expects to get out of them on this ground (measured from the band once you are calibrated, an assumption of ±8% until then), and how far the ground’s rolling resistance might sit from the surface table (±15%). The two are independent, so they combine as a root sum of squares rather than stacking at their joint worst case. The info mark beside the finish tile shows the working for the plan in front of you. What narrows itOne calibrated activity, done alone on the route. More activities do not narrow it further yet: the fit is one scalar. Fitting rolling resistance alongside it across all your activities is the next step, and that is where the range starts shrinking with every file.

Progression

Every activity you log on a route is kept against the plan it was compared to, in order, and the Progression page reads them together: how far each landed from its plan, and between your first activity and your latest, where on the course the time moved. Adjacent stretches that moved the same way are merged so a two-part climb reads as one place, anything under twenty seconds is left out as noise, and the three biggest gains and losses are named by distance.

The first line on that page is how much of a claim the data can support. Twelve weeks out with two activities logged does not get a fitness verdict, and it does not go red either, because red reads as unfit and the data cannot say that. It says what would change it. And the page is plain that it is not yet corrected for wind, heat or ground between the two days, which move a finish time more than a month of training does. That correction is what comes next.

Accuracy and limits

Where it is good, and where it is not.

The speed model is fitted against real race files with power meters on them, by solving for the power that reproduces the actual moving time and then comparing predicted speed to recorded speed section by section. Measured on three race files, mile by mile, the predicted speed is 1.0 to 1.4 mph off the recorded speed at the median, and within 2.5 mph nine miles in ten. Before any calibration, at the rider's own weight and with each section on its own ground, the finish time itself came out 2.2% long, 2.5% short and 0.1% short on those three races.

Built on real riders, real courses

Every constant in the model was fitted against race files from real riders on real race courses, with power meters on the bike, so the physics was checked against watts that were measured rather than assumed.

It is strongest on the kind of ground it was fitted on: cross-country and marathon courses, singletrack, forest roads and the roads between them. On ground far from that, high mountain courses, deep sand, sustained rock, treat a prediction as a good estimate rather than a number to plan a season around. Every file from a new course sharpens it, and if a race goes very differently from the plan, that is worth knowing about, not embarrassing.

Known gaps

  • Steep unpaved climbs, over-predicts. On sustained pitches of roughly 14% and above, many riders get off and walk. The speed model always assumes you keep pedalling, so it can predict a speed well above what you will really do. The anaerobic reserve no longer inherits this: it caps those pitches at your aerobic ceiling and charges you for the grind, as described above. The finish time still does not, and remains optimistic on walls.
  • Steep paved climbs, under-predicts. Unless a section is marked as pavement, the model applies off-road rolling resistance and handling limits to it. On pavement you keep full traction and can put power down, so real speed can run above the prediction.
  • Short technical features are not modeled one by one. A rock garden, a log climb or a drop has no term of its own: the model sees the grade, the corners and the surface of the trail around it. Each one costs you seconds, not minutes, so on a course of an hour and a half or more they change the finish time very little, and the singletrack numbers were fitted on real trail with features like these in it.

There is no surface type in a GPX file, so the model cannot read it from the route itself. It can look the route up on the map and propose a surface for each section, and you can tell it section by section rather than once for the whole route: see below. On courses that mix pavement with dirt, the steepest paved sections remain the least reliable part of the plan. Everything else holds up.

On elevation gain: it is read from the GPS trace and smoothed. On files with noisy altitude data it can read meaningfully higher than the figure your head unit reports, because barometric altimeters filter small bumps more aggressively. If total climbing looks high, that is why.

On the file itself: two recordings of the same course are not the same input. Handling limits are read from curvature, which is degrees of turn per meter, and a file recorded at one point per second through the corners describes a very different trail from one that has been thinned out for sharing. We have measured the same course coming out more than twice as twisty on one file as on another. Prefer the densest file you can get, and expect a re-exported or simplified route to predict slightly faster than the real one.

No card. No account needed to try it.