VIN Check Digit Validator

Verify a 17-character VIN check digit (position 9) using the NHTSA algorithm

Ad placeholder (leaderboard)

The ninth character of a North American VIN is a check digit, mathematically derived from the other 16. This validator runs the exact NHTSA algorithm to confirm it matches, catching transposed or mistyped characters that would otherwise slip through. Everything happens in your browser.

How it works

Each character maps to a value, gets multiplied by a positional weight, and the weighted sum is reduced modulo 11:

value(char)   per NHTSA transliteration table (A=1 … with I,O,Q excluded)
weights       8 7 6 5 4 3 2 10 0 9 8 7 6 5 4 3 2   (position 9 weight is 0)
sum           Σ value(charᵢ) × weightᵢ
check digit   sum mod 11, where 10 → "X"
valid         computed check digit == character at position 9

The weight at position 9 is zero, so the check digit never feeds its own calculation. A remainder of 10 is written as X.

Example and tips

Take a VIN ending in a known-good check digit, swap any two adjacent characters, and the validator flips to invalid — that is exactly the class of error it is built to catch. Remember a legitimate non-North-American VIN may fail because it was never assigned a computed check digit, and that an X in position 9 is a normal, valid outcome, not an error.

Ad placeholder (rectangle)