The EMŠO (Enotna matična številka občana — “Unique Citizen Registration Number”) is the 13-digit personal identifier used in Slovenia and, under the name JMBG, across the other successor states of the former Socialist Federal Republic of Yugoslavia. The number encodes a person’s date of birth, the republic or region they were registered in, a sequence number (which also encodes gender), and a check digit that protects against single-digit transcription errors.
This validator decodes all six fields from the raw digits and verifies the check digit against the official JUS I.D0.021 weighted-modulus algorithm. Everything runs in your browser — the number never touches a server.
Structure of the 13 digits
An EMŠO follows the fixed layout DDMMYYYRRSSSC:
| Positions | Field | Meaning |
|---|---|---|
| 1–2 | DD | Day of birth (01–31) |
| 3–4 | MM | Month of birth (01–12) |
| 5–7 | YYY | Last three digits of birth year |
| 8–9 | RR | Republic / region code |
| 10–12 | SSS | Sequence within the birth-day and region |
| 13 | C | Check digit |
The birth year uses only three digits, which means the full year must be inferred. The standard convention is: if YYY is in the range 000–099, the year is 2000 + YYY; if it is 100–999, the year is 1000 + YYY (in practice 1100–1999 for anyone alive today, most commonly 1900–1999 using digits 900–999).
Gender is derived from the three-digit sequence (SSS): values 000–499 are assigned to males and 500–999 to females — not stored explicitly, but fully recoverable.
How it works — the JUS I.D0.021 checksum
The algorithm multiplies each of the first 12 digits by a cycling weight sequence and reduces the sum modulo 11:
S = 7·d₁ + 6·d₂ + 5·d₃ + 4·d₄ + 3·d₅ + 2·d₆ + 7·d₇ + 6·d₈ + 5·d₉ + 4·d₁₀ + 3·d₁₁ + 2·d₁₂
Then:
- If S mod 11 = 0 or S mod 11 = 1: check digit = 0
- Otherwise: check digit = 11 − (S mod 11)
The two edge cases where the remainder is 0 or 1 both yield check digit 0 because the sequence space that would produce check digits 10 or 11 is reserved and never officially issued. Clicking Show checksum steps inside the tool renders the complete per-digit product table so you can follow every multiplication and verify the arithmetic by hand.
Worked example
Take the obviously fictitious EMŠO 0101990500012:
| Segment | Value | Meaning |
|---|---|---|
| DD | 01 | 1st of the month |
| MM | 01 | January |
| YYY | 990 | Year → 1000 + 990 = 1990 |
| RR | 50 | Foreign national / non-resident |
| SSS | 001 | Sequence 001 — Male |
| C | 2 | Check digit |
Weighted sum: 7×0 + 6×1 + 5×0 + 4×1 + 3×9 + 2×9 + 7×0 + 6×5 + 5×0 + 4×0 + 3×0 + 2×1
= 0 + 6 + 0 + 4 + 27 + 18 + 0 + 30 + 0 + 0 + 0 + 2 = 87.
87 mod 11 = 10 → this is neither 0 nor 1, so check digit = 11 − 10 = 1 — but the
number above has check digit 2, so that string is deliberately invalid for demonstration.
Replace the last digit with 1 (i.e. 0101990500011) and the checksum passes.
This example uses an obviously fake sequence — no birth-date lookup, no real person.
Formula note
The modular check: C = (rem === 0 || rem === 1) ? 0 : 11 − rem, where
rem = S mod 11 and S is the sum of the 12 weighted products. Defined in Yugoslav
federal standard JUS I.D0.021, adopted without change by the Slovenian civil registry
after independence in 1991.