Package Exports
- national-id-numbers
- national-id-numbers/nationalid/alb/identity_number.js
- national-id-numbers/nationalid/ar/national_id.js
- national-id-numbers/nationalid/are/emirates_id.js
- national-id-numbers/nationalid/at/personalausweis.js
- national-id-numbers/nationalid/aus/index.js
- national-id-numbers/nationalid/aus/tfn.js
- national-id-numbers/nationalid/be/national_number.js
- national-id-numbers/nationalid/bg/egn.js
- national-id-numbers/nationalid/bgd/national_id.js
- national-id-numbers/nationalid/bgd/old_national_id.js
- national-id-numbers/nationalid/br/national_id.js
- national-id-numbers/nationalid/ca/social_insurance.js
- national-id-numbers/nationalid/che/ahv.js
- national-id-numbers/nationalid/chl/index.js
- national-id-numbers/nationalid/chl/rut.js
- national-id-numbers/nationalid/chn/resident_id.js
- national-id-numbers/nationalid/col/cedula.js
- national-id-numbers/nationalid/col/index.js
- national-id-numbers/nationalid/constant.js
- national-id-numbers/nationalid/cz/rodne_cislo.js
- national-id-numbers/nationalid/deu/tax_id.js
- national-id-numbers/nationalid/dk/cpr_number.js
- national-id-numbers/nationalid/dz/cin.js
- national-id-numbers/nationalid/egy/national_id.js
- national-id-numbers/nationalid/esp/dni.js
- national-id-numbers/nationalid/est/isikukood.js
- national-id-numbers/nationalid/fi/henkilotunnus.js
- national-id-numbers/nationalid/fra/insee.js
- national-id-numbers/nationalid/gbr/national_insurance.js
- national-id-numbers/nationalid/grc/amka.js
- national-id-numbers/nationalid/hrv/index.js
- national-id-numbers/nationalid/hrv/oib.js
- national-id-numbers/nationalid/hu/szemelyi_szam.js
- national-id-numbers/nationalid/idn/national_id.js
- national-id-numbers/nationalid/ind/national_id.js
- national-id-numbers/nationalid/irl/pps_number.js
- national-id-numbers/nationalid/irn/national_id.js
- national-id-numbers/nationalid/ita/fiscal_code.js
- national-id-numbers/nationalid/jor/national_id.js
- national-id-numbers/nationalid/jpn/my_number.js
- national-id-numbers/nationalid/kor/rrn.js
- national-id-numbers/nationalid/lka/national_id.js
- national-id-numbers/nationalid/lka/old_national_id.js
- national-id-numbers/nationalid/lt/asmens_kodas.js
- national-id-numbers/nationalid/lux/national_number.js
- national-id-numbers/nationalid/lva/personas_kods.js
- national-id-numbers/nationalid/ly/national_id.js
- national-id-numbers/nationalid/ma/cin.js
- national-id-numbers/nationalid/mex/curp.js
- national-id-numbers/nationalid/mlt/id_card_number.js
- national-id-numbers/nationalid/mys/nric.js
- national-id-numbers/nationalid/nga/national_id.js
- national-id-numbers/nationalid/nl/bsn.js
- national-id-numbers/nationalid/no/fodselsnummer.js
- national-id-numbers/nationalid/npl/national_id.js
- national-id-numbers/nationalid/nzl/ird_number.js
- national-id-numbers/nationalid/pak/national_id.js
- national-id-numbers/nationalid/phl/phil_id.js
- national-id-numbers/nationalid/pl/pesel.js
- national-id-numbers/nationalid/prt/nic.js
- national-id-numbers/nationalid/ro/cnp.js
- national-id-numbers/nationalid/rus/snils.js
- national-id-numbers/nationalid/sau/national_id.js
- national-id-numbers/nationalid/se/personnummer.js
- national-id-numbers/nationalid/sgp/nric.js
- national-id-numbers/nationalid/sk/rodne_cislo.js
- national-id-numbers/nationalid/tha/national_id.js
- national-id-numbers/nationalid/tn/cin.js
- national-id-numbers/nationalid/tur/national_id.js
- national-id-numbers/nationalid/twn/national_id.js
- national-id-numbers/nationalid/usa/social_security.js
- national-id-numbers/nationalid/util.js
- national-id-numbers/nationalid/vnm/national_id.js
Readme
๐ National ID Numbers
A comprehensive collection of validators and parsers for national identification numbers from around the world. Validate, parse, and extract information from ID numbers with ease.
โจ Features
- ๐ 66 Countries Supported - Comprehensive coverage across 6 continents
- ๐ Smart Validation - Advanced algorithms including Luhn, Modulo 11, and custom checksums
- ๐ Data Extraction - Parse birth dates, gender, regions, and more from ID numbers
- ๐ Zero Dependencies - Lightweight and fast with no external dependencies
- ๐ฑ Universal Support - Works in Node.js, browsers, and modern JavaScript environments
- ๐ก๏ธ Type Safe - Full TypeScript support with comprehensive type definitions
- โ Well Tested - 131+ tests ensuring reliability and accuracy
- ๐ Well Documented - Comprehensive documentation and examples
๐ Quick Start
Installation
npm install national-id-numbersBasic Usage
import { NationalID } from 'national-id-numbers';
// Validate any national ID
const isValid = NationalID.validate('EG', '29001010100015'); // true
// Parse and extract information
const info = NationalID.parse('EG', '29001010100015');
console.log(info);
// {
// yyyymmdd: Date object,
// governorate: '01',
// sn: '0001',
// gender: 'MALE',
// checksum: 5
// }Country-Specific Usage
import { EGY, USA, CA } from 'national-id-numbers';
// Egyptian National ID
EGY.NationalID.validate('29001010100015'); // true
const egyptInfo = EGY.NationalID.parse('29001010100015');
// US Social Security Number
USA.SocialSecurityNumber.validate('123-45-6789'); // true
// Canadian Social Insurance Number
CA.SocialInsuranceNumber.validate('130-692-544'); // true
const canadaInfo = CA.SocialInsuranceNumber.parse('130-692-544');
// { area: '130', group: '692', serial: '544', gender: 'UNKNOWN' }๐ Supported Countries
๐ช๐บ Europe (34 countries)
| Country | Code | ID Type | Format | Example | Features |
|---|---|---|---|---|---|
| ๐ฆ๐ฑ Albania | AL | Identity Number | 13 digits | 1234567890123 |
โ Validation |
| ๐ฆ๐น Austria | AT | Personalausweis | 10 digits | 1234567890 |
โ Parse + Validation |
| ๐ง๐ช Belgium | BE | National Number | 11 digits | 12345678901 |
โ Parse + Validation |
| ๐ง๐ฌ Bulgaria | BG | EGN | 10 digits | 1234567890 |
โ Parse + Validation |
| ๐ฉ๐ฐ Denmark | DK | CPR Number | 10 digits | 123456-7890 |
โ Parse + Validation |
| ๐ซ๐ฎ Finland | FI | Henkilรถtunnus | 11 chars | 123456-789A |
โ Parse + Validation |
| ๐ณ๐ด Norway | NO | Fรธdselsnummer | 11 digits | 12345678901 |
โ Parse + Validation |
| ๐ธ๐ช Sweden | SE | Personnummer | 11 chars | 123456-7893 |
โ Parse + Validation |
| ๐ณ๐ฑ Netherlands | NL | BSN | 9 digits | 123456782 |
โ Parse + Validation |
| ๐ต๐ฑ Poland | PL | PESEL | 11 digits | 12345678903 |
โ Parse + Validation |
| ๐จ๐ฟ Czech Republic | CZ | Rodnรฉ ฤรญslo | 9-10 digits | 1234567890 |
โ Parse + Validation |
| ๐ญ๐บ Hungary | HU | Szemรฉlyi szรกm | 11 digits | 12345678905 |
โ Parse + Validation |
| ๐ท๐ด Romania | RO | CNP | 13 digits | 1234567890123 |
โ Parse + Validation |
| ๐ธ๐ฐ Slovakia | SK | Rodnรฉ ฤรญslo | 10 digits | 1204156785 |
โ Parse + Validation |
| ๐ช๐ช Estonia | EE | Isikukood | 11 digits | 12345678901 |
โ Parse + Validation |
| ๐ฌ๐ท Greece | GR | AMKA | 11 digits | 12345678901 |
โ Parse + Validation |
| ๐ฎ๐ช Ireland | IE | PPS Number | 7-8 chars | 1234567T |
โ Validation |
| ๐ฑ๐ป Latvia | LV | Personas kods | 11 digits | 12345678901 |
โ Parse + Validation |
| ๐ฑ๐บ Luxembourg | LU | National Number | 13 digits | 1234567890123 |
โ Parse + Validation |
| ๐ฒ๐น Malta | MT | ID Card Number | 8 chars | 1234567M |
โ Validation |
| ๐ญ๐ท Croatia | HR | OIB | 11 digits | 12345678903 |
โ Validation |
| ๐จ๐ญ Switzerland | CH | AHV Number | 13 digits | 7561234567890 |
โ Validation |
| ๐ฉ๐ช Germany | DE | Tax ID | 11 digits | 12345678901 |
โ Validation |
| ๐ช๐ธ Spain | ES | DNI | 8 digits + letter | 12345678Z |
โ Validation |
| ๐ซ๐ท France | FR | INSEE | 13 digits | 1234567890123 |
โ Parse + Validation |
| ๐ฌ๐ง United Kingdom | GB | National Insurance | 9 chars | AB123456C |
โ Validation |
| ๐ฎ๐น Italy | IT | Fiscal Code | 16 chars | RSSMRA80A01H501U |
โ Parse + Validation |
| ๐ฎ๐ท Iran | IR | National ID | 10 digits | 1234567890 |
โ Validation |
| ๐ฏ๐ด Jordan | JO | National ID | 10 digits | 1234567890 |
โ Validation |
| ๐ฑ๐ฐ Sri Lanka | LK | National ID | 10 digits + letter | 123456789V |
โ Parse + Validation |
| ๐น๐ท Turkey | TR | National ID | 11 digits | 12345678901 |
โ Validation |
| ๐ต๐น Portugal | PT | NIC | 9 digits | 123456789 |
โ Validation |
| ๐ท๐บ Russia | RU | ะกะะะะก | 11 digits | 123-456-789 01 |
โ Validation |
๐ Asia (15 countries)
| Country | Code | ID Type | Format | Example | Features |
|---|---|---|---|---|---|
| ๐ฆ๐ช UAE | AE | Emirates ID | 15 digits | 784-1234-5678901-2 |
โ Parse + Validation |
| ๐ง๐ฉ Bangladesh | BD | National ID | 13 digits | 1234567890123 |
โ Parse + Validation |
| ๐จ๐ณ China | CN | Resident ID | 18 digits | 110101199001011234 |
โ Parse + Validation |
| ๐ฎ๐ฉ Indonesia | ID | National ID | 16 digits | 1234567890123456 |
โ Parse + Validation |
| ๐ฎ๐ณ India | IN | Aadhaar | 12 digits | 123456789012 |
โ Validation |
| ๐ฒ๐พ Malaysia | MY | NRIC | 12 digits | 123456-12-1234 |
โ Parse + Validation |
| ๐ณ๐ต Nepal | NP | National ID | 13 digits | 1234567890123 |
โ Validation |
| ๐ต๐ฐ Pakistan | PK | CNIC | 13 digits | 12345-1234567-1 |
โ Parse + Validation |
| ๐ต๐ญ Philippines | PH | PhilID | 12 digits | 1234-5678-9012 |
โ Validation |
| ๐ธ๐ฆ Saudi Arabia | SA | National ID | 10 digits | 1234567890 |
โ Parse + Validation |
| ๐น๐ญ Thailand | TH | National ID | 13 digits | 1234567890123 |
โ Parse + Validation |
| ๐ป๐ณ Vietnam | VN | National ID | 9 digits | 123456789 |
โ Parse + Validation |
| ๐ฏ๐ต Japan | JP | My Number | 12 digits | 123456789012 |
โ Validation |
| ๐ธ๐ฌ Singapore | SG | NRIC | 9 chars | S1234567A |
โ Parse + Validation |
| ๐ฐ๐ท South Korea | KR | RRN | 13 digits | 1234567890123 |
โ Parse + Validation |
| ๐น๐ผ Taiwan | TW | National ID | 10 chars | A123456789 |
โ Parse + Validation |
๐ Africa (6 countries)
| Country | Code | ID Type | Format | Example | Features |
|---|---|---|---|---|---|
| ๐ฉ๐ฟ Algeria | DZ | CIN | 12 digits | 123456789012 |
โ Parse + Validation |
| ๐ช๐ฌ Egypt | EG | National ID | 14 digits | 29001010100015 |
โ Parse + Validation |
| ๐ฑ๐พ Libya | LY | National ID | 10 digits | 1234567890 |
โ Parse + Validation |
| ๐ฒ๐ฆ Morocco | MA | CIN | 12 digits | 123456789012 |
โ Parse + Validation |
| ๐ณ๐ฌ Nigeria | NG | National ID | 11 digits | 12345678901 |
โ Validation |
| ๐น๐ณ Tunisia | TN | CIN | 8 digits | 12345679 |
โ Parse + Validation |
๐ Americas (7 countries)
| Country | Code | ID Type | Format | Example | Features |
|---|---|---|---|---|---|
| ๐บ๐ธ United States | US | Social Security | 9 digits | 123-45-6789 |
โ Validation |
| ๐ง๐ท Brazil | BR | CPF | 11 digits | 123.456.789-09 |
โ Parse + Validation |
| ๐จ๐ฆ Canada | CA | SIN | 9 digits | 123-456-789 |
โ Parse + Validation |
| ๐ฆ๐ท Argentina | AR | DNI | 7-8 digits | 12.345.678 |
โ Parse + Validation |
| ๐ฆ๐บ Australia | AU | TFN | 8-9 digits | 123456789 |
โ Validation |
| ๐จ๐ฑ Chile | CL | RUT | 8-9 digits | 12.345.678-5 |
โ Validation |
| ๐จ๐ด Colombia | CO | Cรฉdula | 6-10 digits | 1234567890 |
โ Validation |
| ๐ฒ๐ฝ Mexico | MX | CURP | 18 chars | ABCD123456HEFGHI01 |
โ Parse + Validation |
| ๐ณ๐ฟ New Zealand | NZ | IRD | 8-9 digits | 123456789 |
โ Validation |
๐ Advanced Usage
Direct Module Imports
// Import specific country modules
import { SocialSecurityNumber } from 'national-id-numbers/nationalid/usa/social_security.js';
import { NationalID as EgyptianID } from 'national-id-numbers/nationalid/egy/national_id.js';
// Use directly
SocialSecurityNumber.validate('123-45-6789');
const egyptInfo = EgyptianID.parse('29001010100015');Utility Functions
import { Gender, validateRegexp, luhnDigit } from 'national-id-numbers';
// Use utility functions
const isValidFormat = validateRegexp('123-45-6789', /^\d{3}-\d{2}-\d{4}$/);
const checkDigit = luhnDigit([1, 2, 3, 4, 5, 6, 7, 8, 9]);Error Handling
import { NationalID } from 'national-id-numbers';
try {
const isValid = NationalID.validate('XX', '123456789');
} catch (error) {
console.error('Unsupported country:', error.message);
// "Unsupported country: XX"
}
try {
const info = NationalID.parse('EG', 'invalid-id');
} catch (error) {
console.error('Parsing failed:', error.message);
// "Parsing not supported for country code: EG"
}๐ง API Reference
NationalID Class
NationalID.validate(countryCode, idNumber)
Validates a national ID number for the specified country.
Parameters:
countryCode(string): Two-letter ISO country codeidNumber(string): The ID number to validate
Returns: boolean - true if valid, false otherwise
NationalID.parse(countryCode, idNumber)
Parses a national ID number and extracts information.
Parameters:
countryCode(string): Two-letter ISO country codeidNumber(string): The ID number to parse
Returns: object|null - Parsed data object or null if invalid
Country Modules
Each country module exports:
NationalIDclass (or specific class name)METADATAobject with country information- Validation and parsing methods
๐งช Testing
# Run all tests
npm test
# Run specific country tests
npm test -- test/egy.test.js
npm test -- test/ca.test.js
# Run with coverage
npm run test:coverage๐ Statistics
- Total Countries: 66 implemented
- Total Tests: 131+ tests
- Coverage: 6 continents
- Bundle Size: ~15KB (minified)
- Zero Dependencies: No external packages required
๐ง Roadmap
High Priority Countries
- ๐ฆ๐ท Argentina (DNI)
- ๐ฆ๐บ Australia (TFN)
- ๐ฆ๐น Austria (Personalausweis)
- ๐ง๐ช Belgium (National Number)
- ๐ง๐ฌ Bulgaria (ะะะ)
- ๐จ๐ฑ Chile (RUT)
- ๐จ๐ด Colombia (Cรฉdula)
- ๐ญ๐ท Croatia (OIB)
- ๐จ๐ฟ Czech Republic (Rodnรฉ ฤรญslo)
- ๐ฉ๐ฐ Denmark (CPR Number)
- ๐ช๐ช Estonia (Isikukood)
- ๐ซ๐ฎ Finland (Henkilรถtunnus)
- ๐ฌ๐ท Greece (AMKA)
- ๐ญ๐บ Hungary (Szemรฉlyi szรกm)
- ๐ฎ๐ช Ireland (PPS Number)
- ๐ฏ๐ต Japan (My Number)
- ๐ฑ๐ป Latvia (Personas kods)
- ๐ฑ๐น Lithuania (Asmens kodas)
- ๐ฑ๐บ Luxembourg (National Number)
- ๐ฒ๐น Malta (ID Card Number)
- ๐ฒ๐ฝ Mexico (CURP)
- ๐ณ๐ฑ Netherlands (BSN)
- ๐ณ๐ฟ New Zealand (IRD Number)
- ๐ณ๐ด Norway (Fรธdselsnummer)
- ๐ต๐ฑ Poland (PESEL)
- ๐ต๐น Portugal (Nรบmero de Identificaรงรฃo Civil)
- ๐ท๐ด Romania (CNP)
- ๐ท๐บ Russia (ะกะะะะก)
- ๐ธ๐ฌ Singapore (NRIC)
- ๐ฐ๐ท South Korea (์ฃผ๋ฏผ๋ฑ๋ก๋ฒํธ)
- ๐ธ๐ช Sweden (Personnummer)
- ๐จ๐ญ Switzerland (AHV Number)
- ๐น๐ผ Taiwan (่บซๅ่ญๅญ่)
๐ค Contributing
We welcome contributions! Please see our Contributing Guide for detailed instructions.
Quick Contribution Steps
- Fork the repository
- Create a feature branch:
git checkout -b feature/new-country - Add your country implementation
- Add comprehensive tests
- Update documentation
- Submit a pull request
๐ License
This project is licensed under the MIT License - see the LICENSE file for details.
๐ Acknowledgments
- Contributors who helped implement various countries
- Open source community for inspiration and feedback
- Government documentation for accurate validation rules
๐ Support
- ๐ง Issues: GitHub Issues
- ๐ Documentation: GitHub Wiki
- ๐ฌ Discussions: GitHub Discussions
Made with โค๏ธ for developers worldwide
โญ Star this repo โข ๐ Report Bug โข ๐ก Request Feature