Report · Heat
The June 2026 heatwave in numbers: how 40 °C crossed Europe in a week
In the last week of June, extreme heat moved from the Bay of Biscay to central Europe. We traced the day each of 56 cities hit its highest temperature, and how high it went.
Between 15 June and 5 July 2026, 42 of the 56 European and French cities we track reached 35 °C in both of our datasets. 11 passed 40 °C in OpenWeather’s hourly record, and 7 in ERA5 too. During the heatwave week itself, the highest temperature both datasets support was in Bordeaux on 23 June: 43.5 °C (110.3 °F) in OpenWeather, 41.4 °C in ERA5.
What made the episode unusual was not only its intensity but its path. Sorting the cities by the day they peaked draws the heat’s route across the map: south-western France on 22–23 June, Paris, Nantes and Lille on the 24th, London, Amsterdam and Strasbourg on the 26th, Berlin, Munich and Zurich on the 27th, Prague, Vienna and Warsaw on the 28th, and the Balkans — Belgrade, Zagreb, Budapest, Bucharest — on the 29th and 30th. On 27 June alone, 8 cities recorded their highest temperature of the three weeks.
- 41.4 °C
- Bordeaux, 23 June: the highest peak both datasets confirm
- 11
- cities at 40 °C or more (OpenWeather)
- 42
- cities at 35 °C or more in both datasets
- 15
- days at 35 °C or more in Seville in three weeks, in both datasets
Key findings
- 11 cities reached 40 °C in OpenWeather’s record, 7 of them in ERA5 as well: Rennes (44.3 °C / 40.2 °C), Nantes (44.2 °C / 41.2 °C), Bordeaux (43.5 °C / 41.4 °C), Tours (43.0 °C / 40.3 °C), Seville (41.7 °C / 41.5 °C), Toulouse (41.4 °C / 39.9 °C), Paris (41.3 °C / 40.3 °C), Limoges (41.0 °C / 40.2 °C), Berlin (40.8 °C / 39.6 °C), Budapest (40.5 °C / 39.9 °C), Dijon (40.1 °C / 37.4 °C).
- Paris peaked at 41.3 °C on 24 June (ERA5: 40.3 °C); Berlin at 40.8 °C on 27 June.
- London reached 35.7 °C on 26 June; Amsterdam 36.4 °C.
- The busiest day was 27 June, when 8 cities hit their peak.
Six cities through the heatwave
Daily maximum temperature, 15 June – 5 July 2026 (°C, axis from 15 °C)
Bordeaux peak 43.5 °C (ERA5 41.4 °C), 23 June
Nantes peak 44.2 °C (ERA5 41.2 °C), 24 June
Paris peak 41.3 °C (ERA5 40.3 °C), 24 June
Brussels peak 36.6 °C (ERA5 37.0 °C), 24 June
Berlin peak 40.8 °C (ERA5 39.6 °C), 27 June
Prague peak 38.4 °C (ERA5 39.3 °C), 28 June
The heat’s route, day by day
The table lists every city that reached 35 °C in both datasets, in the order it peaked in OpenWeather’s record. Where ERA5 puts the peak on a different day, its date is shown in brackets.
| Peak day | City | OpenWeather | ERA5 | Days ≥ 35 °C |
|---|---|---|---|---|
| 21 June | Biarritz | 35.3 °C | 40.6 °C (24 June) | 1 |
| 22 June | Avignon | 38.6 °C | 37.3 °C | 13 |
| 22 June | Limoges | 41.0 °C | 40.2 °C | 9 |
| 23 June | Nîmes | 39.7 °C | 37.8 °C (22 June) | 14 |
| 23 June | Toulouse | 41.4 °C | 39.9 °C | 12 |
| 23 June | Bordeaux | 43.5 °C | 41.4 °C | 14 |
| 23 June | Rennes | 44.3 °C | 40.2 °C | 4 |
| 23 June | Madrid | 38.4 °C | 39.3 °C (22 June) | 10 |
| 24 June | Brussels | 36.6 °C | 37.0 °C (26 June) | 3 |
| 24 June | Lille | 37.3 °C | 36.6 °C | 3 |
| 24 June | Paris | 41.3 °C | 40.3 °C | 9 |
| 24 June | Nantes | 44.2 °C | 41.2 °C (23 June) | 6 |
| 25 June | Tours | 43.0 °C | 40.3 °C (23 June) | 10 |
| 25 June | Brest | 35.3 °C | 38.3 °C (24 June) | 1 |
| 26 June | Strasbourg | 39.6 °C | 38.8 °C (27 June) | 9 |
| 26 June | Reims | 37.7 °C | 37.9 °C | 2 |
| 26 June | London | 35.7 °C | 36.0 °C | 2 |
| 27 June | Berlin | 40.8 °C | 39.6 °C (28 June) | 3 |
| 27 June | Munich | 36.4 °C | 36.2 °C | 1 |
| 27 June | Zurich | 38.2 °C | 37.1 °C | 7 |
| 27 June | Metz | 39.4 °C | 39.2 °C | 5 |
| 27 June | Grenoble | 37.6 °C | 37.9 °C | 5 |
| 27 June | Dijon | 40.1 °C | 37.4 °C | 9 |
| 27 June | Lyon | 38.6 °C | 38.4 °C (21 June) | 10 |
| 27 June | Clermont-Ferrand | 39.7 °C | 37.6 °C | 8 |
| 28 June | Warsaw | 38.2 °C | 38.2 °C | 2 |
| 28 June | Vienna | 38.8 °C | 38.6 °C | 5 |
| 28 June | Prague | 38.4 °C | 39.3 °C | 3 |
| 28 June | Rome | 37.5 °C | 37.8 °C | 6 |
| 28 June | Milan | 37.3 °C | 37.2 °C (27 June) | 8 |
| 29 June | Kyiv | 35.4 °C | 35.0 °C | 1 |
| 29 June | Belgrade | 38.5 °C | 37.5 °C | 4 |
| 29 June | Zagreb | 37.7 °C | 36.8 °C | 5 |
| 29 June | Nice | 37.5 °C | 35.3 °C | 8 |
| 29 June | Marseille | 38.6 °C | 35.2 °C | 13 |
| 29 June | Montpellier | 36.9 °C | 38.7 °C (5 July) | 3 |
| 30 June | Bucharest | 37.5 °C | 38.1 °C | 2 |
| 30 June | Athens | 35.1 °C | 36.2 °C | 1 |
| 30 June | Budapest | 40.5 °C | 39.9 °C | 7 |
| 2 July | Seville | 41.7 °C | 41.5 °C | 15 |
| 2 July | Lisbon | 38.3 °C | 40.1 °C | 4 |
| 5 July | Perpignan | 38.8 °C | 38.8 °C | 8 |
Why the two datasets differ at the peak
OpenWeather samples a city’s own coordinates hour by hour; ERA5 is a physically consistent reconstruction of the atmosphere on a grid of about 30 km, which averages a hot city centre with cooler countryside and water. On ordinary days the two agree closely, but a single afternoon’s peak is where they part. Across the 42 cities in the table, ERA5’s peak was lower than OpenWeather’s in 27, by a median of 0.4 °C; the widest gap, in either direction, was 5.3 °C. Neither is an official station record: national services such as Météo-France and the Deutscher Wetterdienst publish those, and they are the reference for any claim of a record.
How the episode fits the rest of the season is in summer 2026 in 32 European cities and, for France, our report on 25 French cities.
Data and method
Hourly observations come from OpenWeather’s History API and long-run normals from its Statistical Weather Data API, computed for each city’s coordinates. A day counts when it has at least 20 hourly records, in the city’s local time.
Download the data (CSV) — Free to reuse with credit to Weatheo and a link to this page.
How to cite
Weatheo Data Desk, “The June 2026 heatwave in numbers: how 40 °C crossed Europe in a week”, Weatheo, 11 September 2026. https://weatheo.com/en/blog/june-2026-heatwave-europe-in-numbers
Forecasts for the cities in this report
The local forecast, hour by hour and 14 days ahead, for each place quoted above.