Methodology
Our score is transparent, reproducible and runner-focused. Here's exactly how we calculate it.
Every marathon on MarathonRoutes is given a difficulty score between 0 and 10, where 0 is pancake-flat and cool, and 10 is a brutal mountain marathon in the heat. The score is a weighted average of five components that account for everything that actually slows a runner down.
Altitude is not scored as a fifth component and isn't applied as a multiplier on the base score either — it's added as difficulty points on top of it. The points curve is calibrated to how recreational runners actually experience elevation, not just elite-athlete VO2max-loss data: cities in the 1,500–2,000m "mile-high" band (Denver, Albuquerque, Nairobi, Johannesburg) register a real difficulty bump even on an otherwise flat, easy course, ramping further for genuinely high-altitude races. Most road marathons are at or near sea level and receive 0 points.
A race like Mexico City (≈2,240m) receives roughly +4.8 points, added directly to its base score rather than scaling it — so altitude contributes real difficulty regardless of how flat or hilly the underlying course is.
Crowd support, aesthetics, organisational quality, cutoff generosity, and logistics all matter — but they don't affect how hard it is to physically complete the race. We track those separately in the race page so you can weigh them yourself.
The score is also not a predictor of your personal finish time. It's a relative ranking of courses. Your own fitness, training and pacing decide your actual result.
The methodology is versioned. The current version is v1.2. Changes from v1.1: altitude moved back from a VO2max-loss multiplier to additive points, recalibrated so "mile-high" cities (1,500–2,000m) register a meaningful bump rather than needing to reach ~2,000m+ before the model responds — the multiplier had collapsed to almost nothing on easy, flat courses at that altitude; the weather ceiling was widened so the hottest, most humid races differentiate from each other instead of several capping at 10/10 together; the downhill damage term is now discounted on courses with a strong net downhill. Changes from v1.0: altitude moved from an additive component to a VO2max-loss multiplier; elevation scoring now uses gradient-weighted gain from GPS data plus a downhill damage term; the weather curve is now asymmetric (heat penalises far more than cold). Every score is rebuilt automatically when the methodology changes. If you think a particular race's score is off, let us know — we take runner feedback seriously.