Position nine of a VIN is a check digit computed by transliterating letters to numbers, applying positional weights and taking modulo 11. Get it right and your validator passes; get it wrong and you never reach the code you meant to test.
What you can control
- The check digit is computed with the real ISO 3779 algorithm — or deliberately broken, to test your rejection path.
- Position ten encodes the model year, so the VIN and the year column agree.
- The first character reflects the manufacturing region: 1–5 North America, S–Z Europe, J–R Asia.
- The VIN alphabet correctly excludes I, O and Q, which are never used because they resemble digits.
What this is not
These VINs are structurally valid but correspond to no manufactured vehicle. A lookup against a registration or history database will return nothing.
Questions
Why are I, O and Q excluded?
Because they are too easily confused with 1 and 0 on a stamped plate. The VIN standard omits all three from the permitted character set.
What does position ten encode?
The model year, on a thirty-year cycle that alternates between letters and digits. It is why a 1995 and a 2025 vehicle can share a year code.
Can I break the check digit deliberately?
Yes. Turn the check-digit option off and position nine is filled randomly, which produces VINs your validator should reject.