The Austrian SVNR (Sozialversicherungsnummer) is the 10-digit social-security number used across Austria’s health (Krankenversicherung), pension (Pensionsversicherung) and unemployment insurance (Arbeitslosenversicherung) systems. This validator decodes the serial number and the date of birth packed inside it, and verifies the weighted modulo-11 check digit — useful for developers, HR systems and administrators catching mistyped numbers before data reaches a backend.
Structure of the SVNR
The SVNR is formatted as LLLP DDMMYY — ten digits total:
- LLL (positions 1–3) — a 3-digit running serial number assigned by the insurance authority.
- P (position 4) — the check digit.
- DDMMYY (positions 5–10) — the holder’s date of birth: day, month, and two-digit year.
Because two-digit years are ambiguous, the century is inferred from context (typically 19xx for historical records and 20xx for births from 2000 onward, depending on the issuing system).
How the check digit is computed
The check digit is calculated from the other nine digits using a fixed weight vector:
positions: 1 2 3 _ 5 6 7 8 9 10
weights: 3 7 9 (skip) 5 8 4 2 1 6
Multiply each digit by its weight, sum all nine products, then take the result modulo 11. That remainder is the check digit. If modulo 11 gives 10, the serial is considered invalid and is re-allocated — so a well-formed SVNR never has a 10 in position 4.
Worked example
SVNR: 1237 010180
| Position | Digit | Weight | Product |
|---|---|---|---|
| 1 | 1 | 3 | 3 |
| 2 | 2 | 7 | 14 |
| 3 | 3 | 9 | 27 |
| 5 | 0 | 5 | 0 |
| 6 | 1 | 8 | 8 |
| 7 | 0 | 4 | 0 |
| 8 | 1 | 2 | 2 |
| 9 | 8 | 1 | 8 |
| 10 | 0 | 6 | 0 |
| Sum | 62 |
62 mod 11 = 7 → matches the stated check digit in position 4 → valid.
Decoded date of birth: 01.01.1980 (day 01, month 01, year 80 → 1980).
What validation confirms and what it does not
A passing check digit means the number is internally consistent and the embedded birth date is plausible. It does not confirm that the SVNR was ever issued to a real person or belongs to the individual you are checking — only the Dachverband der österreichischen Sozialversicherungsträger holds that register. Use this tool for pre-validation in data entry and HR workflows to catch typos before they propagate; treat a passing result as a necessary but not sufficient condition for identity confirmation. All processing happens locally in your browser.
The error-detection math behind modulo 11
The choice of 11 (a prime) and of distinct non-zero weights is what gives the
SVNR its typo resistance. Altering any single digit changes the weighted sum by
(new − old) × weight, and because no weight is a multiple of 11, that change
can never be a multiple of 11 — so every single-digit error is detected.
Swapping two digits changes the sum by the digit difference times the weight
difference, which the distinct weights also make non-zero mod 11 in the common
adjacent-swap cases. A plain digit-sum check catches neither of these reliably,
which is why virtually all European social-insurance numbers use a weighted
prime-modulus scheme instead.
The flip side: about one in eleven random 10-digit strings passes. A green result filters out transcription noise; it is not evidence the number exists in the register.
The embedded date is indicative, not guaranteed
The DDMMYY block usually equals the holder’s date of birth, but not always.
When all serial numbers for a given birth date are exhausted, or the exact
birth date is unknown at registration, the authority can assign a number whose
date block differs from the person’s actual birthday. Consequences for
software:
- Never use the SVNR date as the authoritative date of birth. Store DOB as its own field and treat the decoded date as a plausibility cross-check, not a source of truth.
- Don’t reject a record just because SVNR date ≠ entered DOB. Flag it for review instead — a mismatch is rare but legitimate.
- Store the SVNR as a string. A leading-zero serial (
012…) silently becomes 9 digits if the field is numeric, and the length check will then fail. The display convention isLLLP DDMMYYwith a space after the fourth digit, but comparisons should always run on the raw 10 digits.
Where the SVNR appears and common pitfalls
The SVNR is printed on the Austrian e-card (the national health insurance card) and appears on payslips, pension statements, and medical records. When entering it from a scanned or photographed document, three mistakes account for most check-digit failures:
- Two-digit-year ambiguity. The embedded
YYcannot distinguish 1925 from 2025 on its own. The check digit still validates either way; the century is inferred from context by the consuming system, not by the number itself. - Serial-number leading zeros. The 3-digit serial can start with a zero (
012). Stripping it turns a 10-digit SVNR into a 9-digit string that fails the length check. - OCR digit confusion. A
1/7or6/8swap changes the weighted sum and almost always breaks the modulo-11 result — which is exactly what the check digit exists to catch.
Because a check digit of 10 is never issued, a serial that would resolve to 10 is skipped at allocation, so a well-formed SVNR always carries a check digit in the range 0–9.
Sources and references
- Dachverband der österreichischen Sozialversicherungsträger — the authority that issues and maintains the SVNR register
- oesterreich.gv.at — Sozialversicherungsnummer — official public information on the Austrian social-security number and e-card
Maintained by the Gera Tools editorial team. The weight vector (3,7,9,5,8,4,2,1,6) and modulo-11 rule are the published SVNR check-digit algorithm; this tool validates structure and the embedded date only and contacts no register. Last reviewed 2026-07-02.