Skip to content
Deep-dive

Climate and air in Milan

Humid Po-plain climate: grey, cold winters with temperature inversions (fog is less frequent than it used to be), hot muggy summers with a strong heat island. Milan is consistently among the Italian provincial capitals with the most days above the PM10 limit; ARPA Lombardia publishes the data and regional and municipal anti-smog measures (Area B) apply.

Sections: Seasons · Rainfall · Temperatures · Air quality · Environmental hazards

Seasons

Milan lies in the middle of the Po plain, at about 120 metres, far from the sea and with the Alps to the north blocking air currents: the result is a humid climate with little wind, cold grey winters and hot muggy summers. Fog, once characteristic, is now rare in the city and remains more frequent in the countryside to the south. Snow falls almost every winter but rarely stays on the ground.

Summer is the hardest period: the urban heat island keeps nights warm in the centre and dense districts, and high humidity makes the heat heavy between late June and August; afternoon thunderstorms can be violent, with flooding in the Seveso and Lambro areas (Niguarda, northern Isola, Ponte Lambro). Spring and autumn are the rainy and most pleasant seasons.

Air quality

Air is the main environmental problem of Milan and the Po basin. In the reports of the national environmental protection system (SNPA) the city is every year among the provincial capitals with the most days above the daily PM10 limit, concentrated between October and March when temperature inversion traps pollutants from traffic, heating and the plain's agriculture. Nitrogen dioxide also exceeds limits at traffic stations.

ARPA Lombardia publishes daily station data and forecasts; the Region activates temporary anti-smog measures (limits on older diesel vehicles, heating temperatures, a ban on open burning) when exceedances persist. The municipality has set up Area B, an environmental limited-traffic zone covering almost the whole city that bans the most polluting vehicles on weekdays, with a calendar of bans extended year by year. People with respiratory conditions should avoid flats facing the ring roads and the main arterial routes.

Average temperature, January
City figurePeriod: 1991–2020Estimatesample unknown
Source: ISPRA – Valori climatici normali in Italia (web app SCIA, Sezione Climatologia Operativa), trentennio 1991–2020 · Stazione dell'aeroporto di Linate (sedime tra Milano, Segrate e Peschiera Borromeo), ai margini orientali della città.
3.3 °C
Average temperature, July
City figurePeriod: 1991–2020Estimatesample unknown
Source: ISPRA – Valori climatici normali in Italia (web app SCIA, Sezione Climatologia Operativa), trentennio 1991–2020 · Stazione dell'aeroporto di Linate (sedime tra Milano, Segrate e Peschiera Borromeo), ai margini orientali della città.
24.6 °C
Rainy days per year
City figurePeriod: 1991–2020Estimatesample unknown
Source: WMO Climatological Standard Normals 1991–2020, Italy station data sheets (Servizio Meteorologico Aeronautica Militare via NOAA NCEI accession 0253808 v6.6) · Stazione dell'aeroporto di Linate, ai margini orientali della città. Valore arrotondato da 73.85.
74days
Days per year above the PM10 limit (50 µg/m³)
City figurePeriod: 2024Validsample unknown
Source: SNPA – La qualità dell'aria in Italia nel 2024: PM10, tabella ISQA per stazione (dati ARPA/APPA, provvisori) · Dati 2024 elaborati dalle ARPA/APPA a fine anno, provvisori: le relazioni regionali definitive possono dedurre i superamenti attribuibili a polveri desertiche. Valore limite: max 35 giorni/anno. Altre stazioni urbane 2024: Senato 53, Pascal Città Studi (fondo) 47, Verziere 44 giorni.
68days

Data

Average temperature, January
City figurePeriod: 1991–2020Estimatesample unknown
Source: ISPRA – Valori climatici normali in Italia (web app SCIA, Sezione Climatologia Operativa), trentennio 1991–2020 · Stazione dell'aeroporto di Linate (sedime tra Milano, Segrate e Peschiera Borromeo), ai margini orientali della città.
3.3 °C
Average temperature, July
City figurePeriod: 1991–2020Estimatesample unknown
Source: ISPRA – Valori climatici normali in Italia (web app SCIA, Sezione Climatologia Operativa), trentennio 1991–2020 · Stazione dell'aeroporto di Linate (sedime tra Milano, Segrate e Peschiera Borromeo), ai margini orientali della città.
24.6 °C
Rainy days per year
City figurePeriod: 1991–2020Estimatesample unknown
Source: WMO Climatological Standard Normals 1991–2020, Italy station data sheets (Servizio Meteorologico Aeronautica Militare via NOAA NCEI accession 0253808 v6.6) · Stazione dell'aeroporto di Linate, ai margini orientali della città. Valore arrotondato da 73.85.
74days
Days per year above the PM10 limit (50 µg/m³)
City figurePeriod: 2024Validsample unknown
Source: SNPA – La qualità dell'aria in Italia nel 2024: PM10, tabella ISQA per stazione (dati ARPA/APPA, provvisori) · Dati 2024 elaborati dalle ARPA/APPA a fine anno, provvisori: le relazioni regionali definitive possono dedurre i superamenti attribuibili a polveri desertiche. Valore limite: max 35 giorni/anno. Altre stazioni urbane 2024: Senato 53, Pascal Città Studi (fondo) 47, Verziere 44 giorni.
68days

Sources

Updated: 2026-10-14

Reviewed: 10/23/2026 · by piero.avolio · rev. 1 · Period: → 2027-10-31

No questions in the community · Ask the community