Position 9 of a VIN is a check digit — a single character (0–9 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.
KM8K2CAA8MU509226Each 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.
| Pos | Char | Value | Weight | Product |
|---|---|---|---|---|
| 1 | K | 2 | 8 | 16 |
| 2 | M | 4 | 7 | 28 |
| 3 | 8 | 8 | 6 | 48 |
| 4 | K | 2 | 5 | 10 |
| 5 | 2 | 2 | 4 | 8 |
| 6 | C | 3 | 3 | 9 |
| 7 | A | 1 | 2 | 2 |
| 8 | A | 1 | 10 | 10 |
| 9 * | 8 | 8 | 0 | 0 |
| 10 | M | 4 | 9 | 36 |
| 11 | U | 4 | 8 | 32 |
| 12 | 5 | 5 | 7 | 35 |
| 13 | 0 | 0 | 6 | 0 |
| 14 | 9 | 9 | 5 | 45 |
| 15 | 2 | 2 | 4 | 8 |
| 16 | 2 | 2 | 3 | 6 |
| 17 | 6 | 6 | 2 | 12 |
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.)
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.
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 →
It is the 9th character — a mod-11 checksum over the other 16 characters. It is 0–9, or X when the remainder is 10. Its only job is to catch mistyped VINs.
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.
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.