This is the table of the codes of the provinces used on Italian normal plates from 1927 to 1995 and that have been in use again since 1999 because people liked them very much. The codes in grey aren't used any more today, but I wanted to keep them in the table as well to make it more complete. Moreover you can find a little number in brackets close to the name of those provinces that changed the code in the past and it points to the corresponding note below.
|Arezzo||Asti (4)||Apuania (5)|
|Caserta (6)||Castrogiovanni (3)||Chieti|
|Cuneo (3)||Catanzaro||Enna (3)|
|Firenze||Fiume (2)||Forlì (8)|
|Imperia||Isernia (6)||Crotone (7)|
|Lodi (7)||Latina (4)||Lucca|
|Mantova||Modena||Massa Carrara (5)|
|Perugia (4)||Pisa||Pola (2)|
|Pordenone (6)||Prato (7)||Parma|
|Pesaro (8)||Pistoia||Pesaro-Urbino (8)|
|Ravenna||Reggio Calabria||Reggio Emilia|
|Viterbo||Vibo Valentia (7)||Zara (2)|
Roma is the only city that has the full name on the plate because it's the capital. But I guess that if it had a longer name, it would have used a two letter combination! Anyway, RM stands for Roma (since RO is Rovigo) and it's used in some special cases (for example, in the repeater plates of the trailers).
At this list you could add codes for cities in Africa, Libya and in Rhodes that belonged to Italy before the Second World War. Indeed you can find in grey the codes of some cities close to the border between Italy and Croatia than now belong to Yugoslavia, but were normal Italian provinces: Fiume (FU before 1930 and FM after 1930), Pola (PL) and Zara (ZA). If you want to see the pictures of these plates that I've found so far, go to the page of disappeared provinces.
In 1927/28 Enna and Agrigento were added, while Castrogiovanni (CG) and Girgenti (GI) were eliminated and included in Enna and Agrigento. It's actually just a change of the name of these two provinces. In the same year Cuneo changed from CU to CN: the old two letters don't sound very nice in Italian!
In 1933 Perugia changed from PU to PG and Latina was added in that same year (at the beginning named Littoria). Two years later, in 1935, Asti was added (some sources say that AS was its first code, but this is wrong).
Caserta was eliminated in 1927 (see the table) and reintroduced in 1945: at that time the numbering started again from 1 following the order of the requests. Pordenone was added in 1967, Isernia in 1970 and Oristano in 1976.
An oddity that Matteo told me: the province of Pordenone was created in 1967 and the code for it was supposed to be PO, but the citizens of Prato, who already dreamed to become independent from Florence, read about this and a member of the town council jumped on the train and went to Pordenone to ask to change the code with PN, that stands for Porto Naonis, the old latin name of the town, otherwise there wouldn't have been another available code for Prato (PR, PA and PT were already in use). This request was accepted and so Prato saved its plates. The province of Oristano started issuing the plates with its code OR in 1976 even if actually it was created in 1974. This delay was probably due to the fact that in 1976 the new plates with orange letters were introduced and so Oristano started directly with those plates.
The provinces of Biella, Crotone, Lodi, Lecco, Prato, Rimini, Verbano-Cusio-Ossola and Vibo Valentia were added in 1992.
In 1999, when the origin code was re-introduced on Italian license plates, Forlì (FO) became FC (Forlì-Cesena) and Pesaro (PS) became PU (Pesaro-Urbino). You can find both the new and the old codes in the table above because it's still possible to see both them on the streets.
In 2001 four new provinces in Sardinia were founded: Olbia-Tempio (main towns Olbia and Tempio Pausania),
Ogliastra (main towns Lanusei and Tortoĺ), Carbonia-Iglesias (main towns Carbonia and Iglesias) and Medio-Campidano
(main town Sanluri). The codes for all these provinces will be respecively OT, OG, CI and MD, and they should be
introduced in 2005.
Moreover, in 2004 three new provinces were officially approved: Monza and Brianza (main town Monza), Fermo and Barletta-Andria-Trani main town Barletta). The codes for them are not known yet, but it seems likely that they will be respectively MZ, FM and BT.