npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

codice-fiscale-it

v1.0.1

Published

Calcolo, decodifica e verifica del codice fiscale italiano. Algoritmo ufficiale DM 23/12/1976, archivio completo dei comuni e degli stati esteri, zero dipendenze.

Readme

codice-fiscale-it

Calcolo, decodifica e verifica del codice fiscale italiano. Algoritmo ufficiale del DM 23/12/1976, archivio completo dei comuni (anche soppressi) e degli stati esteri, zero dipendenze, TypeScript.

npm license

Installazione

npm install codice-fiscale-it

Uso

import {
  calcolaDaComune,
  verificaCodiceFiscale,
  decodificaCodiceFiscale,
} from 'codice-fiscale-it';

// Calcolo dal nome del comune
calcolaDaComune({
  cognome: 'Rossi',
  nome: 'Mario',
  sesso: 'M',
  giorno: 1,
  mese: 1,
  anno: 1980,
  comune: 'Roma',
});
// => 'RSSMRA80A01H501U'

// Verifica formale (struttura + carattere di controllo)
verificaCodiceFiscale('RSSMRA80A01H501U'); // => true

// Decodifica: cosa dice il codice
decodificaCodiceFiscale('RSSMRA80A01H501U', 2026);
// => {
//   sesso: 'M', giorno: 1, mese: 1, annoStimato: 1980,
//   belfiore: 'H501', omocodia: false, controlloValido: true, ...
// }

Omocodia

Quando due persone genererebbero lo stesso codice, l'Agenzia delle Entrate sostituisce le cifre con lettere (0L, 1M, ... 9V) partendo da destra. La libreria riconosce la sostituzione, ricostruisce il codice base e valida il carattere di controllo sul codice reale.

const d = decodificaCodiceFiscale('RSSMRA80A0MH501P', 2026);
d.omocodia;        // => true
d.giorno;          // => 1  (dal codice normalizzato)
d.controlloValido; // => true

Nati all'estero

Per chi è nato fuori dall'Italia si usa il codice dello stato, che inizia per Z. Basta passare il nome del paese:

calcolaDaComune({ /* ... */ comune: 'Francia' }); // usa Z110

Nomi con caratteri non italiani

Accenti, apostrofi e lettere latine estese vengono gestiti: Đ e Ð diventano D, Ł diventa L, Ø diventa O, ß diventa SS, Æ diventa AE. Senza queste sostituzioni quei caratteri verrebbero cancellati e il codice uscirebbe sbagliato.

calcolaDaComune({ cognome: 'Nikolic', nome: 'Đorđe', /* ... */ });
// il nome contribuisce con DRD, non con le sole lettere sopravvissute

Archivio comuni

import { cercaComune, comuneDaBelfiore, suggerisciComuni } from 'codice-fiscale-it';

cercaComune('Roma');            // => ['H501', 'RM', 'ROMA', 1]
cercaComune('forlì');           // accenti e apostrofi ignorati
cercaComune('Peschiera', 'VR'); // provincia per disambiguare gli omonimi
comuneDaBelfiore('F205');       // => ['F205', 'MI', 'MILANO', 1]
suggerisciComuni('PESCA', 5);   // per autocomplete

Ogni voce è [codice Belfiore, sigla provincia, nome, attivo], dove attivo vale 1 per i comuni esistenti e 0 per quelli soppressi (servono per chi è nato in un comune che oggi non esiste più).

API

| Funzione | Cosa fa | |---|---| | calcolaDaComune(input) | Codice fiscale dal nome del comune. null se il comune non esiste | | calcolaCodiceFiscale(input) | Come sopra, ma con il codice Belfiore già noto | | verificaCodiceFiscale(cf) | true se struttura e carattere di controllo sono corretti | | decodificaCodiceFiscale(cf, anno) | Estrae data, sesso, luogo; gestisce le omocodie | | carattereControllo(primi15) | Il sedicesimo carattere dai primi quindici | | cercaComune(nome, provincia?) | Voce dell'archivio per nome | | comuneDaBelfiore(codice) | Voce dell'archivio per codice catastale | | suggerisciComuni(prefisso, limite?) | Voci attive che iniziano per prefisso |

Note

  • Il codice calcolato coincide con quello ufficiale tranne nei casi di omocodia, dove la variante la assegna solo l'Agenzia delle Entrate: fa fede la tessera sanitaria.
  • Il secolo di nascita non è ricavabile con certezza dal codice (l'anno ha due cifre): annoStimato usa l'anno corrente come pivot.
  • La verifica è formale: dice che il codice è ben formato, non che appartenga a una persona esistente.

Perché esiste

Nata dal motore di quantomispetta.it, calcolatori fiscali italiani che mostrano il procedimento passo per passo. Estratta come libreria a sé perché l'algoritmo serviva pulito, tipizzato e senza dipendenze.

Licenza

MIT