Vai al contenuto
codicefiscaleinverso

Codice fiscale per sviluppatori

Aggiornato il 30 luglio 2026

Validare un codice fiscale non si riduce a una regex: la forma non dice nulla sulla validità, il carattere di controllo si calcola con due tabelle diverse a seconda della posizione, e un codice regolarissimo può contenere lettere dove ti aspetti delle cifre. Qui trovi l’algoritmo completo in quattro forme, i vettori di prova e i codici catastali dei comuni in JSON. Tutto il codice pubblicato è stato eseguito e confrontato con l’implementazione che gira su questo sito.

Tre cose che quasi tutte le implementazioni sbagliano

1. L’omocodia: lettere dove dovrebbero esserci cifre

Quando due persone genererebbero lo stesso codice, l’Agenzia delle Entrate sostituisce una o più cifre con lettere, partendo da destra. Lo schema [A-Z]{6}[0-9]{2}[A-Z][0-9]{2}[A-Z][0-9]{3}[A-Z] rifiuta questi codici, che sono invece pienamente validi. Come funziona l’omocodia

2. Il carattere di controllo usa due tabelle, non una

Le posizioni dispari e quelle pari hanno valori diversi per lo stesso carattere: la A vale 1 in posizione dispari e 0 in posizione pari. Chi ne implementa una sola ottiene un risultato sbagliato in circa venticinque casi su ventisei. Il calcolo passo per passo

3. I codici catastali non sono un insieme chiuso

I comuni vengono soppressi e fusi, ma i loro codici restano validi nei codici fiscali già attribuiti. Chi confronta il codice catastale con l’elenco dei comuni attualmente esistenti finisce per rifiutare chi è nato in un comune poi accorpato. Vanno inoltre ammessi i codici che iniziano per Z, riservati agli Stati esteri. I codici Belfiore

Le implementazioni

Vettori di prova

I primi tre sono i vettori pubblicati più citati per il carattere di controllo; gli ultimi due coprono il calcolo diretto e l’omocodia. Ogni implementazione di queste pagine li riproduce tutti.

Codice fiscaleChe cosa esercita
MRTMTT25D09F205Zmaschile, Milano (F205)
FOXDRA26C24H872Ymaschile, Sangiano in provincia di Varese (H872)
MLLSNT82P65Z404Ufemminile (giorno 65 = 25 + 40), nato all’estero (Z404)
RSSMRA85M01H501QRossi Mario, 1° agosto, Roma (H501)
RSSMRA85M01H5LMTlo stesso codice in variante omocodica di secondo livello

Ti serve un codice sintetico da usare in un ambiente di collaudo? Codici fiscali di prova.

I dati dei comuni, in JSON

Sono i due file che questo sito serve al proprio decoder. Sono statici, senza autenticazione e senza limiti di chiamata: puoi scaricarli, includerli in un progetto o interrogarli direttamente. Derivano dall’elenco ufficiale ISTAT delle unità amministrative territoriali e coprono tutti i 7.896 comuni italiani.

Un avvertimento che ti risparmia un’ora di debug: contengono i comuni italiani e soltanto quelli. I codici che iniziano per Z, attribuiti agli Stati esteri, non ci sono, e nemmeno i codici dei comuni soppressi. Una ricerca che non trova la chiave non significa quindi che il codice sia sbagliato.

/comuni-lookup.json374 KB · 10.533 voci

Oggetto piatto: chiave il codice catastale di quattro caratteri, valore una stringa con i campi separati da |. Tre campi per una voce attiva, sei per un comune soppresso. Copre 7.896 comuni attivi, 197 Stati esteri e 2.440 comuni soppressi, così che anche un codice letto da un codice fiscale d’epoca si risolva in un nome.

{
  "A001": "Abano Terme|PD|abano-terme",
  "H501": "Roma|RM|roma",
  "Z404": "Stati Uniti d'America||stati-uniti-d-america",
  "D583": "Figline Valdarno|FI||S|2014|M321"
}

Le prime due voci sono comuni attivi, la terza uno Stato estero (nessuna sigla di provincia), la quarta un comune soppresso nel 2014 e confluito in M321. I successori sono a loro volta codici catastali, risolvibili nello stesso file senza una seconda richiesta.

/comuni-index.json359 KB · 7.896 righe

Formato tabellare compatto per la ricerca. I nomi delle regioni sono raccolti una sola volta in r e referenziati per indice; ogni riga di c è [codice, nome, slug, sigla, indiceRegione, capoluogo, popolazione], dove l’ultimo campo vale 1 per i capoluoghi di provincia.

{
  "r": ["Abruzzo", "Basilicata", "Calabria", "…", "Veneto"],
  "c": [
    ["A001", "Abano Terme", "abano-terme", "PD", 19, 0, 20479],
    ["F205", "Milano", "milano", "MI", 8, 1, 1362863]
  ]
}

I due file sono rigenerati dal tracciato ISTAT e la generazione del sito si interrompe se il tracciato cambia, se un codice è malformato o se il conteggio delle righe scende sotto una soglia di sicurezza. Restano comunque un dato derivato: per usi in cui la fonte conta, parti dall’originale. Fonti e metodo

Domande frequenti

Approfondisci

Avvertenza

Questo strumento decodifica la struttura formale di un codice fiscale e ne verifica il carattere di controllo. Non conferma che il codice sia stato effettivamente attribuito a una persona: quella verifica è possibile solo attraverso il servizio ufficiale dell’Agenzia delle Entrate. Fonti e metodo