| Position | Field | Description |
|---|---|---|
| 1–2 | YY | Last two digits of birth year |
| 3–4 | MM | Birth month (01–12) |
| 5–6 | DD | Birth day (01–31) |
| 7–8 | PB | Place of birth — state code (domestic) or country code (foreign-born) |
| 9–11 | ### | Sequence number assigned by JPN's system |
| 12 | G | Gender + Checksum — Odd = Male, Even = Female |
Since YY is only two digits, the century is inferred from the first digit of the sequence number (position 9):
| Seq 1st Digit | Century | Year Range | Example |
|---|---|---|---|
| 0, 1, 2, 3, 4 | 2000s | 2000–2099 | YY=05, seq=023x → 2005 |
| 5, 6, 7, 8, 9 | 1900s | 1900–1999 | YY=89, seq=678x → 1989 |
The 12th digit serves dual purpose: it is both the ISO 7064 Mod 11,2 checksum and the gender indicator (odd = male, even = female). This works because JPN's system iterates sequences until both conditions are met.
Assignment algorithm (theory):
Worked example: Male, born 1 Jan 2000, Sarawak (PB=13)
Since Mod 11 produces results 0–10, any sequence where C = 10 has no single-digit representation and is permanently excluded (~9.1% of all sequences). This leaves roughly equal capacity for male and female assignments.
| Card | Issued To | Notes |
|---|---|---|
| MyKad | Malaysian citizens aged 12+ | Standard 12-digit IC number |
| MyKid | Malaysian citizens under 12 | Same format, issued to minors |
| MyPR | Permanent residents | Same format, assumed same checksum |
| MyKAS | Temporary residents | Same format, less tested with checksum |
| MyTentera | Military personnel | Variant with military extensions |
The checksum algorithm is community-researched and NOT officially confirmed by JPN (Jabatan Pendaftaran Negara). Do not rely on it as sole validation. A passing checksum does not mean an IC number is assigned to a real person.
This tool generates fictitious IC numbers for development and testing purposes only. Any resemblance to real persons is entirely coincidental.
Standards & resources: