The Estonia isikukood (Estonian for “personal code”) is the 11-digit national identification number assigned by the Estonian Population Register to every resident of Estonia. It appears on the national ID card, digital signature certificates, health insurance cards, bank records and countless government forms — making it one of the most widely used data fields in Estonian digital infrastructure. This tool validates an isikukood entirely in your browser, explains every rule it checks, and decodes all the information embedded in the number.
What the code encodes
An isikukood has the structure G YY MM DD SSS C where:
- G — a single digit (1–8) that simultaneously encodes the holder’s gender and birth century. Digits 1 and 2 cover males and females born in the 1900s; 3 and 4 cover the 2000s; 5 and 6 the 2100s; 7 and 8 the 1800s.
- YY — last two digits of the birth year (00–99).
- MM — birth month (01–12).
- DD — birth day (01–31, validated against the actual calendar).
- SSS — a three-digit birth-order serial within the day (001–999). Odd serials are assigned to males; even serials to females — parity must agree with G.
- C — the control (check) digit, computed from the other ten digits using a two-stage mod-11 algorithm.
The two-stage mod-11 checksum algorithm
Estonia uses a more robust control-digit scheme than a simple mod-10: it falls back to a second weight set if the first stage produces an ambiguous result.
Stage 1 — multiply each of the first 10 digits by the weights
[1, 2, 3, 4, 5, 6, 7, 8, 9, 1], sum the products, and take the remainder mod 11.
If the remainder is 0–9, that is the control digit and you are done.
Stage 2 (only reached when Stage 1 gives remainder 10) — repeat with weights
[3, 4, 5, 6, 7, 8, 9, 1, 2, 3]. Take the new sum mod 11. A remainder of 0–9
becomes the control digit. The single remaining edge case — Stage 2 also gives 10 —
is resolved by setting the control digit to 0.
This two-stage design means the control digit is always a single decimal digit (0–9), and the fall-through to Stage 2 makes it much harder to construct collisions by changing one digit.
Worked example with a fake code
Consider the obviously-fake code 39012045677 (used only to illustrate the format):
| Position | Digits | Meaning |
|---|---|---|
| 1 | 3 | Male, born 2000–2099 |
| 2–3 | 90 | Year 2090 within the century |
| 4–5 | 12 | December |
| 6–7 | 04 | Day 4 |
| 8–10 | 567 | Serial 567 (odd → male, matches G=3) |
| 11 | 7 | Control digit |
Stage 1 weighted sum for digits 1–10 (3,9,0,1,2,0,4,5,6,7):
(3×1)+(9×2)+(0×3)+(1×4)+(2×5)+(0×6)+(4×7)+(5×8)+(6×9)+(7×1)
= 3+18+0+4+10+0+28+40+54+7 = 164
164 mod 11 = 10 — remainder is 10, so Stage 2 is triggered.
Stage 2 weights [3,4,5,6,7,8,9,1,2,3]:
(3×3)+(9×4)+(0×5)+(1×6)+(2×7)+(0×8)+(4×9)+(5×1)+(6×2)+(7×3)
= 9+36+0+6+14+0+36+5+12+21 = 139
139 mod 11 = 7 — control digit = 7.
The final digit is therefore 7, giving the complete code 39012045677. Enter it in the tool above to see all four checks pass with the full step-by-step breakdown.
What “valid” means (and does not mean)
A green “valid” verdict confirms four structural properties:
- Digit G is in the range 1–8 (a defined gender/century combination).
- The six birth-date digits form a real calendar date (including leap-year checks for February 29).
- The serial number parity (odd/even) matches the gender declared by G.
- The control digit equals the value produced by the two-stage mod-11 algorithm.
It does not mean the code is registered to any real person or that the person still lives in Estonia. Only authorised access to the Estonian Population Register can confirm real-world registration.
All computation happens locally. No digits you enter are ever transmitted over the network.