Skip to content

National ID Detectors ​

us_ssn ​

Detects US Social Security Numbers (9-digit compact or 3-2-4 hyphenated format). Requires nearby context labels to reduce false positives.

Structural exclusions: area numbers 000, 666, 900–999; group numbers 00; serial numbers 0000.

ts
const redactor = createRedactor({
  rules: { us_ssn: { action: "redact" } },
});

redactor.redact("SSN: 123-45-6789");
// "SSN: [US_SSN_1]"
  • ID: us_ssn
  • Entity type: us_ssn
  • Context required: Yes (labels: SSN, Social Security Number, Social Security No.)
  • Stream supported: Yes
  • Validation: Structural exclusions, context label qualification

uk_nino ​

Detects UK National Insurance Numbers (2 prefix letters, 6 digits, 1 suffix letter in compact or spaced format).

Validates prefix (excludes D/F/I/Q/U/V in first position, O in second) and suffix (A–D, F, J, H, M, N, P, R, S, T, W, X, Y, Z).

ts
const redactor = createRedactor({
  rules: { uk_nino: { action: "redact" } },
});

redactor.redact("NINO: AB123456C");
// "NINO: [UK_NINO_1]"
  • ID: uk_nino
  • Entity type: uk_nino
  • Context required: No
  • Stream supported: Yes
  • Validation: Prefix/suffix letter validation

ca_sin ​

Detects Canadian Social Insurance Numbers (9 digits, compact or hyphenated format) with Luhn checksum validation.

ts
const redactor = createRedactor({
  rules: { ca_sin: { action: "redact" } },
});

redactor.redact("SIN: 123-456-789");
// "SIN: [CA_SIN_1]"
  • ID: ca_sin
  • Entity type: ca_sin
  • Context required: No
  • Stream supported: Yes
  • Validation: Luhn checksum

au_tfn ​

Detects Australian Tax File Numbers (8–9 digits, compact or spaced format) with weighted sum mod 11 validation (weights: 1, 4, 3, 7, 5, 8, 6, 9, 10).

ts
const redactor = createRedactor({
  rules: { au_tfn: { action: "redact" } },
});

redactor.redact("TFN: 123 456 789");
// "TFN: [AU_TFN_1]"
  • ID: au_tfn
  • Entity type: au_tfn
  • Context required: No
  • Stream supported: Yes
  • Validation: Weighted sum mod 11

jp_my_number ​

Detects Japanese My Number (12 digits, compact or spaced format) with weighted sum mod 11 validation (weights: 6, 5, 4, 3, 2, 7, 6, 5, 4, 3, 2 for first 11 digits; 12th is the check digit).

ts
const redactor = createRedactor({
  rules: { jp_my_number: { action: "redact" } },
});

redactor.redact("My Number: 1234 5678 9012");
// "My Number: [JP_MY_NUMBER_1]"
  • ID: jp_my_number
  • Entity type: jp_my_number
  • Context required: No
  • Stream supported: Yes
  • Validation: Weighted sum mod 11

uk_nhs ​

Detects UK NHS numbers (10 digits with mod-11 checksum validation).

ts
const redactor = createRedactor({
  rules: { uk_nhs: { action: "redact" } },
});

redactor.redact("NHS: 1234567890");
// "NHS: [UK_NHS_1]"
  • ID: uk_nhs
  • Entity type: uk_nhs
  • Context required: Yes (labels: NHS, National Health Service)
  • Stream supported: Yes
  • Validation: Mod-11 checksum

us_itin ​

Detects US Individual Taxpayer Identification Numbers (9XX-7X-XXXX or 9XX-8X-XXXX format) with Luhn validation.

ts
const redactor = createRedactor({
  rules: { us_itin: { action: "redact" } },
});

redactor.redact("ITIN: 912-70-1234");
// "ITIN: [US_ITIN_1]"
  • ID: us_itin
  • Entity type: us_itin
  • Context required: No
  • Stream supported: Yes
  • Validation: Luhn checksum, format (9XX-7X or 9XX-8X prefix)

us_ein ​

Detects US Employer Identification Numbers (XX-XXXXXXX format).

ts
const redactor = createRedactor({
  rules: { us_ein: { action: "redact" } },
});

redactor.redact("EIN: 12-3456789");
// "EIN: [US_EIN_1]"
  • ID: us_ein
  • Entity type: us_ein
  • Context required: Yes (labels: EIN, Employer ID, Tax ID)
  • Stream supported: Yes
  • Validation: Format (XX-XXXXXXX)

nz_ird ​

Detects New Zealand Inland Revenue Department numbers (8–9 digits with mod-11 weighted sum validation).

ts
const redactor = createRedactor({
  rules: { nz_ird: { action: "redact" } },
});

redactor.redact("IRD: 123456789");
// "IRD: [NZ_IRD_1]"
  • ID: nz_ird
  • Entity type: nz_ird
  • Context required: No
  • Stream supported: Yes
  • Validation: Weighted sum mod 11

de_id ​

Detects German national identity card numbers (Personalausweis). Requires nearby context labels.

ts
const redactor = createRedactor({
  rules: { de_id: { action: "redact" } },
});

redactor.redact("Personalausweis: L01X00T47");
// "Personalausweis: [DE_ID_1]"
  • ID: de_id
  • Entity type: de_id
  • Context required: Yes (labels: Personalausweis, German ID, National ID, Identity Card, Ausweis)
  • Stream supported: Yes (maxMatchLength: 11)
  • Validation: Length (10 or 11 chars)

fr_insee ​

Detects French INSEE / NIR numbers (15-digit social security identifiers). Requires nearby context labels.

ts
const redactor = createRedactor({
  rules: { fr_insee: { action: "redact" } },
});

redactor.redact("INSEE: 1234567890123 45");
// "INSEE: [FR_INSEE_1]"
  • ID: fr_insee
  • Entity type: fr_insee
  • Context required: Yes (labels: INSEE, NIR, Numéro de Sécurité Sociale, Social Security Number, Numéro INSEE)
  • Stream supported: Yes (maxMatchLength: 15)
  • Validation: Mod-97 checksum

it_codice_fiscale ​

Detects Italian Codice Fiscale (tax code) numbers. Requires nearby context labels.

ts
const redactor = createRedactor({
  rules: { it_codice_fiscale: { action: "redact" } },
});

redactor.redact("Codice Fiscale: RSSMRA85M01H501Z");
// "Codice Fiscale: [IT_CODICE_FISCALE_1]"
  • ID: it_codice_fiscale
  • Entity type: it_codice_fiscale
  • Context required: Yes (labels: Codice Fiscale, Fiscal Code, Tax Code, Italian ID)
  • Stream supported: Yes (maxMatchLength: 16)
  • Validation: Italian Codice Fiscale checksum (odd/even character value lookup, control character)

es_dni ​

Detects Spanish DNI (Documento Nacional de Identidad) numbers. Requires nearby context labels.

ts
const redactor = createRedactor({
  rules: { es_dni: { action: "redact" } },
});

redactor.redact("DNI: 12345678Z");
// "DNI: [ES_DNI_1]"
  • ID: es_dni
  • Entity type: es_dni
  • Context required: Yes (labels: DNI, Documento Nacional de Identidad, Spanish ID, National ID)
  • Stream supported: Yes (maxMatchLength: 9)
  • Validation: Control letter using mod-23 lookup table (TRWAGMYFPDXBNJZSQVHLCKE)

nl_bsn ​

Detects Dutch BSN (Burgerservicenummer) citizen service numbers. Requires nearby context labels.

ts
const redactor = createRedactor({
  rules: { nl_bsn: { action: "redact" } },
});

redactor.redact("BSN: 123.456.782");
// "BSN: [NL_BSN_1]"
  • ID: nl_bsn
  • Entity type: nl_bsn
  • Context required: Yes (labels: BSN, Burgerservicenummer, Dutch ID, Citizen Service Number)
  • Stream supported: Yes (maxMatchLength: 11)
  • Validation: Mod-11 checksum (weighted sum with weights 9..1)

pl_pesel ​

Detects Polish PESEL national ID numbers. Requires nearby context labels.

ts
const redactor = createRedactor({
  rules: { pl_pesel: { action: "redact" } },
});

redactor.redact("PESEL: 12345678901");
// "PESEL: [PL_PESEL_1]"
  • ID: pl_pesel
  • Entity type: pl_pesel
  • Context required: Yes (labels: PESEL, Polish ID, National ID, Identity Number)
  • Stream supported: Yes (maxMatchLength: 11)
  • Validation: PESEL checksum (weights [1,3,7,9,1,3,7,9,1,3,1], sum mod 10 = 0)

za_id ​

Detects South African national ID numbers. Requires nearby context labels.

ts
const redactor = createRedactor({
  rules: { za_id: { action: "redact" } },
});

redactor.redact("National ID: 1234567890123");
// "National ID: [ZA_ID_1]"
  • ID: za_id
  • Entity type: za_id
  • Context required: Yes (labels: South Africa, RSA, ZA, National ID, Identity, ID Number)
  • Stream supported: Yes (maxMatchLength: 13)
  • Validation: 13-digit length, month field (1–12), day field (1–31)

ng_nin ​

Detects Nigerian National Identification Numbers (NIN). Requires nearby context labels.

ts
const redactor = createRedactor({
  rules: { ng_nin: { action: "redact" } },
});

redactor.redact("NIN: 12345678901");
// "NIN: [NG_NIN_1]"
  • ID: ng_nin
  • Entity type: ng_nin
  • Context required: Yes (labels: Nigeria, NIN, National ID, Identity, Nigerian)
  • Stream supported: Yes (maxMatchLength: 11)
  • Validation: 11-digit format

ng_bvn ​

Detects Nigerian Bank Verification Numbers (BVN). Requires nearby context labels.

ts
const redactor = createRedactor({
  rules: { ng_bvn: { action: "redact" } },
});

redactor.redact("BVN: 12345678901");
// "BVN: [NG_BVN_1]"
  • ID: ng_bvn
  • Entity type: ng_bvn
  • Context required: Yes (labels: BVN, Bank Verification, Nigeria, Nigerian, Banking)
  • Stream supported: Yes (maxMatchLength: 11)
  • Validation: 11-digit format

ke_id ​

Detects Kenyan national ID numbers. Requires nearby context labels.

ts
const redactor = createRedactor({
  rules: { ke_id: { action: "redact" } },
});

redactor.redact("National ID: 12345678");
// "National ID: [KE_ID_1]"
  • ID: ke_id
  • Entity type: ke_id
  • Context required: Yes (labels: Kenya, Kenyan, National ID, Identity)
  • Stream supported: Yes (maxMatchLength: 8)
  • Validation: 7–8 digit format

ke_kra_pin ​

Detects Kenyan KRA PIN (taxpayer identification) numbers. Requires nearby context labels.

ts
const redactor = createRedactor({
  rules: { ke_kra_pin: { action: "redact" } },
});

redactor.redact("KRA PIN: A123456789B");
// "KRA PIN: [KE_KRA_PIN_1]"
  • ID: ke_kra_pin
  • Entity type: ke_kra_pin
  • Context required: Yes (labels: KRA, Kenya, Revenue, Authority, Tax, PIN, Taxpayer)
  • Stream supported: Yes (maxMatchLength: 11)
  • Validation: Format (A + 9 digits + letter)

eg_id ​

Detects Egyptian national ID numbers. Requires nearby context labels.

ts
const redactor = createRedactor({
  rules: { eg_id: { action: "redact" } },
});

redactor.redact("National ID: 12345678901234");
// "National ID: [EG_ID_1]"
  • ID: eg_id
  • Entity type: eg_id
  • Context required: Yes (labels: Egypt, Egyptian, National ID, Identity)
  • Stream supported: Yes (maxMatchLength: 14)
  • Validation: 14-digit length, month field (1–12), day field (1–31)

gh_card ​

Detects Ghana Card national ID numbers. Requires nearby context labels.

ts
const redactor = createRedactor({
  rules: { gh_card: { action: "redact" } },
});

redactor.redact("Ghana Card: GHA-123456789-0");
// "Ghana Card: [GH_CARD_1]"
  • ID: gh_card
  • Entity type: gh_card
  • Context required: Yes (labels: Ghana, Ghanaian, Ghana Card, National ID, Identity)
  • Stream supported: Yes (maxMatchLength: 15)
  • Validation: Format (GHA + 9 digits + check digit)

ma_id ​

Detects Moroccan national ID numbers (CNIE). Requires nearby context labels.

ts
const redactor = createRedactor({
  rules: { ma_id: { action: "redact" } },
});

redactor.redact("CNIE: AB123456");
// "CNIE: [MA_ID_1]"
  • ID: ma_id
  • Entity type: ma_id
  • Context required: Yes (labels: Morocco, Moroccan, CNIE, National ID, Identity)
  • Stream supported: Yes (maxMatchLength: 10)
  • Validation: Format (1–2 letters + 6–8 digits, or 8 digits)

kz_iin ​

Detects Kazakhstani Individual Identification Numbers (IIN). Requires nearby context labels.

ts
const redactor = createRedactor({
  rules: { kz_iin: { action: "redact" } },
});

redactor.redact("IIN: 123456789012");
// "IIN: [KZ_IIN_1]"
  • ID: kz_iin
  • Entity type: kz_iin
  • Context required: Yes (labels: Kazakhstan, Kazakh, IIN, Individual Identification, ЖСН)
  • Stream supported: Yes (maxMatchLength: 12)
  • Validation: 12-digit length, month field (1–12), day field (1–31)

uz_passport ​

Detects Uzbekistan passport numbers. Requires nearby context labels.

ts
const redactor = createRedactor({
  rules: { uz_passport: { action: "redact" } },
});

redactor.redact("Passport: AB1234567");
// "Passport: [UZ_PASSPORT_1]"
  • ID: uz_passport
  • Entity type: uz_passport
  • Context required: Yes (labels: Uzbek, Uzbekistan, Passport, Pasport)
  • Stream supported: Yes (maxMatchLength: 9)
  • Validation: Format (2 letters + 7 digits)

uz_stir ​

Detects Uzbekistan STIR (tax identification) numbers. Requires nearby context labels.

ts
const redactor = createRedactor({
  rules: { uz_stir: { action: "redact" } },
});

redactor.redact("STIR: 123456789");
// "STIR: [UZ_STIR_1]"
  • ID: uz_stir
  • Entity type: uz_stir
  • Context required: Yes (labels: Uzbek, Uzbekistan, STIR, Tax, INN, Soliq)
  • Stream supported: Yes (maxMatchLength: 9)
  • Validation: 9-digit format

kg_pin ​

Detects Kyrgyzstani Personal Identification Numbers (PIN). Requires nearby context labels.

ts
const redactor = createRedactor({
  rules: { kg_pin: { action: "redact" } },
});

redactor.redact("PIN: 12345678901234");
// "PIN: [KG_PIN_1]"
  • ID: kg_pin
  • Entity type: kg_pin
  • Context required: Yes (labels: Kyrgyz, Kyrgyzstan, PIN, Personal ID, Личный, Номер)
  • Stream supported: Yes (maxMatchLength: 14)
  • Validation: 14-digit format

tj_id ​

Detects Tajikistan national ID numbers. Requires nearby context labels.

ts
const redactor = createRedactor({
  rules: { tj_id: { action: "redact" } },
});

redactor.redact("National ID: 123456789");
// "National ID: [TJ_ID_1]"
  • ID: tj_id
  • Entity type: tj_id
  • Context required: Yes (labels: Tajik, Tajikistan, National ID, Identity)
  • Stream supported: Yes (maxMatchLength: 10)
  • Validation: 9–10 digit format

tm_passport ​

Detects Turkmenistan passport numbers. Requires nearby context labels.

ts
const redactor = createRedactor({
  rules: { tm_passport: { action: "redact" } },
});

redactor.redact("Passport: A1234567");
// "Passport: [TM_PASSPORT_1]"
  • ID: tm_passport
  • Entity type: tm_passport
  • Context required: Yes (labels: Turkmen, Turkmenistan, Passport, Pasport)
  • Stream supported: Yes (maxMatchLength: 8)
  • Validation: Format (1 letter + 7 digits)

ru_passport ​

Detects Russian passport numbers. Requires nearby context labels.

ts
const redactor = createRedactor({
  rules: { ru_passport: { action: "redact" } },
});

redactor.redact("Passport: 1234 567890");
// "Passport: [RU_PASSPORT_1]"
  • ID: ru_passport
  • Entity type: ru_passport
  • Context required: Yes (labels: Russia, Russian, Passport, Паспорт, Российский)
  • Stream supported: Yes (maxMatchLength: 11)
  • Validation: Format (4 digits + 6 digits)

ru_snils ​

Detects Russian SNILS (pension insurance) numbers. Requires nearby context labels.

ts
const redactor = createRedactor({
  rules: { ru_snils: { action: "redact" } },
});

redactor.redact("SNILS: 123-456-789 00");
// "SNILS: [RU_SNILS_1]"
  • ID: ru_snils
  • Entity type: ru_snils
  • Context required: Yes (labels: Russia, Russian, SNILS, СНИЛС, Pension, Пенсионный)
  • Stream supported: Yes (maxMatchLength: 14)
  • Validation: Format (3-3-3 2 digit groups)

ua_passport ​

Detects Ukrainian passport numbers. Requires nearby context labels.

ts
const redactor = createRedactor({
  rules: { ua_passport: { action: "redact" } },
});

redactor.redact("Passport: AB123456");
// "Passport: [UA_PASSPORT_1]"
  • ID: ua_passport
  • Entity type: ua_passport
  • Context required: Yes (labels: Ukrainian, Passport, Паспорт, Український)
  • Stream supported: Yes (maxMatchLength: 8)
  • Validation: Format (2 letters + 6 digits)

ua_inn ​

Detects Ukrainian INN (tax identification) numbers. Requires nearby context labels.

ts
const redactor = createRedactor({
  rules: { ua_inn: { action: "redact" } },
});

redactor.redact("INN: 1234567890");
// "INN: [UA_INN_1]"
  • ID: ua_inn
  • Entity type: ua_inn
  • Context required: Yes (labels: Ukrainian, INN, Tax, Податковий, ІНН)
  • Stream supported: Yes (maxMatchLength: 10)
  • Validation: 10-digit format

cz_id ​

Detects Czech national ID numbers (Rodné číslo). Requires nearby context labels.

ts
const redactor = createRedactor({
  rules: { cz_id: { action: "redact" } },
});

redactor.redact("Rodné číslo: 123456/7890");
// "Rodné číslo: [CZ_ID_1]"
  • ID: cz_id
  • Entity type: cz_id
  • Context required: Yes (labels: Czech, Czechia, Republic, Rodné, Číslo, National ID)
  • Stream supported: Yes (maxMatchLength: 11)
  • Validation: 10-digit length, month field (1–12 or 51–62), day field (1–31)

ro_cnp ​

Detects Romanian CNP (Cod Numeric Personal) numbers. Requires nearby context labels.

ts
const redactor = createRedactor({
  rules: { ro_cnp: { action: "redact" } },
});

redactor.redact("CNP: 1234567890123");
// "CNP: [RO_CNP_1]"
  • ID: ro_cnp
  • Entity type: ro_cnp
  • Context required: Yes (labels: Romania, Romanian, CNP, Cod Numeric, Personal)
  • Stream supported: Yes (maxMatchLength: 13)
  • Validation: 13-digit length, first digit (1–9), month field (1–12), day field (1–31)

hu_id ​

Detects Hungarian national ID numbers (Személyi igazolvány). Requires nearby context labels.

ts
const redactor = createRedactor({
  rules: { hu_id: { action: "redact" } },
});

redactor.redact("Személyi: 123456AB");
// "Személyi: [HU_ID_1]"
  • ID: hu_id
  • Entity type: hu_id
  • Context required: Yes (labels: Hungarian, Magyar, Személyi, Igazolvány, Personal ID)
  • Stream supported: Yes (maxMatchLength: 8)
  • Validation: Format (6 digits + 2 letters)

hu_tax_id ​

Detects Hungarian tax identification numbers (Adóazonosító). Requires nearby context labels.

ts
const redactor = createRedactor({
  rules: { hu_tax_id: { action: "redact" } },
});

redactor.redact("Adó: 1234567890");
// "Adó: [HU_TAX_ID_1]"
  • ID: hu_tax_id
  • Entity type: hu_tax_id
  • Context required: Yes (labels: Hungarian, Magyar, Adó, Tax, Adóazonosító)
  • Stream supported: Yes (maxMatchLength: 10)
  • Validation: 10-digit format

bg_egn ​

Detects Bulgarian EGN (Personal Number) numbers. Requires nearby context labels.

ts
const redactor = createRedactor({
  rules: { bg_egn: { action: "redact" } },
});

redactor.redact("EGN: 1234567890");
// "EGN: [BG_EGN_1]"
  • ID: bg_egn
  • Entity type: bg_egn
  • Context required: Yes (labels: Bulgaria, Bulgarian, EGN, Personal Number, Единен)
  • Stream supported: Yes (maxMatchLength: 10)
  • Validation: 10-digit length, month field (1–12, 21–32, or 41–52), day field (1–31)

rs_jmbg ​

Detects Serbian JMBG (Unique Master Citizen Number) numbers. Requires nearby context labels.

ts
const redactor = createRedactor({
  rules: { rs_jmbg: { action: "redact" } },
});

redactor.redact("JMBG: 1234567890123");
// "JMBG: [RS_JMBG_1]"
  • ID: rs_jmbg
  • Entity type: rs_jmbg
  • Context required: Yes (labels: Serbian, Serbia, JMBG, Jedinstveni, Matični, Personal)
  • Stream supported: Yes (maxMatchLength: 13)
  • Validation: 13-digit length, day field (1–31), month field (1–12)

ar_dni ​

Detects Argentine DNI numbers. Requires nearby context labels.

ts
const redactor = createRedactor({
  rules: { ar_dni: { action: "redact" } },
});

redactor.redact("DNI: 12345678");
// "DNI: [AR_DNI_1]"
  • ID: ar_dni
  • Entity type: ar_dni
  • Context required: Yes (labels: Argentina, Argentin, DNI, Documento Nacional, Identidad)
  • Stream supported: Yes (maxMatchLength: 8)
  • Validation: 7–8 digit format

ar_cuit ​

Detects Argentine CUIT/CUIL tax identification numbers. Requires nearby context labels.

ts
const redactor = createRedactor({
  rules: { ar_cuit: { action: "redact" } },
});

redactor.redact("CUIT: 20-12345678-3");
// "CUIT: [AR_CUIT_1]"
  • ID: ar_cuit
  • Entity type: ar_cuit
  • Context required: Yes (labels: Argentina, CUIT, CUIL, Tax, Impuesto, Tributario)
  • Stream supported: Yes (maxMatchLength: 13)
  • Validation: Format (2 digits + 8 digits + check digit)

cl_rut ​

Detects Chilean RUT (Rol Único Tributario) numbers. Requires nearby context labels.

ts
const redactor = createRedactor({
  rules: { cl_rut: { action: "redact" } },
});

redactor.redact("RUT: 12.345.678-K");
// "RUT: [CL_RUT_1]"
  • ID: cl_rut
  • Entity type: cl_rut
  • Context required: Yes (labels: Chile, Chilean, RUT, Rol Único, Tributario, Cédula)
  • Stream supported: Yes (maxMatchLength: 12)
  • Validation: Chilean RUT checksum (mod-11, check digit 0–9 or K)

co_cedula ​

Detects Colombian Cédula de Ciudadanía numbers. Requires nearby context labels.

ts
const redactor = createRedactor({
  rules: { co_cedula: { action: "redact" } },
});

redactor.redact("Cédula: 1234567890");
// "Cédula: [CO_CEDULA_1]"
  • ID: co_cedula
  • Entity type: co_cedula
  • Context required: Yes (labels: Colombia, Colombian, Cédula, Cedula, Ciudadanía, CC)
  • Stream supported: Yes (maxMatchLength: 10)
  • Validation: 6–10 digit format

co_nit ​

Detects Colombian NIT (tax identification) numbers. Requires nearby context labels.

ts
const redactor = createRedactor({
  rules: { co_nit: { action: "redact" } },
});

redactor.redact("NIT: 123456789-0");
// "NIT: [CO_NIT_1]"
  • ID: co_nit
  • Entity type: co_nit
  • Context required: Yes (labels: Colombia, NIT, Tax, Impuesto, Tributario, Empresa)
  • Stream supported: Yes (maxMatchLength: 11)
  • Validation: Format (9 digits + check digit)

pe_dni ​

Detects Peruvian DNI numbers. Requires nearby context labels.

ts
const redactor = createRedactor({
  rules: { pe_dni: { action: "redact" } },
});

redactor.redact("DNI: 12345678");
// "DNI: [PE_DNI_1]"
  • ID: pe_dni
  • Entity type: pe_dni
  • Context required: Yes (labels: Peru, Peruvian, Perú, Peruano, DNI, Documento Nacional, Identidad, RENIEC)
  • Stream supported: Yes (maxMatchLength: 8)
  • Validation: 8-digit format

pe_ruc ​

Detects Peruvian RUC (tax identification) numbers. Requires nearby context labels.

ts
const redactor = createRedactor({
  rules: { pe_ruc: { action: "redact" } },
});

redactor.redact("RUC: 12345678901");
// "RUC: [PE_RUC_1]"
  • ID: pe_ruc
  • Entity type: pe_ruc
  • Context required: Yes (labels: Peru, Perú, RUC, Tax, SUNAT, Tributario)
  • Stream supported: Yes (maxMatchLength: 11)
  • Validation: 11-digit format, prefix must be 10, 15, 17, or 20

ve_cedula ​

Detects Venezuelan Cédula de Identidad numbers. Requires nearby context labels.

ts
const redactor = createRedactor({
  rules: { ve_cedula: { action: "redact" } },
});

redactor.redact("Cédula: V-12345678");
// "Cédula: [VE_CEDULA_1]"
  • ID: ve_cedula
  • Entity type: ve_cedula
  • Context required: Yes (labels: Venezuela, Venezuelan, Cédula, Cedula, Identidad, CI)
  • Stream supported: Yes (maxMatchLength: 10)
  • Validation: Format (V/E prefix + 1–8 digits)

ve_rif ​

Detects Venezuelan RIF (tax identification) numbers. Requires nearby context labels.

ts
const redactor = createRedactor({
  rules: { ve_rif: { action: "redact" } },
});

redactor.redact("RIF: J-12345678-9");
// "RIF: [VE_RIF_1]"
  • ID: ve_rif
  • Entity type: ve_rif
  • Context required: Yes (labels: Venezuela, RIF, Tax, SENIAT, Tributario)
  • Stream supported: Yes (maxMatchLength: 13)
  • Validation: Format (V/E/J/G prefix + 8–9 digits + check digit)

ec_cedula ​

Detects Ecuadorian Cédula de Identidad numbers. Requires nearby context labels.

ts
const redactor = createRedactor({
  rules: { ec_cedula: { action: "redact" } },
});

redactor.redact("Cédula: 1234567890");
// "Cédula: [EC_CEDULA_1]"
  • ID: ec_cedula
  • Entity type: ec_cedula
  • Context required: Yes (labels: Ecuador, Ecuadorian, Cédula, Cedula, Identidad)
  • Stream supported: Yes (maxMatchLength: 10)
  • Validation: 10-digit format, province code (1–24), third digit (≤6 or =9)

uy_cedula ​

Detects Uruguayan Cédula de Identidad numbers. Requires nearby context labels.

ts
const redactor = createRedactor({
  rules: { uy_cedula: { action: "redact" } },
});

redactor.redact("Cédula: 1.234.567-8");
// "Cédula: [UY_CEDULA_1]"
  • ID: uy_cedula
  • Entity type: uy_cedula
  • Context required: Yes (labels: Uruguay, Uruguayan, Cédula, Cedula, Identidad)
  • Stream supported: Yes (maxMatchLength: 11)
  • Validation: Format (1 digit + 3 digits + 3 digits + check digit)

uae_id ​

Detects UAE Emirates ID numbers. Requires nearby context labels.

ts
const redactor = createRedactor({
  rules: { uae_id: { action: "redact" } },
});

redactor.redact("Emirates ID: 784-1234-5678901-2");
// "Emirates ID: [UAE_ID_1]"
  • ID: uae_id
  • Entity type: uae_id
  • Context required: Yes (labels: UAE, Emirates, Dubai, Abu Dhabi, National ID, Emirates ID)
  • Stream supported: Yes (maxMatchLength: 18)
  • Validation: Format (784 prefix + 12 digits + check digit)

sa_id ​

Detects Saudi Arabian national ID numbers. Requires nearby context labels.

ts
const redactor = createRedactor({
  rules: { sa_id: { action: "redact" } },
});

redactor.redact("National ID: 1234567890");
// "National ID: [SA_ID_1]"
  • ID: sa_id
  • Entity type: sa_id
  • Context required: Yes (labels: Saudi, KSA, Kingdom, Iqama, National ID, Muqeem)
  • Stream supported: Yes (maxMatchLength: 10)
  • Validation: Format (1 or 2 prefix + 9 digits)

il_id ​

Detects Israeli national ID numbers (Teudat Zehut). Requires nearby context labels.

ts
const redactor = createRedactor({
  rules: { il_id: { action: "redact" } },
});

redactor.redact("Teudat Zehut: 123456789");
// "Teudat Zehut: [IL_ID_1]"
  • ID: il_id
  • Entity type: il_id
  • Context required: Yes (labels: Israel, Teudat, Zehut, Israeli, National ID)
  • Stream supported: Yes (maxMatchLength: 9)
  • Validation: 9-digit format

tr_id ​

Detects Turkish national ID numbers (TC Kimlik). Requires nearby context labels.

ts
const redactor = createRedactor({
  rules: { tr_id: { action: "redact" } },
});

redactor.redact("TC Kimlik: 12345678901");
// "TC Kimlik: [TR_ID_1]"
  • ID: tr_id
  • Entity type: tr_id
  • Context required: Yes (labels: Turkey, Turkish, TC, Kimlik, National ID)
  • Stream supported: Yes (maxMatchLength: 11)
  • Validation: 11-digit format (first digit 1–9)

qa_id ​

Detects Qatari national ID numbers (QID). Requires nearby context labels.

ts
const redactor = createRedactor({
  rules: { qa_id: { action: "redact" } },
});

redactor.redact("QID: 12345678901");
// "QID: [QA_ID_1]"
  • ID: qa_id
  • Entity type: qa_id
  • Context required: Yes (labels: Qatar, QID, Doha, National ID, Resident Permit)
  • Stream supported: Yes (maxMatchLength: 11)
  • Validation: 11-digit format

kw_id ​

Detects Kuwaiti Civil ID numbers. Requires nearby context labels.

ts
const redactor = createRedactor({
  rules: { kw_id: { action: "redact" } },
});

redactor.redact("Civil ID: 123456789012");
// "Civil ID: [KW_ID_1]"
  • ID: kw_id
  • Entity type: kw_id
  • Context required: Yes (labels: Kuwait, Civil ID, National ID)
  • Stream supported: Yes (maxMatchLength: 12)
  • Validation: 12-digit length, month field (1–12), day field (1–31)

bh_cpr ​

Detects Bahraini CPR (Central Population Registry) numbers. Requires nearby context labels.

ts
const redactor = createRedactor({
  rules: { bh_cpr: { action: "redact" } },
});

redactor.redact("CPR: 123456789");
// "CPR: [BH_CPR_1]"
  • ID: bh_cpr
  • Entity type: bh_cpr
  • Context required: Yes (labels: Bahrain, CPR, Central Population, National ID)
  • Stream supported: Yes (maxMatchLength: 9)
  • Validation: 9-digit length, month field (1–12), day field (1–31)

om_id ​

Detects Omani national ID numbers. Requires nearby context labels.

ts
const redactor = createRedactor({
  rules: { om_id: { action: "redact" } },
});

redactor.redact("Civil ID: 12345678");
// "Civil ID: [OM_ID_1]"
  • ID: om_id
  • Entity type: om_id
  • Context required: Yes (labels: Oman, Muscat, Civil ID, National ID)
  • Stream supported: Yes (maxMatchLength: 8)
  • Validation: 8-digit format

jo_id ​

Detects Jordanian national ID numbers. Requires nearby context labels.

ts
const redactor = createRedactor({
  rules: { jo_id: { action: "redact" } },
});

redactor.redact("National ID: 1234567890");
// "National ID: [JO_ID_1]"
  • ID: jo_id
  • Entity type: jo_id
  • Context required: Yes (labels: Jordan, Amman, National ID, Jordanian)
  • Stream supported: Yes (maxMatchLength: 10)
  • Validation: 10-digit format

lb_id ​

Detects Lebanese national ID numbers. Requires nearby context labels.

ts
const redactor = createRedactor({
  rules: { lb_id: { action: "redact" } },
});

redactor.redact("National ID: 12345678");
// "National ID: [LB_ID_1]"
  • ID: lb_id
  • Entity type: lb_id
  • Context required: Yes (labels: Lebanon, Lebanese, Beirut, National ID)
  • Stream supported: Yes (maxMatchLength: 8)
  • Validation: 7–8 digit format

nz_driver_license ​

Detects New Zealand driver license numbers. Requires nearby context labels.

ts
const redactor = createRedactor({
  rules: { nz_driver_license: { action: "redact" } },
});

redactor.redact("Driver License: AB123456");
// "Driver License: [NZ_DRIVER_LICENSE_1]"
  • ID: nz_driver_license
  • Entity type: nz_driver_license
  • Context required: Yes (labels: New Zealand, NZ, Kiwi, Driver License, Driver Licence, Driver, License, Licence)
  • Stream supported: Yes (maxMatchLength: 8)
  • Validation: Format (2 letters + 6 digits)

nz_passport ​

Detects New Zealand passport numbers. Requires nearby context labels.

ts
const redactor = createRedactor({
  rules: { nz_passport: { action: "redact" } },
});

redactor.redact("Passport: AB123456");
// "Passport: [NZ_PASSPORT_1]"
  • ID: nz_passport
  • Entity type: nz_passport
  • Context required: Yes (labels: New Zealand, NZ, Passport, Travel Document)
  • Stream supported: Yes (maxMatchLength: 8)
  • Validation: Format (2 letters + 6 digits)

fj_id ​

Detects Fijian national ID numbers. Requires nearby context labels.

ts
const redactor = createRedactor({
  rules: { fj_id: { action: "redact" } },
});

redactor.redact("National ID: ABC12345");
// "National ID: [FJ_ID_1]"
  • ID: fj_id
  • Entity type: fj_id
  • Context required: Yes (labels: Fiji, Fijian, National ID, Identity)
  • Stream supported: Yes (maxMatchLength: 10)
  • Validation: 8–10 alphanumeric character format

png_id ​

Detects Papua New Guinean national ID numbers. Requires nearby context labels.

ts
const redactor = createRedactor({
  rules: { png_id: { action: "redact" } },
});

redactor.redact("National ID: ABC123456789");
// "National ID: [PNG_ID_1]"
  • ID: png_id
  • Entity type: png_id
  • Context required: Yes (labels: Papua New Guinea, Papua, New Guinea, National ID)
  • Stream supported: Yes (maxMatchLength: 12)
  • Validation: 8–12 alphanumeric character format

ws_id ​

Detects Samoan national ID numbers. Requires nearby context labels.

ts
const redactor = createRedactor({
  rules: { ws_id: { action: "redact" } },
});

redactor.redact("National ID: 1234567890");
// "National ID: [WS_ID_1]"
  • ID: ws_id
  • Entity type: ws_id
  • Context required: Yes (labels: Samoa, Samoan, National ID, Identity)
  • Stream supported: Yes (maxMatchLength: 10)
  • Validation: 8–10 digit format

to_id ​

Detects Tongan national ID numbers. Requires nearby context labels.

ts
const redactor = createRedactor({
  rules: { to_id: { action: "redact" } },
});

redactor.redact("National ID: ABC12345");
// "National ID: [TO_ID_1]"
  • ID: to_id
  • Entity type: to_id
  • Context required: Yes (labels: Tonga, Tongan, National ID, Identity)
  • Stream supported: Yes (maxMatchLength: 10)
  • Validation: 8–10 alphanumeric character format

nz_ird_extra ​

Detects additional New Zealand IRD number formats. Requires nearby context labels.

ts
const redactor = createRedactor({
  rules: { nz_ird_extra: { action: "redact" } },
});

redactor.redact("IRD: 123456789");
// "IRD: [NZ_IRD_EXTRA_1]"
  • ID: nz_ird_extra
  • Entity type: nz_ird_extra
  • Context required: Yes (labels: New Zealand, NZ, IRD, Tax, Inland Revenue)
  • Stream supported: Yes (maxMatchLength: 9)
  • Validation: 8–9 digit format

id_nik ​

Detects Indonesian NIK (Nomor Induk Kependudukan) numbers. Requires nearby context labels.

ts
const redactor = createRedactor({
  rules: { id_nik: { action: "redact" } },
});

redactor.redact("NIK: 1234567890123456");
// "NIK: [ID_NIK_1]"
  • ID: id_nik
  • Entity type: id_nik
  • Context required: Yes (labels: Indonesia, Indonesian, NIK, Nomor Induk, KTP, National ID)
  • Stream supported: Yes (maxMatchLength: 16)
  • Validation: 16-digit format

id_npwp ​

Detects Indonesian NPWP (taxpayer identification) numbers. Requires nearby context labels.

ts
const redactor = createRedactor({
  rules: { id_npwp: { action: "redact" } },
});

redactor.redact("NPWP: 12.345.678.9-012.345");
// "NPWP: [ID_NPWP_1]"
  • ID: id_npwp
  • Entity type: id_npwp
  • Context required: Yes (labels: Indonesia, NPWP, Tax, Pajak, Wajib Pajak)
  • Stream supported: Yes (maxMatchLength: 20)
  • Validation: Format (dotted digit groups)

th_id ​

Detects Thai national ID numbers. Requires nearby context labels.

ts
const redactor = createRedactor({
  rules: { th_id: { action: "redact" } },
});

redactor.redact("National ID: 1234567890123");
// "National ID: [TH_ID_1]"
  • ID: th_id
  • Entity type: th_id
  • Context required: Yes (labels: Thailand, Thai, National ID, บัตร, ประชาชน)
  • Stream supported: Yes (maxMatchLength: 13)
  • Validation: Thai national ID checksum (weighted sum, check digit)

my_ic ​

Detects Malaysian IC (MyKad) numbers. Requires nearby context labels.

ts
const redactor = createRedactor({
  rules: { my_ic: { action: "redact" } },
});

redactor.redact("IC Number: 123456-12-3456");
// "IC Number: [MY_IC_1]"
  • ID: my_ic
  • Entity type: my_ic
  • Context required: Yes (labels: Malaysia, Malaysian, MyKad, IC Number, Kad Pengenalan)
  • Stream supported: Yes (maxMatchLength: 14)
  • Validation: 12-digit length, month field (1–12), day field (1–31)

ph_umid ​

Detects Philippine UMID (Unified Multipurpose ID) numbers. Requires nearby context labels.

ts
const redactor = createRedactor({
  rules: { ph_umid: { action: "redact" } },
});

redactor.redact("UMID: 1234-1234567-8");
// "UMID: [PH_UMID_1]"
  • ID: ph_umid
  • Entity type: ph_umid
  • Context required: Yes (labels: Philippines, Filipino, UMID, Unified, Multipurpose, National ID)
  • Stream supported: Yes (maxMatchLength: 14)
  • Validation: Format (4 digits + 7 digits + check digit)

vn_cccd ​

Detects Vietnamese CCCD (Citizen Identity) numbers. Requires nearby context labels.

ts
const redactor = createRedactor({
  rules: { vn_cccd: { action: "redact" } },
});

redactor.redact("CCCD: 123456789012");
// "CCCD: [VN_CCCD_1]"
  • ID: vn_cccd
  • Entity type: vn_cccd
  • Context required: Yes (labels: Vietnam, Vietnamese, CCCD, Citizen Identity, CMND, National ID)
  • Stream supported: Yes (maxMatchLength: 12)
  • Validation: 12-digit format

mm_nrc ​

Detects Myanmar NRC (National Registration Card) numbers. Requires nearby context labels.

ts
const redactor = createRedactor({
  rules: { mm_nrc: { action: "redact" } },
});

redactor.redact("NRC: 12/Yangon(N)123456");
// "NRC: [MM_NRC_1]"
  • ID: mm_nrc
  • Entity type: mm_nrc
  • Context required: Yes (labels: Myanmar, Burmese, NRC, National Registration, Identity)
  • Stream supported: Yes (maxMatchLength: 20)
  • Validation: Format (division code + township + citizen type + 6 digits)

Released under the MIT License.