everifica.ro

Ghid oficial · 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ă Fără cont · fără cookies terțe Gratuit

🔒 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 este un pas rutinier 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 validare input în 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 este date 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 țintă pentru breach-uri
  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 niciun request.

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
9Stră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 fabricat artificial 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 Judeteană / SPV.
  • Valabilitatea legală. Deși rar, CNP-uri pot fi anulate (erori administrative, schimbare de identitate). Doar evidența populației știe statusul curent.

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 non-cifrele.
  • Confuzie 0 / O sau 1 / l — CNP-ul conține doar cifre; dacă ai „O” mare sau „l” mic, e greșit.
  • Inversare de cifre — 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 fabricat pentru demonstrație. În realitate, dacă ai tastat corect un CNP existent, restul dă o valoare care coincide cu ultima cifră. Dacă nu, ai o greșeală de tastare.

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

CodJudețCodJudețCodJudeț
01Alba17Brăila33Suceava
02Arad18Buzău34Teleorman
03Argeș19Caraș-Severin35Timiș
04Bacău20Cluj36Tulcea
05Bihor21Constanța37Vaslui
06Bistrița-Năsăud22Covasna38Vâlcea
07Botoșani23Dâmbovița39Vrancea
08Brașov24Dolj40București (gen.)
09București (vechi)25Galați41București S1
10Buzău (istoric)26Gorj42București S2
11Caraș-Severin (ist.)27Harghita43București S3
12Cluj (istoric)28Hunedoara44București S4
13Constanța (istoric)29Ialomița45București S5
14Covasna (istoric)30Iași46București S6
15Dâmbovița (istoric)31Maramureș47Călărași
16Dolj (istoric)32Mehedinți48Giurgiu
51-52Coduri speciale

Codurile 09-16 sunt istorice (emise înainte de 1979) și apar rar azi. 51-52 au fost folosite pentru cetățeni străini sau situații administrative particulare.

Ce faci dacă întâmpini o problemă

  1. CNP-ul tastat nu validează — verifică dublu cifră cu cifră. MOD 11 detectează majoritatea erorilor, dar cea mai frecventă cauză e o cifră lipsă sau dublă. Copiază-paste direct din document oficial în loc de tastare manuală.
  2. Data din CNP e imposibilă (ex: 31 februarie) — CNP-ul are eroare la emitere sau a fost fabricat. Î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ă tabela de mai sus. Codurile 09-16 sunt istorice, 51-52 speciale; orice altceva înseamnă 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. Validare aparent corectă dar persoana spune că e greșit — algoritmul MOD 11 nu ia în considerare existența reală a titularului. Un CNP poate fi matematic valid dar să nu corespundă nimănui (fabricat) sau să fie al altei persoane (transpoziție de cifre care produce tot un număr valid). Confirmarea fizică cu CI rămâne unica soluție definitivă.
  6. Ai nevoie de verificare oficială a existenței CNP-ului — validarea locală nu poate face asta. Solicită persoanei fizice să-ți arate cartea de identitate sau confirmă prin verificarea calității de asigurat pe siui.casan.ro, care întoarce rezultat doar dacă CNP-ul există în evidența CNAS.

Alternative și verificări complementare

  • Validatoare open-source JavaScriptiulianu/cnp, aciobanitei/js-romanian-cnp-validation — pentru dezvoltatori care vor să integreze logică identică în propria aplicație.
  • Verificare CNASverificare-asigurat-cnas este cea mai apropiată dovadă publică de existență a 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ă duplicate și inconsistente; e verificare oficială.
  • Verificare identitate cu act fizic — pentru contract de muncă, credit, contracte notariale: obligatoriu CI fizică originală.
  • Validare dată împotriva vârstei declarate — simplu cross-check: 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 introducere î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, validare client-side îmbunătățește UX-ul și reduce apelurile back-end eșuate.
  • La cross-check împotriva altor date — vârstă, județ de emitere, gen: dacă CNP-ul spune altceva decât declarațiile persoanei, ai un indicator de atenție.
  • În audit de date — la curățarea unei baze de date cu CNP-uri, rularea validării în batch identifică înregistrările corupte înainte de o migrare.
  • Înainte de raportări GDPR — știind ce CNP-uri sunt valide în baza ta te ajută la inventarul de date 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 curentă, 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ă algoritmul trece.

FAQ

Întrebări frecvente

Nu ai găsit răspunsul? Scrie-ne și evaluăm adăugarea ghidului.

contact@everifica.ro
Cum funcționează algoritmul de validare CNP?
CNP-ul are 13 cifre: S (gen/secol) AA (an) LL (lună) ZZ (zi) JJ (județ) NNN (ordinal) C (checksum). Cifra 13 este verificată prin MOD 11: se înmulțesc primele 12 cifre cu secvența 2-7-9-1-4-6-3-5-8-2-7-9, se adună, se ia modulo 11; dacă rezultatul e 10, cifra de control este 1, altfel rezultatul însuși.
Ce înseamnă prima cifră (S) din CNP?
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).
Datele mele sunt trimise undeva?
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 se face niciun request când apeși Validează.
Dacă validarea trece, persoana există sigur?
Nu. Un CNP valid structural și cu checksum corect poate fi totuși fabricat artificial. Doar registrele oficiale (RNEP / evidența populației) pot confirma existența reală a titularului. Validarea locală verifică doar că CNP-ul respectă algoritmul.
Care sunt codurile de județ pentru București?
40 = București (general), 41 = Sector 1, 42 = Sector 2, 43 = Sector 3, 44 = Sector 4, 45 = Sector 5, 46 = Sector 6. Alte coduri speciale: 47 Călărași, 48 Giurgiu, 51-52 coduri istorice (rare).
Pot valida CNP-ul meu aici fără riscuri?
Da. Instrumentul nu scrie în localStorage, nu trimite analitice despre input și nu face niciun request către niciun server. Dacă vrei siguranță 100%, deschide DevTools → Network înainte să apeși Validează — nu vei vedea nicio cerere.