A PAN (Permanent Account Number) is the 10-character alphanumeric ID that India’s Income Tax Department issues to every taxpayer — individuals, companies, trusts, government bodies, and more. Validating a PAN means checking it against the published structural rules that govern how every PAN is constructed. This tool applies all three verifiable rules, explains the result of each one, and then decodes the five meaningful segments embedded in the number. Everything runs locally in your browser — your PAN is never sent to any server.
Why PAN validation matters
Finance teams, KYC workflows, and onboarding systems routinely receive PAN strings from users and must reject malformed entries before sending them to downstream services. A typo in the fourth character can misclassify an entity type, and an all-zeros sequence is structurally impossible. Catching these errors immediately — rather than waiting for an Income Tax Department API rejection — speeds up forms and improves data quality. This validator surfaces the exact rule that failed, so users can correct the right character rather than guessing.
How it works
The tool strips all non-alphanumeric characters, uppercases the result, and then applies three independent checks in sequence.
Check 1 — Format pattern confirms the PAN matches the regex ^[A-Z]{5}[0-9]{4}[A-Z]$:
five uppercase letters, followed by four digits, followed by one uppercase letter. This is the
top-level structural constraint published by the IT Department.
Check 2 — Holder-type code verifies that the fourth character is one of the ten recognised category letters. The complete set is P (Individual), C (Company), H (HUF), F (Firm), A (AOP), T (Trust), B (BOI), L (Local Authority), J (Artificial Juridical Person), and G (Government). Any other letter in position 4 means the PAN cannot have been issued by the IT Department under the documented schema.
Check 3 — Sequence number checks that characters 6–9, when read as a four-digit number, fall in the range 0001–9999. The value 0000 is never allocated; the sequence starts at 0001 within each series/holder-type/name-initial combination.
When all three checks pass, the tool also decodes the full structure and displays each segment with its interpretation.
The format explained: AAAAA9999A
The PAN format is not arbitrary — each position carries a defined meaning:
| Positions | Example | What it encodes |
|---|---|---|
| 1–3 | ABC | Alphabetic series, AAA to ZZZ |
| 4 | P | Holder type (P = Individual) |
| 5 | D | First letter of surname or entity name |
| 6–9 | 1234 | Running sequence, 0001–9999 |
| 10 | E | Check character (IT Dept assigned) |
So ABCPD1234E would belong to an individual whose surname begins with D,
in series ABC, sequence number 1234.
A note on the check character
The 10th character is often described as a “check digit”, but the CBDT has never published the algorithm used to derive it. This is unlike Aadhaar, which specifies the Verhoeff algorithm, or GSTIN, which specifies a base-36 weighted checksum. Independent attempts to reverse-engineer PAN check characters from published samples have not converged on a single reproducible formula. This validator therefore does not claim to verify position 10 algorithmically. It reports the character, explains that it is IT-Department-assigned, and validates every position for which a public specification exists.
Example
Using the obviously-fake sample PAN ABCPD1234E:
| Segment | Value | Meaning |
|---|---|---|
| Series (1–3) | ABC | Issuance series ABC |
| Holder type (4) | P | Individual (Person) |
| Name initial (5) | D | Surname starts with D |
| Sequence (6–9) | 1234 | Number 1234 in this group |
| Check char (10) | E | Assigned by IT Dept |
All three checks pass: the format matches AAAAA9999A, P is a valid holder-type code, and 1234 is within the 0001–9999 range.