JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 30
  • Score
    100M100P100Q51108F
  • License MIT

Validate and parse national identification numbers by country code

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

npm version npm downloads GitHub stars License: MIT Node.js Version TypeScript

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-numbers

Basic 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 code
  • idNumber (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 code
  • idNumber (string): The ID number to parse

Returns: object|null - Parsed data object or null if invalid

Country Modules

Each country module exports:

  • NationalID class (or specific class name)
  • METADATA object 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

  1. Fork the repository
  2. Create a feature branch: git checkout -b feature/new-country
  3. Add your country implementation
  4. Add comprehensive tests
  5. Update documentation
  6. 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


Made with โค๏ธ for developers worldwide

โญ Star this repo โ€ข ๐Ÿ› Report Bug โ€ข ๐Ÿ’ก Request Feature