How accurate are we?
Every night we compare the forecasts we gave with what 690 weather stations in 108 Italian cities actually measured. These are the results for the last 14 days (updated October 30, 2026). No forecast is perfect: here is how far off we are, with nothing hidden.
At a glance
Today
±1.0° average temperature error
96 times out of 100 we get rain or no rain right
Tomorrow
±1.1° average temperature error
95 times out of 100 we get rain or no rain right
In 3 to 5 days
±1.3° average temperature error
90 times out of 100 we get rain or no rain right
MeteoNonna and the individual models
MeteoNonna is not a model: it combines the models of the major weather centres and gives more weight, city by city, to the ones that make fewer mistakes. Here is how it compares with each of them for tomorrow's forecast.
| Model | Average temperature error | Rain hit rate |
|---|---|---|
| MeteoNonna | ±1.1° | 95% |
| DWD ICON-D2 | ±1.2° | 93% |
| ItaliaMeteo ICON-2I | ±1.2° | 94% |
| MeteoSwiss ICON-CH2 | ±1.3° | 94% |
| ECMWF IFS | ±1.4° | 90% |
| ECMWF AIFS | ±1.4° | 88% |
| Météo-France AROME | ±1.4° | 93% |
| NOAA GFS | ±1.6° | 92% |
City by city
Average temperature error and rain hit rate for today's forecast.
| City | Stations | Average temperature error | Rain hit rate |
|---|---|---|---|
| Agrigento | 5 | ±0.9° | 99% |
| Alessandria | 5 | ±1.4° | 95% |
| Ancona | 6 | ±0.7° | 98% |
| Aosta | 1 | ±2.0° | 92% |
| Arezzo | 6 | ±0.9° | 95% |
| Ascoli Piceno | 1 | ±1.5° | – |
| Asti | 5 | ±1.0° | – |
| Avellino | 6 | ±1.8° | – |
| Bari | 5 | ±0.6° | 96% |
| Barletta | 4 | ±0.8° | 96% |
| Belluno | 3 | ±1.2° | 96% |
| Benevento | 4 | ±1.1° | 96% |
| Bergamo | 5 | ±0.7° | 96% |
| Biella | 1 | ±1.0° | – |
| Bologna | 20 | ±0.9° | 99% |
| Bolzano | 2 | ±2.3° | 97% |
| Brescia | 4 | ±1.0° | 95% |
| Brindisi | 4 | ±0.6° | 95% |
| Cagliari | 2 | ±0.6° | 98% |
| Caltanissetta | 3 | ±0.9° | 99% |
| Campobasso | 3 | ±1.2° | 97% |
| Carbonia | 1 | ±1.2° | – |
| Caserta | 4 | ±1.1° | 94% |
| Catania | 4 | ±0.7° | 98% |
| Catanzaro | 2 | ±1.3° | – |
| Cervesina (San Gaudenzio) | 2 | ±0.7° | 92% |
| Cesena | 12 | ±0.6° | 99% |
| Chieti | 1 | ±1.2° | 95% |
| Como | 4 | ±1.3° | 88% |
| Cosenza | 10 | ±0.8° | 95% |
| Cremona | 4 | ±1.0° | 95% |
| Crotone | 3 | ±0.8° | – |
| Cuneo | 3 | ±0.7° | – |
| Enna | 1 | ±1.0° | – |
| Fermo | 1 | ±0.8° | – |
| Ferrara | 16 | ±1.1° | 98% |
| Florence | 12 | ±0.8° | 93% |
| Foggia | 6 | ±0.6° | 95% |
| Forlì | 10 | ±0.7° | 99% |
| Frosinone | 11 | ±1.3° | 98% |
| Genoa | 13 | ±0.8° | 94% |
| Gorizia | 5 | ±0.9° | 94% |
| Grosseto | 5 | ±1.1° | – |
| Imperia | 3 | ±0.9° | – |
| Isernia | 3 | ±1.3° | 98% |
| L'Aquila | 2 | ±1.9° | 95% |
| La Spezia | 11 | ±1.8° | 94% |
| Latina | 7 | ±1.1° | 96% |
| Lecce | 6 | ±0.5° | 95% |
| Lecco | 2 | ±2.1° | 91% |
| Livorno | 8 | ±1.1° | 92% |
| Lodi | 6 | ±0.7° | 97% |
| Lucca | 16 | ±0.8° | 94% |
| Macerata | 2 | ±1.0° | 98% |
| Mantua | 5 | ±0.9° | 97% |
| Massa | 12 | ±0.9° | 96% |
| Matera | 2 | ±0.9° | – |
| Messina | 11 | ±0.8° | 95% |
| Milan | 15 | ±0.7° | 91% |
| Modena | 9 | ±1.1° | 98% |
| Monza | 24 | ±0.8° | 94% |
| Naples | 8 | ±1.4° | 96% |
| Novara | 5 | ±0.7° | 90% |
| Oristano | 2 | ±0.9° | 96% |
| Padua | 22 | ±0.7° | 96% |
| Palermo | 12 | ±0.7° | 94% |
| Parma | 6 | ±0.6° | 98% |
| Pavia | 1 | ±0.8° | – |
| Perugia | 2 | ±1.4° | – |
| Pesaro | 6 | ±1.1° | 99% |
| Piacenza | 5 | ±0.7° | 97% |
| Pisa | 17 | ±0.8° | 95% |
| Pistoia | 10 | ±1.1° | 95% |
| Pordenone | 9 | ±1.2° | 96% |
| Potenza | 3 | ±1.0° | – |
| Prato | 20 | ±1.6° | 94% |
| Ragusa | 4 | ±0.6° | – |
| Ravenna | 4 | ±0.9° | 99% |
| Reggio Calabria | 2 | ±0.9° | – |
| Reggio Emilia | 5 | ±0.9° | 97% |
| Rieti | 4 | ±1.3° | – |
| Rimini | 13 | ±0.8° | 99% |
| Rome | 33 | ±0.5° | 96% |
| Rovigo | 1 | ±0.9° | – |
| Salerno | 13 | ±1.0° | 94% |
| Sanluri | 2 | ±0.6° | – |
| Sassari | 3 | ±1.5° | – |
| Savona | 6 | ±1.7° | 89% |
| Siena | 6 | ±0.7° | 96% |
| Syracuse | 3 | ±1.7° | – |
| Sondrio | 5 | ±2.8° | 98% |
| Taranto | 6 | ±0.6° | 94% |
| Teramo | 1 | ±0.9° | 96% |
| Terni | 4 | ±0.7° | 99% |
| Turin | 9 | ±0.6° | 97% |
| Trapani | 4 | ±2.0° | – |
| Trento | 11 | ±1.4° | 96% |
| Treviso | 9 | ±1.0° | 96% |
| Trieste | 8 | ±1.0° | 96% |
| Udine | 17 | ±1.0° | 93% |
| Varese | 11 | ±1.0° | 93% |
| Venice | 4 | ±1.3° | 96% |
| Verbania | 3 | ±1.1° | – |
| Vercelli | 2 | ±1.1° | – |
| Verona | 4 | ±0.7° | 95% |
| Vibo Valentia | 3 | ±0.6° | – |
| Vicenza | 12 | ±0.8° | 97% |
| Viterbo | 6 | ±0.5° | 96% |
How we measure it
Every hour we compare the forecast temperature with the one measured by the nearest stations (within a few kilometres of the city). The average error is the mean of the differences in degrees, ignoring the sign: 1.2° means the forecast was off by just over a degree on average, up or down.
For rain we check every hour whether we had forecast rain (at least 0.2 mm) and whether it actually rained. The rain hit rate is the share of hours in which we were right, both when it rained and when it didn't.
The stations belong to public and amateur networks that share their data. The forecasts are the ones MeteoNonna was showing at the time, not recalculated afterwards.