Skip to content
Devix Open Source

Changelog

Every release of Validators, newest first. Breaking changes are flagged.

v1.0.0

12 Sep 2026

First release.

Added

  • validate(kind, value) with a reason code on every answer — too-short, too-long, bad-characters, bad-structure, bad-checksum, unknown-country, empty — so a message can say what to do about it.
  • Every result says how far the check went: checked: 'checksum' when a check digit was verified, 'structure' when the number has none to verify.
  • IBAN for all 78 countries in the ISO 13616 registry: length, MOD 97-10 check digits, and the BBAN pattern plus bank code for the 60 whose structure is published here.
  • European VAT: shapes for 28 countries, with the check digit verified for AT, BE, DE, DK, FI, FR, GB, IE, IT, LU, NL, PL, PT, SE and SK. Greece is accepted as both EL and GR.
  • Gulf identifiers: Emirates ID (Luhn), UAE TRN, Saudi ID and Iqama (Luhn), Saudi VAT, Qatar ID, Kuwait Civil ID (weighted modulo 11), Bahrain CPR, Oman civil number.
  • South Asian identifiers: Pakistani CNIC (with province and what the last digit means), NTN, Indian PAN (with holder type) and GSTIN (base-36 check character).
  • Formatting the way each country writes it, an input mask() per kind, and generate() for valid test data that belongs to nobody.
  • Numbers typed by people are read the same: spaces, dashes, Arabic-Indic, Persian, Devanagari, Bengali and full-width digits, and the invisible marks that come with a copy and paste.
  • 5.1 kB gzip, zero dependencies, sideEffects: false.
  • A matching PHP package, devix-labs/laravel-validators, checked against 224 shared vectors so both sides answer identically.