valid test VINs · runs locally · nothing uploaded

The VIN Check Digit (Position 9), Worked by Hand

Position 9 of a VIN is a check digit — a single character (09 or X) computed from the other 16 characters with a weighted mod-11 formula. It catches typos: change any one character and the check digit almost always stops matching. Here is the exact calculation on a real generated VIN.

Worked example: KM8K2CAA8MU509226

Each character is turned into a number (transliteration), multiplied by its position weight, and summed. Position 9 itself has weight 0, so it never affects its own value.

PosCharValueWeightProduct
1K2816
2M4728
388648
4K2510
52248
6C339
7A122
8A11010
9 *8800
10M4936
11U4832
1255735
130060
1499545
152248
162236
1766212

Sum of products = 305. Then 305 mod 11 = 8. So the check digit is 8 — which matches position 9 of the VIN (8). (* = the check-digit position.)

The two lookup tables

Transliteration (letter → number)

Digits map to themselves. Letters map as: A/J=1, B/K/S=2, C/L/T=3, D/M/U=4, E/N/V=5, F/W=6, G/P/X=7, H/Y=8, R/Z=9. The letters I, O and Q are never used in a VIN.

Position weights

From position 1 to 17: 8 7 6 5 4 3 2 10 0 9 8 7 6 5 4 3 2. Position 9 has weight 0 (it is the result), position 8 has weight 10.

Decode a VIN (check digit verified live) → · Why a VIN shows as invalid →

Frequently asked questions

What is the check digit in a VIN?

It is the 9th character — a mod-11 checksum over the other 16 characters. It is 09, or X when the remainder is 10. Its only job is to catch mistyped VINs.

How do you calculate a VIN check digit?

Transliterate each character to a number, multiply by the position weight (8,7,6,5,4,3,2,10,0,9,8,7,6,5,4,3,2), sum the products, and take the sum mod 11. A remainder of 10 is written as X. That result must equal position 9.

What does a check digit of X mean?

X is not a letter here — it is how the value 10 is written, which happens whenever the mod-11 remainder is exactly 10. It is a perfectly valid check digit.