The OIB (Osobni identifikacijski broj — “personal identification number”) is Croatia’s universal 11-digit identifier, introduced in 2009 by the Croatian Tax Administration (Porezna uprava) to consolidate a patchwork of sector-specific IDs. It is assigned to every Croatian citizen, permanent resident, and legal entity, and appears on tax returns, healthcare cards, government forms, employment contracts, and corporate filings. Unlike the older JMBG it replaced, the OIB encodes no personal attributes — there is no birth date, gender, or region hidden in the digits. The only structural property you can verify offline is the check digit in position 11.
This validator implements the real algorithm — ISO 7064 MOD 11,10 — and shows you exactly why a number passes or fails, with a full step-by-step trace of every intermediate value. It is useful for developers integrating with Croatian government APIs, accountants processing cross-border tax documents, HR systems importing employee records, or anyone who just received an OIB and wants to rule out a transcription error before submitting a form.
How the ISO 7064 MOD 11,10 algorithm works
The OIB check digit is computed by the ISO 7064 MOD 11,10 recursive algorithm — the same standard used by the Croatian national bank IBAN check digit, among others. The “MOD 11,10” name comes from two moduli applied alternately in each step.
Starting with a running remainder rem = 10, the algorithm loops over each of the first
ten digits d[0] through d[9]:
- Compute
t = (rem + d[i]) mod 10. Iftequals 0, sett = 10. - Compute the new remainder:
rem = (t * 2) mod 11.
After all ten digits, the check digit is (11 - rem) mod 10.
The validator compares this computed value against the actual 11th digit of the OIB you entered. If they match, the number is well-formed. If not, it tells you what the correct check digit should be.
Why this algorithm is strong
ISO 7064 MOD 11,10 detects:
- Every single-digit substitution (e.g. typing a 7 instead of a 3 in any position).
- Every transposition of two adjacent digits (e.g. swapping positions 4 and 5).
This makes it significantly more robust than a simple weighted-sum checksum, and is the reason Croatian authorities chose it for a number that appears frequently on official forms where transcription errors are common.
Example
For the base number 1234567890 (digits 1–10), running the algorithm yields a final
remainder of 8, so the check digit is (11 - 8) mod 10 = 3. The complete, well-formed OIB
is therefore 12345678903 — an obviously fake sample used here purely to illustrate the
format.
Entering 12345678904 would fail: the algorithm still expects 3, and the validator would show “FAIL — digit should be 3” along with the full trace.
| Position | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| Digit | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | 3 |
| Role | base | base | base | base | base | base | base | base | base | base | check |
Paste any 11-digit number into the tool above and it will recompute the check digit instantly — all inside your browser, with nothing uploaded.