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.json

Usage

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

API Reference

national-id