Slovenia EMŠO Validator

Verify any Slovenian EMŠO number and decode its birth date, gender, and region.

Ad placeholder (leaderboard)
Enjoying the tools? Go Pro for £4.99 (one-time) and remove all ads — forever, on this device. Remove ads — £4.99

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:

PositionsFieldMeaning
1–2DDDay of birth (01–31)
3–4MMMonth of birth (01–12)
5–7YYYLast three digits of birth year
8–9RRRepublic / region code
10–12SSSSequence within the birth-day and region
13CCheck 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:

SegmentValueMeaning
DD011st of the month
MM01January
YYY990Year → 1000 + 990 = 1990
RR50Foreign national / non-resident
SSS001Sequence 001 — Male
C2Check 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.

Ad placeholder (rectangle)