Report · Heat
France’s summer 2026 in 25 cities: hot days, tropical nights and 40 °C peaks
Every one of the 25 French cities we measured ran warmer than normal between June and August. The heat was not only a Mediterranean story: Paris, Tours and the Loire valley were among the furthest above their normals.
Summer 2026 was warmer than normal in all 24 French cities where our two sources agree, by an average of +2.6 °C over June, July and August. The smallest anomaly, in Montpellier, was still +1.8 °C.
11 of the 25 cities reached 40 °C at least once in OpenWeather’s hourly record, and 8 did so in ERA5 too. The highest temperature both datasets support was in Bordeaux: 43.5 °C in OpenWeather and 41.4 °C in ERA5, on 23 June, during the heatwave of the last week of June. OpenWeather’s single highest reading, 44.3 °C in Rennes, is not confirmed by ERA5 (40.2 °C).
- +3.5 °C
- Nice: largest anomaly
- 79
- days at 30 °C or more in Nîmes (ERA5: 77)
- 78
- tropical nights in Nice (ERA5: 72)
- 70
- consecutive days at 30 °C in Nice
Key findings
- All 24 ranked cities were warmer than normal; 8 were at least 3 °C above.
- Paris averaged 23.8 °C, +3.4 °C above normal, with 45 days at 30 °C or more and 21 at 35 °C.
- Counting only days both sources agree on, Avignon had the most at 35 °C or more (31), ahead of Nîmes (31) and Lyon (27).
- The seven Mediterranean cities averaged 76 days at 30 °C and an anomaly of +2.4 °C; six cities of the north and west averaged fewer hot days (41) but a larger anomaly, +2.8 °C.
- Nice’s hottest spell ran 70 days in a row at 30 °C or more, from 17 June to 25 August.
How far each city’s summer ran above normal
Mean temperature, June–August 2026, minus the normal for the same days (°C)
- Nice+3.5 °C
- Paris+3.4 °C
- Tours+3.4 °C
- Grenoble+3.2 °C
- Dijon+3.1 °C
- Limoges+3.0 °C
- Lyon+3.0 °C
- Nantes+3.0 °C
- Toulouse+2.9 °C
- Bordeaux+2.8 °C
- Rennes+2.8 °C
- Avignon+2.6 °C
- Marseille+2.6 °C
- Metz+2.4 °C
- Perpignan+2.4 °C
- Lille+2.2 °C
- Nîmes+2.2 °C
- Reims+2.1 °C
- Ajaccio+2.0 °C
- Brest+2.0 °C
- Strasbourg+2.0 °C
- Le Havre+1.9 °C
- Biarritz+1.8 °C
- Montpellier+1.8 °C
Show the numbers
| City | Mean | Normal | Anomaly | Anomaly (ERA5) |
|---|---|---|---|---|
| Nice | 27.8 °C | 24.3 °C | +3.5 °C | +2.8 °C |
| Paris | 23.8 °C | 20.4 °C | +3.4 °C | +3.7 °C |
| Tours | 24.2 °C | 20.7 °C | +3.4 °C | +3.8 °C |
| Grenoble | 24.5 °C | 21.3 °C | +3.2 °C | +3.2 °C |
| Dijon | 23.8 °C | 20.8 °C | +3.1 °C | +3.2 °C |
| Limoges | 23.3 °C | 20.2 °C | +3.0 °C | +4.5 °C |
| Lyon | 25.1 °C | 22.1 °C | +3.0 °C | +3.9 °C |
| Nantes | 22.8 °C | 19.8 °C | +3.0 °C | +3.9 °C |
| Toulouse | 25.7 °C | 22.8 °C | +2.9 °C | +3.6 °C |
| Bordeaux | 24.8 °C | 22.1 °C | +2.8 °C | +3.4 °C |
| Rennes | 21.6 °C | 18.7 °C | +2.8 °C | +3.4 °C |
| Avignon | 27.1 °C | 24.6 °C | +2.6 °C | +2.1 °C |
| Marseille | 27.5 °C | 24.9 °C | +2.6 °C | +2.9 °C |
| Metz | 22.3 °C | 19.9 °C | +2.4 °C | +3.2 °C |
| Perpignan | 27.1 °C | 24.7 °C | +2.4 °C | +3.0 °C |
| Lille | 21.0 °C | 18.8 °C | +2.2 °C | +2.6 °C |
| Nîmes | 26.8 °C | 24.6 °C | +2.2 °C | +2.7 °C |
| Reims | 21.5 °C | 19.4 °C | +2.1 °C | +2.8 °C |
| Ajaccio | 26.4 °C | 24.4 °C | +2.0 °C | +2.6 °C |
| Brest | 19.0 °C | 17.0 °C | +2.0 °C | +2.9 °C |
| Strasbourg | 23.0 °C | 21.0 °C | +2.0 °C | +3.1 °C |
| Le Havre | 19.8 °C | 17.9 °C | +1.9 °C | +2.6 °C |
| Biarritz | 22.4 °C | 20.6 °C | +1.8 °C | +3.0 °C |
| Montpellier | 26.4 °C | 24.6 °C | +1.8 °C | +3.3 °C |
A northern summer that felt southern
The ranking upends the usual map of French heat. The cities furthest above their normals include Paris (+3.4 °C), Tours (+3.4 °C) and Dijon (+3.1 °C) — places whose normal summer is mild — while Montpellier (+1.8 °C) and Perpignan (+2.4 °C) sit lower in the table. On the Atlantic side, Nantes ran +3.0 °C and Rennes +2.8 °C above normal; even Brest, the coolest city in the set, was +2.0 °C warmer than usual.
June, July or August?
Monthly mean temperature minus normal (°C)
| City | June | July | August |
|---|---|---|---|
| Nice | +3.8 °C | +3.7 °C | +3.0 °C |
| Paris | +3.5 °C | +3.6 °C | +3.0 °C |
| Tours | +3.5 °C | +3.8 °C | +3.0 °C |
| Grenoble | +2.9 °C | +3.4 °C | +3.3 °C |
| Dijon | +3.0 °C | +3.0 °C | +3.2 °C |
| Limoges | +3.1 °C | +3.3 °C | +2.7 °C |
| Lyon | +2.8 °C | +2.8 °C | +3.5 °C |
| Nantes | +2.7 °C | +3.7 °C | +2.6 °C |
| Toulouse | +2.5 °C | +3.7 °C | +2.5 °C |
| Bordeaux | +2.7 °C | +3.3 °C | +2.2 °C |
| Rennes | +2.7 °C | +3.2 °C | +2.6 °C |
| Avignon | +2.3 °C | +2.7 °C | +2.8 °C |
| Marseille | +2.1 °C | +2.7 °C | +3.0 °C |
| Metz | +2.2 °C | +2.3 °C | +2.6 °C |
| Perpignan | +2.2 °C | +2.7 °C | +2.2 °C |
| Lille | +2.2 °C | +2.6 °C | +1.9 °C |
| Nîmes | +1.9 °C | +2.3 °C | +2.4 °C |
| Reims | +2.0 °C | +2.0 °C | +2.3 °C |
| Ajaccio | +1.4 °C | +1.8 °C | +2.7 °C |
| Brest | +1.8 °C | +2.4 °C | +1.8 °C |
| Strasbourg | +2.1 °C | +1.8 °C | +2.2 °C |
| Le Havre | +1.3 °C | +2.2 °C | +2.2 °C |
| Biarritz | +1.8 °C | +1.8 °C | +1.7 °C |
| Montpellier | +1.5 °C | +1.8 °C | +2.1 °C |
Days at 30 °C and 35 °C
Counted in days, the south still dominates: Nîmes reached 30 °C on 79 days (ERA5: 77) and Avignon on 79 (75). But the count reached well into the north and centre too: Tours logged 67 days at 30 °C and Limoges 58. The two sources differ most on these counts, and most of all on the coast: for Marseille, OpenWeather has 49 days at 35 °C, ERA5 only 8, because ERA5’s 30 km cell mixes in the cooler sea. Both are drawn.
Days at 30 °C or more
June–August 2026; bar: OpenWeather, tick: ERA5
- Nîmes79 / 77
- Avignon79 / 75
- Marseille78 / 56
- Perpignan77 / 68
- Nice77 / 64
- Ajaccio74 / 73
- Toulouse69 / 58
- Montpellier67 / 71
- Tours67 / 44
- Lyon61 / 59
- Bordeaux61 / 46
- Grenoble58 / 69
- Limoges58 / 47
- Dijon52 / 39
- Clermont-Ferrand49 / 40
- Nantes49 / 38
- Strasbourg48 / 39
- Paris45 / 39
- Metz45 / 39
- Reims34 / 29
- Rennes34 / 25
- Lille31 / 22
- Biarritz28 / 21
- Le Havre22 / 13
- Brest10 / 14
Show the numbers
| City | Days ≥ 30 °C (OpenWeather) | Days ≥ 30 °C (ERA5) |
|---|---|---|
| Nîmes | 79 | 77 |
| Avignon | 79 | 75 |
| Marseille | 78 | 56 |
| Perpignan | 77 | 68 |
| Nice | 77 | 64 |
| Ajaccio | 74 | 73 |
| Toulouse | 69 | 58 |
| Montpellier | 67 | 71 |
| Tours | 67 | 44 |
| Lyon | 61 | 59 |
| Bordeaux | 61 | 46 |
| Grenoble | 58 | 69 |
| Limoges | 58 | 47 |
| Dijon | 52 | 39 |
| Clermont-Ferrand | 49 | 40 |
| Nantes | 49 | 38 |
| Strasbourg | 48 | 39 |
| Paris | 45 | 39 |
| Metz | 45 | 39 |
| Reims | 34 | 29 |
| Rennes | 34 | 25 |
| Lille | 31 | 22 |
| Biarritz | 28 | 21 |
| Le Havre | 22 | 13 |
| Brest | 10 | 14 |
Days at 35 °C or more
June–August 2026; bar: OpenWeather, tick: ERA5
- Marseille49 / 8
- Avignon45 / 31
- Nîmes44 / 31
- Toulouse39 / 27
- Bordeaux39 / 20
- Tours30 / 16
- Lyon29 / 27
- Limoges25 / 18
- Perpignan25 / 15
- Nantes22 / 16
- Paris21 / 13
- Dijon20 / 10
- Grenoble18 / 29
- Strasbourg18 / 14
- Clermont-Ferrand18 / 9
- Metz15 / 11
- Montpellier14 / 32
- Rennes14 / 10
- Nice14 / 3
- Reims7 / 8
- Lille7 / 5
- Ajaccio6 / 11
- Le Havre5 / 4
- Biarritz2 / 7
- Brest1 / 1
Show the numbers
| City | Days ≥ 35 °C (OpenWeather) | Days ≥ 35 °C (ERA5) |
|---|---|---|
| Marseille | 49 | 8 |
| Avignon | 45 | 31 |
| Nîmes | 44 | 31 |
| Toulouse | 39 | 27 |
| Bordeaux | 39 | 20 |
| Tours | 30 | 16 |
| Lyon | 29 | 27 |
| Limoges | 25 | 18 |
| Perpignan | 25 | 15 |
| Nantes | 22 | 16 |
| Paris | 21 | 13 |
| Dijon | 20 | 10 |
| Grenoble | 18 | 29 |
| Strasbourg | 18 | 14 |
| Clermont-Ferrand | 18 | 9 |
| Metz | 15 | 11 |
| Montpellier | 14 | 32 |
| Rennes | 14 | 10 |
| Nice | 14 | 3 |
| Reims | 7 | 8 |
| Lille | 7 | 5 |
| Ajaccio | 6 | 11 |
| Le Havre | 5 | 4 |
| Biarritz | 2 | 7 |
| Brest | 1 | 1 |
Tropical nights
A tropical night — one that never drops below 20 °C — is where coastal cities pull ahead, because the sea keeps their nights warm. Nice had 78 (ERA5: 72), Perpignan 71 (81) and Marseille 76 (69). Paris had 27, Lyon 31.
Nights that stayed at or above 20 °C
June–August 2026; bar: OpenWeather, tick: ERA5
- Nice78 / 72
- Marseille76 / 69
- Perpignan71 / 81
- Ajaccio61 / 66
- Montpellier59 / 67
- Nîmes58 / 65
- Avignon57 / 62
- Grenoble41 / 36
- Toulouse35 / 49
- Lyon31 / 49
- Bordeaux30 / 40
- Biarritz27 / 42
- Paris27 / 29
- Tours21 / 29
- Strasbourg17 / 27
- Dijon17 / 25
- Metz15 / 21
- Nantes14 / 24
- Clermont-Ferrand10 / 27
- Rennes10 / 15
- Limoges9 / 27
- Le Havre5 / 12
- Lille5 / 9
- Reims3 / 19
- Brest1 / 8
Show the numbers
| City | Nights ≥ 20 °C (OpenWeather) | Nights ≥ 20 °C (ERA5) |
|---|---|---|
| Nice | 78 | 72 |
| Marseille | 76 | 69 |
| Perpignan | 71 | 81 |
| Ajaccio | 61 | 66 |
| Montpellier | 59 | 67 |
| Nîmes | 58 | 65 |
| Avignon | 57 | 62 |
| Grenoble | 41 | 36 |
| Toulouse | 35 | 49 |
| Lyon | 31 | 49 |
| Bordeaux | 30 | 40 |
| Biarritz | 27 | 42 |
| Paris | 27 | 29 |
| Tours | 21 | 29 |
| Strasbourg | 17 | 27 |
| Dijon | 17 | 25 |
| Metz | 15 | 21 |
| Nantes | 14 | 24 |
| Clermont-Ferrand | 10 | 27 |
| Rennes | 10 | 15 |
| Limoges | 9 | 27 |
| Le Havre | 5 | 12 |
| Lille | 5 | 9 |
| Reims | 3 | 19 |
| Brest | 1 | 8 |
The peaks
13 of the 25 cities set their summer high between 22 and 29 June, in the heatwave that crossed the country from the south-west; the rest peaked in July or August. The table lists each city’s highest reading in both datasets. These are not official Météo-France station records, which are measured under standard conditions at specific sites and can differ from both.
| City | Highest (OpenWeather) | Date | Highest (ERA5) | Date |
|---|---|---|---|---|
| Rennes | 44.3 °C | 23 June | 40.2 °C | 23 June |
| Nantes | 44.2 °C | 24 June | 41.2 °C | 23 June |
| Bordeaux | 43.5 °C | 23 June | 41.4 °C | 23 June |
| Tours | 43.0 °C | 25 June | 40.3 °C | 23 June |
| Nîmes | 41.9 °C | 8 July | 40.5 °C | 8 July |
| Toulouse | 41.4 °C | 23 June | 39.9 °C | 23 June |
| Paris | 41.3 °C | 24 June | 40.3 °C | 24 June |
| Limoges | 41.0 °C | 22 June | 40.2 °C | 22 June |
| Perpignan | 40.4 °C | 8 July | 41.2 °C | 8 July |
| Metz | 40.2 °C | 29 July | 39.2 °C | 27 June |
| Dijon | 40.1 °C | 27 June | 37.4 °C | 27 June |
| Marseille | 39.7 °C | 13 August | 37.4 °C | 8 July |
| Clermont-Ferrand | 39.7 °C | 27 June | 37.6 °C | 27 June |
| Montpellier | 39.7 °C | 8 July | 41.9 °C | 8 July |
| Strasbourg | 39.6 °C | 26 June | 38.8 °C | 27 June |
| Avignon | 39.1 °C | 7 July | 38.3 °C | 13 August |
| Lille | 39.1 °C | 14 August | 37.0 °C | 14 August |
| Lyon | 38.9 °C | 13 August | 38.4 °C | 21 June |
| Ajaccio | 38.8 °C | 27 August | 38.1 °C | 14 July |
| Reims | 38.1 °C | 13 August | 37.9 °C | 26 June |
| Grenoble | 37.6 °C | 27 June | 38.2 °C | 3 August |
| Nice | 37.5 °C | 29 June | 35.3 °C | 29 June |
| Le Havre | 36.6 °C | 13 August | 38.2 °C | 25 June |
| Biarritz | 35.4 °C | 12 July | 40.6 °C | 24 June |
| Brest | 35.3 °C | 25 June | 38.3 °C | 24 June |
Not ranked: Clermont-Ferrand, where OpenWeather and ERA5 disagree on the anomaly by more than 1.5 °C. Their figures from both sources are in the CSV.
For the rest of Europe, see summer 2026 in 32 European cities; for the late-June heatwave day by day, the June heatwave in numbers. Cet article existe aussi en français.
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, “France’s summer 2026 in 25 cities: hot days, tropical nights and 40 °C peaks”, Weatheo, 11 September 2026. https://weatheo.com/en/blog/summer-2026-france-heat-25-cities
Forecasts for the cities in this report
The local forecast, hour by hour and 14 days ahead, for each place quoted above.