National ID
Validate Iranian national ID (کد ملی) numbers: normalizes Persian/Arabic-Indic digits, zero-pads shorter input, rejects all-zero and repeated-digit values, verifies the standard weighted-sum checksum, and by default cross-checks the 3-digit issuance-office prefix against known codes.
Last updated August 17, 2026
Overview
Installation
$ npx shadcn@latest add https://ui.persian-labs.ir/r/national-id.jsonUsage
import { isValidNationalId } from "@/lib/national-id"
isValidNationalId("0499370899") // true
isValidNationalId("0499370898") // false — bad checksum
isValidNationalId("499370899") // true — zero-padded to "0499370899"
isValidNationalId("0999370899") // false — unknown issuance prefix
isValidNationalId("0999370899", { checkPrefix: false }) // checksum only