Fra Nav · Den stille standarden

fnrvalidator

Ett lite bibliotek. Elleve siffer. Ett svar — gyldig eller ikke, med begrunnelse.

Er de elleve sifrene et ekte fødselsnummer, d-nummer, h-nummer eller et testnummer? fnrvalidator regner ut kontrollsifrene og sjekker datodelen for deg. Under 100 kodelinjer, ingen avhengigheter — og likevel i tusenvis av tjenester hver måned.

TypeScript·MIT-lisens·@navikt/fnrvalidator

Prøv den her

Taster du inn et nummer, får du svaret med det samme.

Alt regnes ut i nettleseren din. Ingenting sendes noe sted — siden er statisk og gjør ingen nettverkskall.

Bruk syntetiske testnumre — aldri en ekte persons nummer:

Eksemplene er autogenererte. Trenger du flere, hent dem fra Tenor testdata hos Skatteetaten.

Den stille rekkevidden

20 stjerner — og 42 659 nedlastinger i måneden.

Et bibliotek de fleste aldri legger merke til, men som stille sjekker identitetsnumre i søknadsskjemaer og saksbehandlingssystemer over hele landet.

Hva den sjekker

Norske identitetsnumre er elleve siffer med innebygde kontrollsifre og en dato skjult i de seks første. fnrvalidator kjenner igjen fire varianter — og kombinasjonene mellom dem.

Fødselsnummerfnr
Det vanlige nummeret. De seks første sifrene er fødselsdato (DDMMÅÅ), de to siste er kontrollsifre.
D-nummerdnr
For personer med midlertidig tilknytning til Norge. Første siffer er lagt til 4 — validatoren trekker det fra før datoen sjekkes.
H-nummerhnr
Hjelpenummer brukt internt i helsevesenet. Tredje siffer er lagt til 4.
Testnummertnr
Syntetiske numre fra Test Norge (Tenor). Tredje siffer er lagt til 8 — slik at et testnummer aldri kolliderer med en ekte person.

I tillegg gjenkjennes kombinasjonene dnr-and-hnr og dnr-and-tnr når sifrene tilsier begge deler. For hvert nummer sjekkes to ting: at kontrollsifrene (mod 11) stemmer, og at de seks første sifrene gir en gyldig dato.

Ta den i bruk

Pakken finnes på npm. Ett kall, ett svar-objekt — ingen oppsett, ingen konfigurasjon.

Installer
$ npm install @navikt/fnrvalidator
Bruk
import { idnr } from '@navikt/fnrvalidator'

const res = idnr('10915596784')
// { status: 'valid', type: 'tnr' }
// ellers: { status: 'invalid', reasons: [...] }

Egne funksjoner finnes også per type — fnr(), dnr(), hnr(), tnr() og dnrAndHnr() — men idnr() kjenner igjen typen selv.

Fritt å gjenbruke

Brukt langt utenfor forvaltningen

fnrvalidator er MIT-lisensiert og har ingen bindinger til Nav-spesifikk infrastruktur. Reglene for norske identitetsnumre er de samme uansett hvem som sjekker dem. Norges domstoler, Vestfold fylkeskommune og Gi Effektivt validerer med den — og DNB har bygd den inn i designsystemet sitt Eufemia, så den følger med på kjøpet der.

Vi lover ingen support-SLA, men issues og pull requests er velkomne. Bruker du det i din tjeneste? Si gjerne fra — det er slik vi ser at det åpne arbeidet virker.