Iceland’s kennitala (plural: kennitalur) is the national identifier issued to every person born in or moving to Iceland, and to every legally registered company or organisation. Unlike many national IDs, it encodes meaningful information directly into its digits — the holder’s date of birth (or a company’s registration date), a century marker, and a mathematically verified check digit. This validator implements the full official specification so you can catch typos in forms, onboarding pipelines, and data imports before they reach a live system.
The tool works entirely in your browser. Nothing you enter is sent over the network.
How it works
A kennitala is always 10 digits (a hyphen after the sixth digit is cosmetic and ignored). The positions carry the following meaning:
| Positions | Field | Notes |
|---|---|---|
| 1–2 | Day (DD) | 01–31 for persons; 41–71 for legal entities (real day + 40) |
| 3–4 | Month (MM) | 01–12 |
| 5–6 | Year (YY) | Last two digits of the year |
| 7–8 | Serial (NN) | Random, ensures uniqueness for the same date |
| 9 | Century indicator (K) | 8 = 1800s, 9 = 1900s, 0 = 2000s |
| 10 | Check digit (C) | Lund weighted mod-11 checksum over positions 1–8 |
The Lund check-digit algorithm
The check digit is calculated over the first eight digits only (the century indicator at position 9 is excluded). Weights 3, 2, 7, 6, 5, 4, 3, 2 are applied in order:
sum = d₁×3 + d₂×2 + d₃×7 + d₄×6 + d₅×5 + d₆×4 + d₇×3 + d₈×2
Then:
- If
sum mod 11 = 0→ check digit = 0 - If
sum mod 11 = 10→ no valid kennitala exists for those eight digits - Otherwise → check digit = 11 − (sum mod 11)
Identifying persons vs. legal entities
The first two digits reveal the holder type. For an individual, the day field is 01–31. For a company or other legal entity, 40 is added to the real registration day, so the field reads 41–71. The validator detects this automatically and labels the result accordingly.
Worked example
Take the obviously-fake kennitala 150385-0098 (do not use as real data):
| Step | Calculation |
|---|---|
| Digits 1–8 | 1, 5, 0, 3, 8, 5, 0, 0 |
| Weighted sum | 1×3 + 5×2 + 0×7 + 3×6 + 8×5 + 5×4 + 0×3 + 0×2 = 3+10+0+18+40+20+0+0 = 91 |
| Remainder | 91 mod 11 = 3 |
| Check digit | 11 − 3 = 8 ✓ (matches position 10) |
| Century indicator | K = 9 → 1900s |
| Full decoded date | Day 15, Month 03, Year 85 → 15 March 1985 |
| Holder type | Day field 15 (≤ 31) → Person |
For a company example, 470605-0006 represents an entity registered on day 7 (= 47 − 40) of June 2005. The K digit is 0, indicating the 2000s.
Formula note
The Lund mod-11 scheme intentionally excludes the century indicator from the weighted sum. This means the same eight-digit prefix with different K values (8, 9, 0) always produces the same check digit — the century is independently verified by range checks, not by the checksum. The consequence is that any input where sum mod 11 = 10 has no valid check digit at all, making that 8-digit combination structurally impossible regardless of what is appended.
Every calculation happens client-side — your kennitala is never transmitted anywhere.