Social Insurance Number
Canada · Individuals
Paste or type the number — punctuation is optional.
Other identifiers
Europe
Asia and the Middle East
Oceania
What this check does — and what it cannot do
This tool checks the number's structure and its check digit, using the published algorithm for that document. A number that passes is well formed: it is arithmetically consistent and could have been issued.
It cannot tell you whether the number was actually issued, whether it is active, or who it belongs to. Only the issuing tax authority can confirm that, through its own lookup service. Treat a passing result as "worth submitting", never as proof of identity.
The generator produces numbers that satisfy the same checksum, for filling forms while developing and testing software. They are arithmetic, not records: they are not drawn from any register and do not correspond to a real holder. No generator is offered for the US Social Security Number.
Luhn catches every single-digit typo — except when 09 becomes 90
The Canadian SIN carries a Luhn check digit, and Luhn is unusually good at its job: across all 81 possible single-digit changes to a valid number, it misses none. Its one documented blind spot is a transposition. Swapping adjacent digits is caught in 44 of the 45 possible pairs — the exception is 0 next to 9, which slips through in either direction.
How it works
- Validates a nine-digit Social Insurance Number using the Luhn algorithm.
- Reports which structural rule failed, rather than only that something did.
- Is explicit that a passing checksum means digit consistency, not that the number was ever issued.
Luhn over 9 digits: double every second digit from the left (positions 2, 4, 6, 8) if a doubled value exceeds 9, subtract 9 sum every digit valid when the total is divisible by 10 about 1 in 10 random nine-digit strings passes by chance
Worked example
One valid number, the same number with a typo, and the error classes Luhn does and does not catch.
- 046454286 → valid
- 046454287 → invalid (last digit changed)
- all 81 single-digit substitutions tested → 0 slipped through
- 44 of 45 adjacent transpositions → caught
- 0 next to 9 swapped → NOT caught
Luhn is a complete defence against single-digit typing errors and very nearly complete against transpositions. The 09/90 gap is a known property of the algorithm, not an implementation flaw, and it is the reason critical systems pair Luhn with a second check.
Reading the result
- This is the practical opposite of the US SSN, which has no check digit at all. A mistyped SSN almost always produces another structurally valid SSN; a mistyped SIN is caught immediately. Two national identifiers, two completely different guarantees.
- Roughly one random nine-digit string in ten passes Luhn, so a valid checksum is weak evidence on its own. It proves the digits are internally consistent and nothing whatsoever about issuance.
- The first digit encodes the province or region of registration, and 8 is not assigned. Numbers beginning 9 are issued to temporary residents and carry an expiry, which matters for employment eligibility in a way the checksum cannot express.
- Treat a SIN as among the most sensitive fields you can hold. Most systems that believe they must store one do not, and the only authoritative confirmation comes from Service Canada rather than from any offline calculation.
Common questions
- Does a valid checksum mean the SIN is real?
- No. It means the nine digits are arithmetically consistent, which about one random string in ten also achieves. Confirming a number was actually issued requires Service Canada; nothing computed offline can establish it.
- Which typos will slip past the check?
- Single-digit errors never do — all 81 possibilities were tested and all were caught. Adjacent transpositions almost never do either, with one exception: swapping a 0 and a 9 that sit next to each other passes in both directions.