Validate national identification numbers (TCKN, DNI, PESEL, CPF, SSN* ) with checksum/format rules.
TypeScript types included. Zero dependency. Lightweight.
*SSN is format-only (no issuance database checks).
- ✅ TR – TCKN: official checksum rules (10th & 11th digits)
- ✅ ES – DNI: checksum letter (
"TRWAGMYFPDXBNJZSQVHLCKE"[num % 23]) - ✅ PL – PESEL: checksum with weights
[1,3,7,9,1,3,7,9,1,3](rejects letters; allows spaces/hyphens) - ✅ BR – CPF: two-stage check digits (10..2 then 11..2), rejects repeated-digit sequences
- ✅ US – SSN: format-only validation with blocked ranges (000, 666, 9xx; group=00; serial=0000)
- ✅
isValidNationalID(country, value)convenience switch - 🧪 Test suite with Vitest
- 🧩 Zero dependencies
npm i @tarikkoc/national-id-validation
# yarn add @tarikkoc/national-id-validation
# pnpm add @tarikkoc/national-id-validationconst {
isValidTCKN,
isValidDNI,
isValidPESEL,
isValidCPF,
isValidSSN,
} = require("@tarikkoc/national-id-validation");
console.log(isValidTCKN("10000000146")); // true
console.log(isValidDNI("12345678Z")); // true
console.log(isValidPESEL("44051401458")); // true
console.log(isValidCPF("529.982.247-25")); // true
console.log(isValidSSN("123-45-6789")); // true (format-only)import {
isValidTCKN,
isValidDNI,
isValidPESEL,
isValidCPF,
isValidSSN,
} from "@tarikkoc/national-id-validation";
const ok = isValidTCKN("12345678Z"); // boolean-
isValidTCKN(tckn: string): boolean
11 digits; first digit must not be 0; 10th & 11th digits are checksums. -
isValidDNI(dni: string): boolean
NNNNNNNN-L(letter ="TRWAGMYFPDXBNJZSQVHLCKE"[num % 23]). Tolerates-and whitespace. -
isValidPESEL(pesel: string): boolean
11 digits; check digit with weights[1,3,7,9,1,3,7,9,1,3]. Rejects non-digit chars (spaces/hyphens ignored). -
isValidCPF(cpf: string): boolean
11 digits; two-stage check digits (10..2, then 11..2). Rejects repeated-digit sequences; dots/hyphens ignored. -
isValidSSN(ssn: string): boolean(format-only)
AcceptsAAA-GG-SSSSor 9 digits; rejects blocked ranges (000, 666, 9xx; group=00; serial=0000).
Disclaimer: This library validates format and checksum rules only. It does not confirm issuance/assignment by any authority.
- Package renamed:
@tarikkoc/check-tckn-num→@tarikkoc/national-id-validation - New validators: ES (DNI), PL (PESEL), BR (CPF), US (SSN format)
- No breaking change for TCKN users — keep using
isValidTCKN
- import { isValidTCKN } from "@tarikkoc/check-tckn-num";
+ import { isValidTCKN } from "@tarikkoc/national-id-validation";(Optional) Deprecate the old package on npm:
npm deprecate @tarikkoc/check-tckn-num@"<1.1.0" "Renamed to @tarikkoc/national-id-validation"ISC © Tarik Koc