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.