The study

How does weather change the way a marathon is run?

Across 16 eligible editions at 15–19.9°C, the average edition-median finish was 2.3% slower than the earlier benchmark; across 54 editions below 10°C, it was 0.4% faster. The course and field mix differs, so this is not a measured temperature penalty.

Each race edition receives equal weight. Temperature bands still contain different courses and fields, so these differences are not a temperature penalty.

524,323 eligible finishes · weather proxy

How we measured it. Use the supplied Open-Meteo archive hour nearest the scheduled local start. Join the single city-year weather row whose race date parses and matches the record year. Group temperature below 10°C, 10–14.9°C, 15–19.9°C and at least 20°C.

Full methodology & sources

First calculate each edition’s median outcome among linked runners with a recent benchmark, requiring 100 finishes. Then average edition medians equally within temperature bands, requiring five editions. The profile is normalized by each runner’s own marathon average; performance is relative to the earlier benchmark.

The modeled weather is a start-hour proxy, not each runner’s exposure. Start offsets are absent, temperatures change during the race and humidity, wind, sunshine, terrain and fitness remain potential confounders. Edition counts in the source table are the number of weather exposures; finish counts are not independent weather observations.

For explicitly audited canonical-ID releases, validate unique matching CORE/FULL ID sets and matching recorded edition/name labels, then join by record ID with matching finish and all nine section durations. Legacy exports retain the one-to-one edition, trimmed lowercase name and full-timing join because their IDs are incompatible. Durations are compared to milliseconds. Keep only supplied non-ambiguous runner identities without conflicting recorded gender, inferred birth years spanning more than two years, or duplicate editions. These are candidate cross-race identities, not independently verified people; unlinked runners are absent. The linkage audit records which join was used.

Recompute the benchmark as the fastest eligible finish in the two strictly earlier calendar years. The current race and every other race in its calendar year are excluded. This avoids guessing within-year chronology and prevents current-outcome leakage. It is a recent recorded best, not a fitness measurement, an expected finish, or a lifetime personal best.

Performance change is 100 × (current finish / recent recorded best − 1). Negative is faster. Opening change compares 0–6.21 mi pace with that earlier best’s full-marathon pace. Faster opening: more than 2% faster; similar: within 2%; slower: more than 2% slower. The ±2% and ±5% cutoffs are predefined descriptions, not physiological thresholds.

Use complete, strictly increasing elapsed checkpoints at 3.11, 6.21, 9.32, 12.43, 15.53, 18.64, 21.75, 24.85 and 26.22 mi. Clock strings must parse as H:MM:SS or M:SS. No missing splits are interpolated.

Remove exact duplicate race records, ignoring database IDs, ingestion timestamps and source URLs. Retain finishes from 90 minutes to 12 hours with every section between 3.22 and 32.19 minutes/mi. These quality filters can exclude genuine unusual performances; the analysis describes this eligible cohort, not every entrant.

Full source records are available in public GitHub Releases. These chart tables require at least 100 eligible observations per cell for estimate reliability. Counts refer to finishes, linked pairs or event observations as specified in that answer.

These are observational results. Fitness changes, intentions, training, selection into the dataset and unmeasured conditions can explain differences. Outcome percentiles describe variation among performances, not confidence intervals or advice about the best strategy.

Apply the reviewed source-quality edition exclusions for this exact export after the timing checks. Known invalid split grids, incomplete ingestion, unreconciled HOLD editions and a selected top-finisher field do not contribute to the analyses or prior benchmarks. Report source exclusions separately; an already invalid timing row is not counted twice. Missing age or recorded gender alone does not exclude an otherwise eligible finish from the overall cohort. Other sparse editions are not declared incomplete merely from their size.

Marathons, years and recorded data. Chart samples may be smaller than the eligible analysis cohort.

Pace through the race by start-hour temperature

Pace difference (%) · higher is slower

Points average the preceding section. The final section is 24.85–26.22 mi; lines do not locate pace changes within a section.

View exact values and sample sizes
Course sectionPace through the race by start-hour temperatureObservations
0–3.11 mi-4.3%265,613
3.11–6.21 mi-5.5%265,613
6.21–9.32 mi-4.5%265,613
9.32–12.43 mi-3.5%265,613
12.43–15.53 mi-1.6%265,613
15.53–18.64 mi1%265,613
18.64–21.75 mi4.9%265,613
21.75–24.85 mi9%265,613
24.85–26.22 mi4.8%265,613

Performance relative to earlier races

Finish-time change (%) · below zero is faster

10–14.9°C0.4%
15–19.9°C2.3%
Below 10°C-0.4%

Equal weight per eligible edition; at least five editions per band. Descriptive, without a causal weather adjustment.

View exact values and sample sizes
GroupPerformance relative to earlier racesObservations
10–14.9°C0.4%265,613
15–19.9°C2.3%24,632
Below 10°C-0.4%232,975

All research questions