Windsplit
Pace and time are linked: change one and the other follows. "The time is" picks whether the time means the effort (goal pace × distance) or the finish time with wind, hills and temperature included.
Choose a GPX file for the course (from the organiser, Strava, Garmin Connect or another runner). You can have several own courses; each gets its own line in the menu.
Drafting only cuts the wind cost in headwind, and only on the share where you are actually sheltered.
Bars: mean wind (dark) and gusts (light) where you are that hour. Arrows: wind direction. Line: temperature. Shaded area: from start to estimated finish.
Local time. Frame around the hours you are out. The arrow shows where the wind blows to, the number is mean wind (gusts in brackets). The bar at the bottom is the wind uncertainty.
Positive = headwind, negative = tailwind, along the running direction. Bars beyond ±1.5 m/s cost or give time.
Keep the effort even and let the speed follow wind and terrain: these are the km times that give goal-pace effort all the way. Wind, hills and net are seconds per km against goal pace: red costs, green gives. Pace = goal pace + net, i.e. what the watch should show on that kilometre.
Same forecast, same goal pace. The only difference is how much wind hits you on the headwind stretches.
Morning, midday and evening at the start, plus the weather in the race window each day. Tap a day for hour by hour.
The table is wider than the screen: swipe sideways for gusts, temperature and humidity.
| Time | Wind m/s | Direction ° | Gusts m/s | Temp °C | RH % |
|---|
| Model | At start | Mid-race | Temp |
|---|
Wind: cost = K × [(v + w)² − v²] s/km, i.e. the extra drag work relative to still air, where v is the running speed and w is the headwind at runner height (10 m wind from the forecast × exposure). K = 0.28 reproduces Davies 1980 (approx. +7–8 % oxygen uptake at 4.5 m/s headwind at 4.5 m/s running speed); "Daniels" uses K = 0.20, which matches the wind table in Daniels' Running Formula. Both scale with your CdA against a 70 kg/178 cm reference. Tailwind gives 60 % of the corresponding gain. Drafting removes a share of the cost (50/70/90 %, cf. Pugh 1971: approx. 80 % less drag one metre behind), only on headwind stretches, and the coverage falls linearly towards the finish according to "losing the draft". The "Treningsverk app" option shows the app's 0.11 × w² × pace factor, which gives a 3–5 times lower wind cost.
Uncertainty: ECMWF runs the forecast 51 times with small perturbations of the initial state (the IFS ensemble, 0.25°, 15 days ahead). Each member's deviation from the ensemble median in wind speed, direction and temperature hour by hour is added to the forecast for all three points, and the whole course is recalculated per member. That gives the distribution of wind cost and finish time in "Estimate", and per hour in "Hour by hour": the bar is the 10th–90th percentile for the wind where you are, the line is the forecast being used, and the percentage is the share of members giving a headwind above 1.5 m/s where you are. Ensembles are too narrow in the last 1–2 days, so read 80 % as "around 80 %". "Weather around the race" is Open-Meteo's daily summary at the start location for the day before, race day and the day after.
Forecast confidence: the lamp at the top says how much the forecast is worth. Red more than 15 days out (no forecast, typical weather only), yellow from 15 to 5 days (a forecast exists, but direction and cloud often flip; check again), green the last 4 days when models usually agree. Green drops back to yellow if the ECMWF ensemble still spreads more than 40 s in wind cost.
The countdown is calculated from the race date and start time in the race's own time zone (IANA zone per race; own courses get the zone from Open-Meteo when the forecast is fetched, otherwise your time zone is assumed and it says so), and shows the local time where you are when it differs.
Races more than 16 days ahead: no forecast exists, so the page shows typical weather from the ERA5 reanalysis (Open-Meteo's archive) for the same date ±3 days over the last 10 years, approx. 70 days. The table gets the median per hour (wind direction as speed-weighted mean, weather symbol as the most common), and each day is used as a member, so the box and the bars show the spread between years. "Last year on this date" is ERA5 for exactly the same date the year before. This is clearly marked as not a forecast, and switches automatically to a real forecast once the date is within 16 days. ERA5 is a 25 km model: wind in the city is typically lower than ERA5 says, and individual days can differ a lot.
Source: Open-Meteo serves numbers from the national weather models (DWD ICON, ECMWF IFS, NOAA GFS/HRRR, Météo-France) and picks the "best match" for the location; yr.no uses MET Norway's MEPS in the Nordics and ECMWF elsewhere, with station correction. Below the forecast table the same hour is shown from several models, so the spread is visible.
Weather: the forecast is fetched automatically from Open-Meteo (on opening, when the page is brought back after 15 min, and every 30 minutes) for every full hour in the race window, in the race's local time zone, at three points along the course: the start, the point farthest away and midway between them. For each 100 m segment the weather is first interpolated in time to the calculated passing time, then in space (inverse distance weighting between the three points). Wind direction is treated as a vector.
Elevation: from the course files (Amsterdam: the Garmin Connect course's terrain model; Frankfurt: goandrace's 2024 GPX with the Main bridges added from a barometric track of the 2025 race; Chicago and New York: goandrace's 2025 GPX, New York submitted via Windsplit, with the five bridges added by hand from known deck heights since terrain models put bridge decks at water level; Valencia: GPS track from the 2024 race with smoothed barometric elevation; smoothed over 100 m).
Sun: Open-Meteo's hourly shortwave radiation (W/m²) is added to the air temperature as effective temperature = temperature + radiation/150. Full October sun at 10:00 (about 350 W/m²) adds +2 °C, midsummer noon sun (850 W/m²) +5 to 6 °C, overcast 0. The cost curve below runs on effective temperature, and the hour tiles show "feels" when the sun adds at least 1 °C. Heat sensitivity: "tolerates heat well" multiplies the cost by 0.7 and moves the free zone up 2 °C, "heat-sensitive" multiplies by 1.4. Heavier runners produce more heat per unit of skin area, so the cost scales with (weight/70)^0.3. Airflow: cooling depends on the air moving over you, that is running speed plus headwind or minus tailwind (at runner height). Effective temperature is adjusted by 0.6 °C per m/s of deviation from still air: a 3 m/s tailwind adds about +1 °C, the same headwind −1 °C, and a tailwind equal to your running speed (no airflow) +2.5 °C. Cloud cover is the least certain forecast field several days out; the sun term is worth most on race morning.
Temperature: 5–15 °C effective temperature is free. 15–22 °C costs 1.2 s/km per degree, 22–28 °C 2.0 s/km per degree, below 5 °C 0.15 s/km per degree. Humidity counts above 18 °C. The slope was calibrated on 12 Oct 2026 against the Chicago Marathon 2026 (16–18 °C air, full sun, calm, humid): Ely & Cheuvront 2007 (seven marathons, finish time against WBGT, Med Sci Sports Exerc) and El Helou et al. 2012 (1.8 million finishers, six big-city marathons, PLoS ONE) both give a 2–3 % loss at an effective 18–20 °C, about 3 minutes for a 2:45 runner; the old slope (0.4 s/km per degree) gave under a minute. Elevation: Minetti cost curve per 100 m segment, gradient calculated from the course file's elevation. Minetti's curve is metabolic treadmill data and gives about 5.4 % more time per percent of grade; at race pace heart-rate-based models, Daniels' rule of thumb and real race splits all show less. The curve is therefore scaled to 65 % uphill (≈3.5 % per percent) and 40 % downhill (≈2.2 % per percent, because you brake and cadence caps the gain). Calibrated on 13 Oct 2026 against elite runners' splits at Hytteplanmila: the per-km error fell from 8 to 5 seconds. Elevation from map tools is smoothed over about ±150 m before grades are computed, since terrain models add small false humps; barometric tracks from real races are smoothed only lightly and preferred where available. The box under the map shows the kilometre's average grade in percent.
Splits at even effort: each km gets the goal pace plus the segment's wind, elevation and temperature cost. The sum is the estimated finish time. The Amsterdam course is the official 2026 route from Garmin Connect (course 475917224); the drawn route is 42.94 km and is scaled to 42.195 km so the km markers match the race's. Frankfurt is the official course from the 2024 GPX (42.34 km drawn, scaled to 42.195 km); a 2025 GPS track lies within a few metres of it.
Map: © OpenStreetMap contributors.