What you have climbed
128 runs · last 180 days
one and a half Everests
Everest is 8849 m, in the Himalaya.
Cleared
How you climb
43 hilly runs · 351 climbing segments
You hold 13% more speed on the climbs than the energy model expects. Hills are a strength.
Measured inside each run: your speed on the flat sets the reference, and every climbing segment is compared against the speed Minetti's energy-cost model says the same effort should buy on that gradient. Because both halves come from the same run, fitness, weather and how hard you were trying all cancel — only the gradient is left.
This is the part grade-adjusted pace cannot tell you. GAP applies the model to flatten your splits; this tests it, which is why it can say whether hills are a strength.
Your hilliest runs
most climbing first
| Run | Distance | Ascent | Per km | Ground | On the climbs |
|---|---|---|---|---|---|
|
Run
2026-06-06 |
9.3 km | 179 m | 19 m | Hilly | +8% |
|
Run
2026-07-09 |
9.0 km | 176 m | 19 m | Hilly | +15% |
|
Run
2026-04-30 |
9.2 km | 174 m | 19 m | Hilly | +6% |
|
Run
2026-05-30 |
11.0 km | 173 m | 16 m | Hilly | +11% |
|
Run
2026-04-21 |
9.4 km | 172 m | 18 m | Hilly | +15% |
|
Run
2026-08-19 |
9.8 km | 171 m | 17 m | Hilly | -2% |
|
Run
2026-09-05 |
5.0 km | 170 m | 34 m | Steep | +21% |
|
Run
2026-06-13 |
5.0 km | 170 m | 34 m | Steep | +21% |
“Ground” is ascent per kilometre, the same scale hiking guides use. The last column is that run alone against the energy model, so it moves about far more than the average above — one run is a mood.
, so the check has to wait for the parsed document. addEventListener('DOMContentLoaded', function () { try { var dm = ['standalone', 'minimal-ui', 'fullscreen', 'window-controls-overlay']; if (!document.getElementById('frozen-note') && (navigator.standalone || dm.some(function (m) { return matchMedia('(display-mode: ' + m + ')').matches; }))) { var pk = 'portal-installed', reg = JSON.parse(localStorage.getItem(pk) || '{}'); reg.Run315 = Date.now(); localStorage.setItem(pk, JSON.stringify(reg)); } } catch (e) { /* private mode - ignore */ } }); // Installable, and readable on the train. See templates/sw.js. if ('serviceWorker' in navigator) { addEventListener('load', function () { navigator.serviceWorker.register('/Run315/sw.js'); }); }