What is PaceVance?

PaceVance is a pace planning tool for road and trail runners. It helps you plan every segment of your race: not just the distance and finish time, but the real effort, accounting for climbing, descent, and terrain.

Open a route, set a target, and it works out what each part of the race should cost you, then lets you overrule it wherever you know the ground better than a model can.

How the pacing works

You give one number about yourself, the pace you hold on flat road at race effort, and every segment is priced from it. There is no model to choose: which one is right is a question with an answer, and it is ours to get right rather than yours to guess at. Climbing and descending are handled separately, because what slows you down is not the same thing in each direction.

Climbing: energy is the limit

Priced from Minetti et al. (2002), a lab study measuring the metabolic cost of running at gradients from −45% to +45%. Going up, you are limited by what you can sustain, so cost converts honestly into pace: twice the cost, twice the time.

Cr(i) = 155.4i⁵ − 30.4i⁴ − 43.3i³ + 46.3i² + 19.5i + 3.6  (J kg⁻¹ m⁻¹)
pace = flat pace × Cr(i) / Cr(0)

This is Minetti's cost of running, Cr. The paper also fits a walking curve, Cw, whose constants differ and which would over-penalize every climb. The polynomial was fitted between −45% and +45%, so we clamp to that range rather than extrapolate past it. It holds up against known vertical rates: a 5:00/km runner on a sustained +30% grade comes out at roughly 1030 m of climbing per hour.

Descending: braking is the limit

Descents get their own curve: a real but modest benefit, fastest at around −11%, then a braking cost that grows with steepness and overtakes it beyond −22%. A −30% descent costs you about a fifth more than your flat pace, before the ground is taken into account.

pace = flat pace × (1 − 1.82d + 8.26d²),  d = |grade|,  capped at 3×
fastest at d = 0.11, where it is 10% under flat pace

This curve is ours, not a published model. Metabolic cost is the wrong tool here: Minetti's own numbers make a −20% descent 50% cheaper than flat, which read as a speed would send a 5:00/km runner down it at 2:30/km. Nobody has run that. What actually caps a descent is eccentric braking and where you can put your feet, so the shape is fitted to that instead, a best case of about 10% faster than flat at around −11%, in line with what runners actually clock on downhill sections.

Ground: what the elevation profile cannot tell you

A GPX file carries distance and elevation and says nothing about the surface. Two routes with an identical profile are half an hour apart if one is fire road and the other is boulders, so the ground has to be asked for, in words, because nobody can estimate a coefficient.

climbingdescending
Road1.001.00
Gravel / fire road1.021.06
Trail1.051.15
Technical trail1.101.32
Rocky / scrambling1.161.55

Climbs and descents are charged separately here too, and that is the point. Rough ground barely matters going up, where you are slow anyway; coming down it costs you badly, because you brake and pick lines. A setting that slowed you evenly in both directions would be redundant, it would just be your flat pace written twice, since pace × gradient × ground is the same product whichever term you fold it into.

Why we show the math

Trail runners are serious planners. You know your body, your terrain, your race history. No calculator knows better than you do, it just does the arithmetic faster.

So the model is a starting point, never a verdict. Type over any segment's pace and that segment is locked: the number you wrote is what it costs, and the rest of the plan re-solves around it to hold your target time. Lock a climb at walking pace because you know you will walk it, and everything else tightens to compensate.

A segment carries its climb and its descent separately, and each part is costed on its own before they are added up. Working from the net change instead would let a loop or an out-and-back cancel to zero and come back with flat-ground pace, which is exactly wrong for the most common shape of trail route.

Every model has assumptions baked in, and ours is no exception. Minetti is lab-measured running economy, which varies with fitness and running style; the descent curve is a judgment about what braking costs, not a measurement. Treat the output as a well-informed first draft of your race, and overwrite the parts you know better.

How it's built

Calculations Vanilla JavaScript, client-side, no server
Maps Leaflet + OpenStreetMap tiles
Elevation charts Chart.js
GPX / KML / KMZ Parsed in-browser (DOMParser + JSZip)
Storage localStorage only, nothing persisted server-side
Backend PHP (page serving and i18n only)

References

  • Minetti, A.E. et al. (2002). Energy cost of walking and running at extreme uphill and downhill slopes. Journal of Applied Physiology, 93(3), 1039–1046.