When an elite runs 2:02 in Berlin versus 2:05 in Boston, how much of the gap is the runner and how much is the course? Boston times don’t count for record purposes, but they’re how Boston runners measure themselves against runners in other cities. To compare an athlete’s personal bests across courses, you need a defensible scale.
This article quantifies course difficulty across the six World Marathon Majors using three independent analytical frameworks. The headline answer: Boston is the hardest, slower than Berlin by 101 seconds for an equivalent runner. NYC is second at +78s. Berlin, Chicago, London, and Tokyo cluster within 35 seconds of each other.
1. The three frameworks
We define course difficulty operationally: the expected time penalty (in seconds) an elite runner pays to run this course versus a flat, sea-level course in optimal weather. Three independent frameworks:
F1: Elevation/grade-adjusted (Minetti)
Integrate Minetti's (2002) energy-cost-of-running curve over each course's gradient distribution. Predicts that Boston, with its 136m net descent, should be faster than a flat course. We report this honestly: Frameworks 2 and 3 override it.
F2: Within-runner paired comparison (the cleanest)
For every athlete who ran two different Majors within 18 months, compute the time delta. Fit per-course offsets with Berlin = 0. Bootstrap 2,000 times for 95% CIs. This is the gold-standard framework because it controls for athlete ability without any course physics assumption.
F3: Weather-normalized top-10 average
Top-10 average finish time per (course, year, gender), divided by a Maughan / El Helou weather penalty multiplier, averaged across 2015–2024, anchored to Berlin = 0. Independent of F2 in aggregation; shares only the weather curve.
2. What the data show
The within-runner framework is unambiguous: Boston +101s, NYC +78s, London +31s, Tokyo +21s, Chicago +11s, Berlin (baseline). The Boston vs NYC gap is statistically clean. Their CIs do not overlap.
3. The headline: Course Difficulty Index
Combine all three frameworks into a Course Difficulty Index (CDI) anchored at Berlin = 1.000:
CDI = 0.15 × F1 + 0.50 × F2 + 0.35 × F3
Framework 2 gets the heaviest weight because it's the cleanest. Framework 1 is down-weighted because the Minetti model can't see late-race fatigue.
| Rank | Course | F1 | F2 | F3 | CDI | vs Berlin |
|---|---|---|---|---|---|---|
| 1 | Berlin | 1.0000 | 1.0000 | 1.0000 | 1.0000 | +0s |
| 2 | Chicago | 0.9996 | 1.0015 | 1.0015 | 1.0012 | +9s |
| 3 | Tokyo | 0.9979 | 1.0027 | 1.0022 | 1.0018 | +14s |
| 4 | London | 1.0005 | 1.0039 | 1.0038 | 1.0034 | +26s |
| 5 | NYC | 1.0020 | 1.0100 | 1.0103 | 1.0089 | +69s |
| 6 | Boston | 0.9885 | 1.0129 | 1.0128 | 1.0092 | +72s |
4. Three findings that survive every framework
Finding 1: Boston is the hardest Major.
F2: +101s. F3: +100s. F1 disagrees and predicts Boston should be net-fast. The disagreement is the story: the Newton hills bite empirically in ways the elevation model can't predict from the gradient profile alone.
Finding 2: Chicago and Berlin are statistically very close.
The F2 difference is +11s with a 95% CI of [+9, +14]s. Detectable at n = 2,808 direct pairs, but well below race-day weather variance. Practically interchangeable.
Finding 3: Weather dominates within-course year-over-year change.
Berlin 2022 (18°C) and London 2018 (23.5°C) each saw weather-adjusted slowdowns of 60–120s, larger than the average gap between Berlin and Tokyo (17s).
5. Cross-framework view
6. Sensitivity: does the ranking hold?
We stress-tested the CDI against three perturbations: drop Framework 1 entirely; restrict Framework 2 to sub-2:10 men; substitute a Strava-GAP-style elevation model.
7. Beyond the six: Sydney and Cape Town
Sydney joined the Majors in 2025; we don't yet have paired-runner data for it. The extension below uses Framework 1 (elevation) only.
8. The takeaway
The six World Marathon Majors are not equally fast. If you ran 2:08 in Boston, the equivalent Berlin effort is about 2:06, almost two minutes faster, for the same physiological work. If you ran 2:08 in Chicago, the equivalent Berlin time is 2:07:49, and the two are practically interchangeable. For most readers ranking their personal bests across Majors, this is the missing scale.
Full code, data, methodology, and reproducibility instructions live at github.com/lyhjeremy/marathon-majors-course-difficulty. The analysis runs end-to-end from python src/analysis.py in under 90 seconds.