How to use the VIN generator
- Choose the Mode: Generate test VINs or Validate a VIN.
- To generate, set the Model year (1980 to 2039) and How many VINs (up to 200), then press Generate.
- To validate, type the 17-character VIN. Case does not matter.
- Read the list, or the checker’s Result, Check digit given, Check digit expected, Region (by first character), WMI and Model year code.
What it does and when to use it
A VIN identifies one vehicle. Dealer systems, insurance quote forms, fleet and parts apps all validate VINs, and their developers need test numbers that pass that validation without belonging to a customer. This tool makes such values, and it lets you set the model year so that year-dependent logic, such as pricing rules, can be tested too.
The checker is handy when a VIN from a form or a photo is rejected: it shows the check digit the rest of the number needs, so you can spot a misread character.
For other format-valid test identifiers, see the IBAN generator and the ISIN generator. For example plates to go with a test vehicle, use the licence plate generator.
How it works
A VIN is 17 characters from 0–9 and A–Z without I, O and Q. The tool builds a test VIN like this, with every random character from crypto.getRandomValues:
- Positions 1–8: random characters (the first three are the manufacturer code, or WMI).
- Position 10: the model-year code. The codes run A–H, J–N, P, R–T, V–Y, then 1–9, and start again every 30 years; 2026 is T.
- Position 11: a random plant character; positions 12–17: random digits.
- Position 9: the check digit. Each character gets a value (digits as themselves, letters from a fixed table), each value is multiplied by its position weight (8, 7, 6, 5, 4, 3, 2, 10, 0, 9, 8, 7, 6, 5, 4, 3, 2), and the total is divided by 11. The remainder is the check digit, with 10 written as X.
Worked examples
- The classic example VIN.
1M8GDM9AXKP042788givesResult: ValidandCheck digit expected: X, region North America, WMI 1M8 andK = 1989 or 2019. - One character changed.
1M8GDM9A1KP042788has 1 where X belongs, soResult: Invalid. - A forbidden letter. Ending the VIN with the letter O instead of zero gives “VINs never contain I, O or Q.”
- Test VINs for 2026. One run gave
4R93E9XY4TS346408: the tenth character is T, and the note says the manufacturer code is random.
Limits and tips
- Region is a rough guide from the first character only; it is not a country lookup.
- Generated VINs do not decode to a real make, model or engine.
- Pre-1981 vehicles used shorter, non-standard numbers, which this tool does not handle.
Frequently asked questions
Are these real vehicles?
Why does a real European VIN show as Invalid?
Why does the model year show two possible years?
Can this tool tell me who owns a car or its history?
How do we know nothing is uploaded? Test it yourself on the privacy proof page.