everifica.ro

Ghid independent · sursă: gov.ro

Verificare CNP Online 2026 · Validator Gratuit, 100% Privat

Validează orice CNP: checksum MOD 11, structură, județ emitere, data nașterii. Rulează local în browser, CNP-ul nu este trimis pe niciun server.

~30 de secunde Date direct de la sursă Nu ai nevoie de cont Gratuit

TL;DR

Introdu CNP-ul (13 cifre) în câmpul de mai jos. Instrumentul verifică exclusiv în browserul tău structura, data nașterii și checksum-ul MOD 11 — CNP-ul nu pleacă niciodată spre vreun server. Un CNP valid structural nu garantează însă că persoana cu acel CNP există.

Validarea se face exclusiv în browserul tău. CNP-ul nu este trimis pe niciun server. Algoritmul rulează local.

De ce validezi un CNP

Validarea CNP-ului e un pas de rutină pentru:

  • Angajatori care verifică formularele de HR înainte de a le introduce în REVISAL
  • Contabili care procesează declarații și fișe fiscale
  • Dezvoltatori de software care scriu validarea câmpurilor din formulare web
  • Persoane fizice care vor să confirme că au copiat corect CNP-ul într-un formular important

Într-un minut, validarea locală confirmă: formatul (13 cifre), structura (gen, dată, județ) și că checksum-ul MOD 11 trece — adică CNP-ul a fost introdus corect, fără greșeli de tastare.

De ce NU trimitem CNP-ul pe server

CNP-ul face parte din datele cu caracter personal (PII) în sensul GDPR. Trimiterea lui către un server terț pentru „validare” este:

  1. Inutilă — algoritmul MOD 11 este public și se poate rula în browser în milisecunde
  2. Riscantă — orice serviciu care primește CNP-uri devine o țintă pentru scurgeri de date
  3. Problematică legal — creează obligații GDPR (log-uri, ștergere, consimțământ)

Soluția corectă, aplicată aici: JavaScript client-side. Codul de validare rulează integral în browserul tău. Nu există backend, nu există bază de date, nu există log-uri. Poți verifica singur în DevTools → Network: apasă Validează și nu vei vedea nicio cerere.

Structura unui CNP

PozițieLungimeConținutExemplu
11Gen și secol (S)2 (femeie 1900-1999)
2-32An naștere (AA)85
4-52Lună (LL)03
6-72Zi (ZZ)14
8-92Cod județ (JJ)41 (București Sector 1)
10-123Ordinal secvențial048
131Checksum MOD 117

Cifra de gen / secol (S)

SGenSecol
1M1900-1999
2F1900-1999
3M1800-1899
4F1800-1899
5M2000-2099
6F2000-2099
7MStrăin rezident
8FStrăin rezident
9—Străin (non-rezident)

Algoritmul de checksum

Se aplică secvența de ponderi 2, 7, 9, 1, 4, 6, 3, 5, 8, 2, 7, 9 asupra primelor 12 cifre:

suma = 2·d1 + 7·d2 + 9·d3 + 1·d4 + 4·d5 + 6·d6
     + 3·d7 + 5·d8 + 8·d9 + 2·d10 + 7·d11 + 9·d12

rest = suma mod 11

cifra_control = (rest == 10) ? 1 : rest

Dacă cifra_control corespunde cu a 13-a cifră din CNP, checksum-ul este valid.

Ce NU confirmă validarea

  • Existența titularului. Un CNP valid structural poate fi inventat, cu orice combinație de dată, județ și ordinal care satisface MOD 11.
  • Identitatea persoanei. Pentru asta e nevoie de actul de identitate fizic sau de o verificare prin Casa Județeană / SPV.
  • Valabilitatea legală. Deși rar, un CNP poate fi anulat (erori administrative, schimbare de identitate). Doar evidența populației cunoaște situația actuală.

Pentru verificări cu consecințe reale (contract de muncă, credit bancar, identificare fiscală) combină validarea locală cu:

  1. Verificarea calității de asigurat CNAS pe verificare-asigurat-cnas — confirmi că persoana este în sistemul de sănătate
  2. Cartea de identitate fizică, verificată în persoană
  3. Verificarea angajatorului prin REVISAL (pentru contracte de muncă)

Cazuri frecvente de erori

  • CNP lipit dintr-un PDF — uneori apar caractere invizibile (U+200B zero-width space). Instrumentul elimină automat tot ce nu e cifră.
  • Confuzie 0 / O sau 1 / l — CNP-ul conține doar cifre; dacă ai „O” mare sau „l” mic, e greșit.
  • Cifre inversate — cea mai frecventă eroare. MOD 11 detectează 98% din erorile simple de tastare.
  • CNP cu 12 sau 14 cifre — format greșit; CNP-ul românesc are exact 13.

Exemplu complet de calcul MOD 11

Luăm CNP-ul 2850314410487 (femeie, născută 14 martie 1985, București Sector 1).

Aplicăm ponderile pe primele 12 cifre:

Cifră285031441048
Pondere279146358279
Produs4564501261220802872

Suma: 4 + 56 + 45 + 0 + 12 + 6 + 12 + 20 + 8 + 0 + 28 + 72 = 263.

Restul împărțirii la 11: 263 mod 11 = 10. Regula specială: când restul e 10, cifra de control devine 1.

Dar CNP-ul nostru are cifra a 13-a 7, nu 1 — deci exemplul e invalid matematic: a fost construit special pentru demonstrație. În realitate, dacă ai tastat corect un CNP existent, cifra de control rezultată coincide cu ultima cifră. Dacă nu, ai o greșeală de tastare.

Codurile de județ (pozițiile 8-9)

CodJudețCodJudețCodJudeț
01Alba17Galați33Suceava
02Arad18Gorj34Teleorman
03Argeș19Harghita35Timiș
04Bacău20Hunedoara36Tulcea
05Bihor21Ialomița37Vaslui
06Bistrița-Năsăud22Iași38Vâlcea
07Botoșani23Ilfov39Vrancea
08Brașov24Maramureș40București
09Brăila25Mehedinți41București S1
10Buzău26Mureș42București S2
11Caraș-Severin27Neamț43București S3
12Cluj28Olt44București S4
13Constanța29Prahova45București S5
14Covasna30Satu Mare46București S6
15Dâmbovița31Sălaj47București S7 (desființat)
16Dolj32Sibiu48București S8 (desființat)
51Călărași
52Giurgiu

Codurile 47 și 48 aparțin fostelor sectoare 7 și 8 ale Bucureștiului (desființate) și apar doar în CNP-uri vechi. Călărași (51) și Giurgiu (52), județe înființate în 1981, au primit coduri în afara ordinii alfabetice.

Ce faci dacă întâmpini o problemă

  1. CNP-ul tastat nu validează — verifică-l din nou, cifră cu cifră. MOD 11 detectează majoritatea erorilor, dar cea mai frecventă cauză e o cifră lipsă sau dublată. Copiază-l direct dintr-un document oficial, în loc să-l tastezi de mână.
  2. Data din CNP e imposibilă (ex: 31 februarie) — fie CNP-ul a fost emis greșit, fie e inventat. În cazuri foarte rare, CNP-uri istorice cu date aparent invalide sunt reale (erori de înregistrare necorectate); confirmă cu persoana în cauză.
  3. Codul de județ nu e recunoscut — verifică tabelul de mai sus. Codurile valide sunt 01–48, 51 și 52; orice altceva (00, 49, 50, peste 52) înseamnă o eroare.
  4. Cifra de gen / secol e neașteptată — dacă tastezi un CNP al unui adult și obții S=5 sau S=6 (născut 2000+), probabil ai o cifră greșită la început. Invers: pentru un copil născut în 2020, S trebuie să fie 5 sau 6, nu 1/2.
  5. Validarea trece, dar persoana spune că CNP-ul e greșit — algoritmul MOD 11 nu ține cont de existența reală a titularului. Un CNP poate fi valid matematic, dar să nu corespundă nimănui (inventat) sau să fie al altei persoane (transpoziție de cifre care produce tot un număr valid). Singura confirmare sigură rămâne verificarea cărții de identitate.
  6. Ai nevoie de verificare oficială a existenței CNP-ului — validarea locală nu poate face asta. Roagă persoana să-ți arate cartea de identitate sau confirmă prin verificarea calității de asigurat pe siui.casan.ro, care afișează un rezultat doar dacă CNP-ul există în evidența CNAS.

Alternative și verificări complementare

  • Validatoare open-source JavaScript — iulianu/cnp, aciobanitei/js-romanian-cnp-validation — pentru dezvoltatori care vor să integreze logică identică în propria aplicație.
  • Verificare CNAS — verificare-asigurat-cnas e cel mai apropiat lucru de o dovadă publică a existenței unui CNP; dacă CNAS returnează informații (statut asigurat), CNP-ul corespunde unei persoane reale.
  • Verificare documente la REVISAL — pentru angajatori, introducerea CNP-ului în REVISAL detectează duplicatele și inconsistențele; e o verificare oficială.
  • Verificare identitate cu act fizic — pentru contract de muncă, credit, contracte notariale: e obligatorie CI originală.
  • Compararea datei cu vârsta declarată — o verificare simplă: data extrasă din CNP trebuie să corespundă cu vârsta/data nașterii declarate de persoană. Discrepanțele indică fie tastare greșită, fie identitate falsă.

Când merită să validezi un CNP

  • La completarea oricărui formular HR / fiscal / bancar — un CNP greșit blochează procesarea; validarea locală prinde eroarea înainte de trimitere.
  • Înainte de introducerea în REVISAL / ReviSal — evită respingerea declarației și timpul pierdut cu corectarea.
  • La colectarea datelor pentru contracte — orice contract semnat cu CNP eronat poate fi contestat ulterior; validarea e o verificare de 5 secunde.
  • Pentru dezvoltatori — în orice formular web care colectează CNP, validarea client-side îmbunătățește UX-ul și reduce apelurile back-end eșuate.
  • La compararea cu alte date — vârstă, județ de emitere, gen: dacă CNP-ul spune altceva decât declarațiile persoanei, ai un indicator de atenție.
  • La un audit de date — când cureți o bază de date cu CNP-uri, validarea în lot identifică înregistrările corupte înainte de o migrare.
  • Înainte de raportări GDPR — dacă știi ce CNP-uri din baza ta sunt valide, îți faci mai ușor inventarul datelor personale protejate.
1

Introdu CNP-ul în câmpul de validare

CNP-ul românesc are exact 13 cifre. Poate fi introdus continuu sau cu spații — instrumentul elimină automat caracterele non-numerice.

2

Apasă Validează CNP

Algoritmul rulează local în browser, fără apel de rețea. Rezultatul apare instant.

3

Citește structura decodată

Vezi genul (M / F / străin), data nașterii, vârsta actuală, județul de emitere și dacă CNP-ul trece verificarea MOD 11.

4

Înțelege ce confirmă și ce NU confirmă

Checksum valid = CNP-ul este matematic corect. NU înseamnă că există o persoană reală cu acel CNP — doar că trece verificarea algoritmului.

FAQ

Întrebări frecvente

Nu ai găsit răspunsul? Scrie-ne și vedem dacă putem adăuga un ghid.

contact@everifica.ro
CNP-ul are 13 cifre: S (gen/secol) AA (an) LL (lună) ZZ (zi) JJ (județ) NNN (ordinal) C (checksum). A 13-a cifră se verifică prin MOD 11: înmulțești primele 12 cifre cu secvența 2-7-9-1-4-6-3-5-8-2-7-9, aduni produsele și împarți suma la 11; dacă restul e 10, cifra de control este 1, altfel este chiar restul.
Codifică genul și secolul: 1 (bărbat 1900-1999), 2 (femeie 1900-1999), 3-4 (1800-1899), 5-6 (2000-2099), 7-8 (străin rezident), 9 (străin).
Nu. Algoritmul este pur matematic și rulează integral în JavaScript în browserul tău. Niciun server — nici al nostru, nici al vreunui terț — nu primește CNP-ul. Poți verifica în DevTools → Network: nu pleacă nicio cerere când apeși Validează.
Nu. Un CNP valid structural și cu checksum corect poate fi totuși inventat. Doar registrele oficiale (RNEP / evidența populației) pot confirma existența reală a titularului. Validarea locală verifică doar că CNP-ul respectă algoritmul.
40 = București (general), 41 = Sector 1, 42 = Sector 2, 43 = Sector 3, 44 = Sector 4, 45 = Sector 5, 46 = Sector 6. 47 și 48 sunt fostele sectoare 7 și 8 (desființate), întâlnite doar în CNP-uri vechi. Codurile 51 și 52 aparțin județelor Călărași și Giurgiu.
Da. Instrumentul nu scrie în localStorage, nu trimite analitice despre input și nu trimite nicio cerere către vreun server. Dacă vrei să fii 100% sigur, deschide DevTools → Network înainte să apeși Validează — nu vei vedea nicio cerere.