Report · Heat
Summer 2026 in 32 European cities: how far above normal the heat ran
We compared every day from June to August with the long-run normal in 32 European cities. Rome and Paris ran more than 3 °C above it; Helsinki, Warsaw and Kyiv had an ordinary summer.
Summer 2026 was warmer than normal in 27 of the 31 European cities where our two data sources agree. Across all of them, June to August averaged +1.4 °C above the long-run normal for the same days. Rome led at +3.5 °C, followed by Paris (+3.4 °C) and Barcelona (+2.7 °C).
The figures come from OpenWeather’s hourly observation history for each city, aggregated into local days and compared with OpenWeather’s own normal for every calendar date. We then repeated the calculation with ERA5, the European reanalysis produced for Copernicus, against its 2011–2025 average. A city appears in the ranking only when the two anomalies agree to within 1.5 °C — 31 of 32 did.
- +3.5 °C
- Rome, the largest summer anomaly
- 83
- days at 30 °C or more in Seville
- 92
- nights that stayed above 20 °C in Valletta
- 41.7 °C
- in Seville: the highest peak both datasets confirm
Key findings
- 27 of 31 cities ran warmer than normal; the average anomaly was +1.4 °C (+2.5 °F).
- Paris averaged 23.8 °C against a normal of 20.4 °C — +3.4 °C — and logged 45 days at 30 °C or more (ERA5: 39).
- 6 cities reached 40 °C at least once in OpenWeather’s record (Paris, Milan, Budapest, Valletta, Seville, Berlin); 3 did in both datasets.
- June was the month furthest above normal on average: June +1.6 °C, July +1.0 °C, August +1.5 °C.
- The coolest summer relative to normal among ranked cities was Helsinki’s, at −0.3 °C.
Summer 2026 compared with normal
Mean temperature, June–August 2026, minus the normal for the same days (°C)
- Rome+3.5 °C
- Paris+3.4 °C
- Barcelona+2.7 °C
- London+2.7 °C
- Milan+2.6 °C
- Zagreb+2.6 °C
- Budapest+2.2 °C
- Zurich+2.1 °C
- Vienna+2.0 °C
- Valletta+1.9 °C
- Brussels+1.7 °C
- Dublin+1.7 °C
- Munich+1.6 °C
- Bucharest+1.5 °C
- Sofia+1.5 °C
- Belgrade+1.4 °C
- Amsterdam+1.3 °C
- Madrid+1.3 °C
- Lisbon+1.2 °C
- Prague+1.1 °C
- Athens+0.9 °C
- Copenhagen+0.8 °C
- Edinburgh+0.7 °C
- Seville+0.6 °C
- Berlin+0.4 °C
- Oslo+0.4 °C
- Stockholm+0.3 °C
- Istanbul±0.0 °C
- Kyiv±0.0 °C
- Warsaw−0.1 °C
- Helsinki−0.3 °C
Show the numbers
| City | Mean | Normal | Anomaly | Anomaly (ERA5) |
|---|---|---|---|---|
| Rome | 28.6 °C | 25.1 °C | +3.5 °C | +3.2 °C |
| Paris | 23.8 °C | 20.4 °C | +3.4 °C | +3.7 °C |
| Barcelona | 27.8 °C | 25.1 °C | +2.7 °C | +2.9 °C |
| London | 21.0 °C | 18.3 °C | +2.7 °C | +3.6 °C |
| Milan | 27.2 °C | 24.6 °C | +2.6 °C | +4.1 °C |
| Zagreb | 25.1 °C | 22.5 °C | +2.6 °C | +1.8 °C |
| Budapest | 25.2 °C | 23.0 °C | +2.2 °C | +2.5 °C |
| Zurich | 22.5 °C | 20.5 °C | +2.1 °C | +3.5 °C |
| Vienna | 23.5 °C | 21.6 °C | +2.0 °C | +2.5 °C |
| Valletta | 28.0 °C | 26.1 °C | +1.9 °C | +3.0 °C |
| Brussels | 20.5 °C | 18.8 °C | +1.7 °C | +2.5 °C |
| Dublin | 17.3 °C | 15.6 °C | +1.7 °C | +1.6 °C |
| Munich | 20.7 °C | 19.1 °C | +1.6 °C | +2.7 °C |
| Bucharest | 24.7 °C | 23.3 °C | +1.5 °C | +0.1 °C |
| Sofia | 22.8 °C | 21.4 °C | +1.5 °C | +1.2 °C |
| Belgrade | 24.9 °C | 23.5 °C | +1.4 °C | +1.4 °C |
| Amsterdam | 19.6 °C | 18.4 °C | +1.3 °C | +1.9 °C |
| Madrid | 27.4 °C | 26.1 °C | +1.3 °C | +2.3 °C |
| Lisbon | 22.5 °C | 21.3 °C | +1.2 °C | +1.8 °C |
| Prague | 21.2 °C | 20.1 °C | +1.1 °C | +1.2 °C |
| Athens | 28.7 °C | 27.8 °C | +0.9 °C | +1.0 °C |
| Copenhagen | 18.2 °C | 17.4 °C | +0.8 °C | +0.9 °C |
| Edinburgh | 15.4 °C | 14.7 °C | +0.7 °C | +1.2 °C |
| Seville | 28.0 °C | 27.4 °C | +0.6 °C | +0.7 °C |
| Berlin | 20.5 °C | 20.1 °C | +0.4 °C | +0.9 °C |
| Oslo | 17.1 °C | 16.7 °C | +0.4 °C | +0.6 °C |
| Stockholm | 17.7 °C | 17.4 °C | +0.3 °C | +0.5 °C |
| Istanbul | 24.9 °C | 24.9 °C | ±0.0 °C | +0.8 °C |
| Kyiv | 21.4 °C | 21.4 °C | ±0.0 °C | +0.4 °C |
| Warsaw | 20.3 °C | 20.4 °C | −0.1 °C | +0.2 °C |
| Helsinki | 16.7 °C | 16.9 °C | −0.3 °C | −0.2 °C |
Where the season ran furthest above normal
Rome’s summer averaged 28.6 °C, and Paris — whose normal summer day is a mild 20.4 °C — spent the season +3.4 °C above it: at 23.8 °C, its summer was warmer than a normal one in Belgrade (23.5 °C). London ran +2.7 °C above its normal, with 17 days at 30 °C or more.
In Spain and Greece the anomaly was smaller, but the heat was relentless in absolute terms. Seville recorded 62 days at 35 °C or more (ERA5: 62) and Madrid 34 (ERA5: 43). Athens, which is used to heat, finished only +0.9 °C above its normal.
Which month carried the heat
Monthly mean temperature minus normal (°C), cities in ranking order
| City | June | July | August |
|---|---|---|---|
| Rome | +3.1 °C | +3.3 °C | +4.1 °C |
| Paris | +3.5 °C | +3.6 °C | +3.0 °C |
| Barcelona | +2.8 °C | +2.7 °C | +2.6 °C |
| London | +2.2 °C | +3.1 °C | +2.6 °C |
| Milan | +2.5 °C | +2.5 °C | +2.9 °C |
| Zagreb | +2.1 °C | +1.6 °C | +4.1 °C |
| Budapest | +2.3 °C | +0.9 °C | +3.5 °C |
| Zurich | +1.8 °C | +1.7 °C | +2.7 °C |
| Vienna | +1.9 °C | +1.3 °C | +2.8 °C |
| Valletta | +1.5 °C | +0.8 °C | +3.2 °C |
| Brussels | +2.0 °C | +1.7 °C | +1.4 °C |
| Dublin | +1.8 °C | +2.1 °C | +1.2 °C |
| Munich | +1.5 °C | +1.0 °C | +2.3 °C |
| Bucharest | +2.0 °C | +0.6 °C | +1.8 °C |
| Sofia | +1.5 °C | +0.4 °C | +2.5 °C |
| Belgrade | +1.1 °C | +0.3 °C | +2.9 °C |
| Amsterdam | +1.8 °C | +1.2 °C | +0.9 °C |
| Madrid | +2.8 °C | +1.3 °C | −0.2 °C |
| Lisbon | +1.5 °C | +1.5 °C | +0.7 °C |
| Prague | +1.7 °C | +0.3 °C | +1.3 °C |
| Athens | +1.1 °C | +0.3 °C | +1.2 °C |
| Copenhagen | +1.6 °C | +0.9 °C | ±0.0 °C |
| Edinburgh | +0.9 °C | +0.7 °C | +0.5 °C |
| Seville | +2.1 °C | +1.0 °C | −1.2 °C |
| Berlin | +1.2 °C | −0.2 °C | +0.2 °C |
| Oslo | +0.8 °C | +0.3 °C | ±0.0 °C |
| Stockholm | +0.8 °C | −0.3 °C | +0.3 °C |
| Istanbul | +0.7 °C | −0.2 °C | −0.3 °C |
| Kyiv | −0.6 °C | −0.9 °C | +1.4 °C |
| Warsaw | +0.7 °C | −0.8 °C | −0.1 °C |
| Helsinki | +0.4 °C | −0.7 °C | −0.5 °C |
Hot days: the count that matters to people
An average hides how many days were genuinely hard to live through. Seville reached 30 °C on 83 of the 92 days of summer. North of the Alps, where many homes and offices have no air conditioning, Paris counted 45, Berlin 20 and London 17. Because a count of hot days depends on exactly where a dataset samples a city, the chart shows ERA5’s count beside OpenWeather’s.
Days that reached 30 °C
June–August 2026, the 15 cities with the most; bar: OpenWeather, tick: ERA5
- Seville83 / 86
- Rome80 / 84
- Madrid78 / 82
- Athens78 / 77
- Milan72 / 75
- Barcelona70 / 61
- Belgrade63 / 50
- Zagreb61 / 44
- Bucharest56 / 38
- Valletta53 / 77
- Budapest52 / 50
- Zurich48 / 41
- Sofia47 / 47
- Vienna45 / 41
- Paris45 / 39
Show the numbers
| City | Days ≥ 30 °C (OpenWeather) | Days ≥ 30 °C (ERA5) |
|---|---|---|
| Seville | 83 | 86 |
| Rome | 80 | 84 |
| Madrid | 78 | 82 |
| Athens | 78 | 77 |
| Milan | 72 | 75 |
| Barcelona | 70 | 61 |
| Belgrade | 63 | 50 |
| Zagreb | 61 | 44 |
| Bucharest | 56 | 38 |
| Valletta | 53 | 77 |
| Budapest | 52 | 50 |
| Zurich | 48 | 41 |
| Sofia | 47 | 47 |
| Vienna | 45 | 41 |
| Paris | 45 | 39 |
| Istanbul | 35 | 41 |
| Munich | 33 | 24 |
| Kyiv | 28 | 21 |
| Brussels | 25 | 19 |
| Lisbon | 23 | 35 |
| Prague | 22 | 22 |
| Berlin | 20 | 17 |
| London | 17 | 17 |
| Warsaw | 17 | 17 |
| Amsterdam | 10 | 8 |
| Oslo | 7 | 2 |
| Copenhagen | 2 | 1 |
| Stockholm | 1 | 1 |
| Dublin | 0 | 0 |
| Edinburgh | 0 | 0 |
| Helsinki | 0 | 0 |
| Reykjavik | 0 | 0 |
Nights that never cooled
Health services watch the nights as closely as the days, because a night that stays above 20 °C gives the body no chance to recover. Valletta had 92 such nights, out of 92. In Paris there were 27 (ERA5: 29), in London 8.
Tropical nights
Days whose lowest temperature stayed at or above 20 °C, June–August 2026; bar: OpenWeather, tick: ERA5
- Valletta92 / 91
- Athens90 / 85
- Barcelona84 / 81
- Rome80 / 78
- Milan75 / 74
- Seville71 / 73
- Istanbul67 / 53
- Madrid59 / 67
- Budapest41 / 38
- Bucharest36 / 22
- Belgrade34 / 44
- Zagreb33 / 35
- Lisbon30 / 18
- Paris27 / 29
- Vienna24 / 33
Show the numbers
| City | Nights ≥ 20 °C (OpenWeather) | Nights ≥ 20 °C (ERA5) |
|---|---|---|
| Valletta | 92 | 91 |
| Athens | 90 | 85 |
| Barcelona | 84 | 81 |
| Rome | 80 | 78 |
| Milan | 75 | 74 |
| Seville | 71 | 73 |
| Istanbul | 67 | 53 |
| Madrid | 59 | 67 |
| Budapest | 41 | 38 |
| Bucharest | 36 | 22 |
| Belgrade | 34 | 44 |
| Zagreb | 33 | 35 |
| Lisbon | 30 | 18 |
| Paris | 27 | 29 |
| Vienna | 24 | 33 |
| Warsaw | 12 | 12 |
| Prague | 10 | 13 |
| Kyiv | 9 | 15 |
| London | 8 | 9 |
| Berlin | 7 | 11 |
| Zurich | 6 | 22 |
| Amsterdam | 6 | 6 |
| Sofia | 5 | 6 |
| Munich | 3 | 10 |
| Brussels | 2 | 14 |
| Copenhagen | 1 | 2 |
| Oslo | 0 | 1 |
| Dublin | 0 | 0 |
| Edinburgh | 0 | 0 |
| Stockholm | 0 | 0 |
| Helsinki | 0 | 0 |
| Reykjavik | 0 | 0 |
Paris, day by day
Each stripe is one day of summer 2026, coloured by its mean temperature’s distance from normal
Where the heat peaked
The highest single readings came in two bursts: the heatwave of the last week of June, which carried 40 °C from western France to Berlin, and a second surge in late July and early August over northern Italy and the Balkans. The highest peak that both datasets support was in Seville: 41.8 °C (107.2 °F) in OpenWeather on 22 July, 41.7 °C in ERA5. Single-day peaks are where the two sources differ most — Milan’s highest reading was 42.2 °C in OpenWeather but 37.9 °C in ERA5 — so the table shows both. We follow the June episode hour by hour in a separate report.
| City | Highest (OpenWeather) | Date | Highest (ERA5) | Date |
|---|---|---|---|---|
| Milan | 42.2 °C | 31 July | 37.9 °C | 6 August |
| Seville | 41.8 °C | 22 July | 41.7 °C | 1 August |
| Paris | 41.3 °C | 24 June | 40.3 °C | 24 June |
| Valletta | 41.3 °C | 26 August | 43.0 °C | 21 July |
| Berlin | 40.8 °C | 27 June | 39.6 °C | 28 June |
| Budapest | 40.5 °C | 30 June | 39.9 °C | 30 June |
| Zagreb | 39.9 °C | 4 August | 36.9 °C | 6 August |
| Vienna | 39.8 °C | 4 August | 39.5 °C | 4 August |
| Belgrade | 39.1 °C | 5 August | 37.7 °C | 20 August |
| Kyiv | 38.7 °C | 6 August | 37.6 °C | 6 August |
| Madrid | 38.4 °C | 23 June | 39.3 °C | 22 June |
| Prague | 38.4 °C | 28 June | 39.3 °C | 28 June |
The exceptions
Northern Europe had an ordinary summer. Helsinki finished at −0.3 °C, Stockholm at +0.3 °C and Warsaw at −0.1 °C. Reykjavik is not ranked: OpenWeather puts its anomaly at −3.5 °C, ERA5 at −0.2 °C, and we do not publish a ranking position that depends on which dataset you pick.
How to use these figures
The normal is the average of recent years, not a pre-industrial baseline, so an anomaly of 3 °C here means three degrees above a period that was itself already warm. For France’s cities in detail, see our report on 25 French cities; for how the whole year compared, see the past twelve months in 87 cities. The complete table, with both sources’ values for every city, is in the CSV below.
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, “Summer 2026 in 32 European cities: how far above normal the heat ran”, Weatheo, 11 September 2026. https://weatheo.com/en/blog/summer-2026-europe-heat-report
Forecasts for the cities in this report
The local forecast, hour by hour and 14 days ahead, for each place quoted above.