How to use the vin generator
- Select Generate mode from the dropdown menu.
- Pick a manufacturer WMI code and a model year.
- Click Generate to produce a random vin generator output with a correct check digit.
- Switch to Validate mode to use the built-in vin validator on any 17-character string.
How the VIN check digit is calculated
A Vehicle Identification Number uses position 9 as a check digit computed from the other 16 characters. Each letter maps to a number: A=1, B=2, C=3, D=4, E=5, F=6, G=7, H=8, J=1, K=2, L=3, M=4, N=5, P=7, R=9, S=2, T=3, U=4, V=5, W=6, X=7, Y=8, Z=9. Digits keep their face value. The letters I, O, and Q are never used.
Each of the 17 positions has a weight: 8, 7, 6, 5, 4, 3, 2, 10, 0, 9, 8, 7, 6, 5, 4, 3, 2. Multiply each transliterated value by its weight, sum the products, and take the result modulo 11. If the remainder is 10, the check digit is X; otherwise it is the remainder itself.
For example, the VIN 1M8GDM9AXKP042788 transliterates to 1, 4, 8, 7, 4, 4, 9, 1, 7, 2, 7, 0, 4, 2, 7, 8, 8 (the 9th value is the X in the check position, which has weight 0; K is 2, P is 7). Multiplying each by its weight gives 8, 28, 48, 35, 16, 12, 18, 10, 0, 18, 56, 0, 24, 10, 28, 24, 16, which total 351. Since 351 mod 11 equals 10, the expected check digit is X, and the VIN has an X in position 9, so it passes.
Where the check digit is mandatory: only for North American (and Chinese) VINs. Many European and other VINs do not use this check digit, so a real European VIN can show Invalid VIN here legitimately.
VIN structure reference table
Every 17-character VIN follows a fixed layout defined by ISO 3779 and FMVSS 115. This random vin generator fills each section according to those rules.
| Positions | Name | Description |
|---|---|---|
| 1-3 | WMI | World Manufacturer Identifier, assigned by SAE |
| 4-8 | VDS | Vehicle Descriptor Section: model, body type, engine |
| 9 | Check digit | Calculated value 0-9 or X to detect transcription errors |
| 10 | Model year | Single letter or digit encoding the year |
| 11 | Plant code | Factory where the vehicle was assembled |
| 12-17 | VIS serial | Sequential production number |
Model year codes
Position 10 encodes the model year using a repeating 30-year cycle of letters and digits. The vin number generator on this page supports recent years for development convenience.
| Year | Code |
|---|---|
| 2020 | L |
| 2021 | M |
| 2022 | N |
| 2023 | P |
| 2024 | R |
| 2025 | S |
| 2026 | T |
Note that the letters I, O, Q, U, and Z plus the digit 0 are skipped in the year code sequence to avoid confusion with other characters.
When to use a VIN generator for testing
Developers building automotive applications, dealership management systems, or insurance platforms often need sample data. A random vin generator provides structurally correct identifiers that pass format validation without referencing real vehicles. This is similar to how a credit card generator produces numbers that satisfy the Luhn algorithm for form testing, or how an IMEI generator creates test device identifiers.
The vin validator included here lets you verify any 17-character string against the check digit algorithm before inserting it into your test database. Combined with tools like the fake name generator, you can build complete mock records for integration testing.
Common mistakes when working with VINs
The most frequent error is including the letters I, O, or Q, which are prohibited in all 17 positions because they resemble the digits 1 and 0. Another common issue is transposing two adjacent characters: the weighted checksum catches many but not all transposition errors. For instance, swapping characters whose transliterated values differ by a multiple of 11 after weighting may go undetected.
Some developers assume the check digit guarantees uniqueness. It does not. It only detects single-character substitution errors and most adjacent transpositions. Always treat generated VINs as test data only, never as real vehicle identifiers. If you need unique identifiers for general software purposes, consider a UUID generator instead.
Worked examples
| Example | Input | Result |
|---|---|---|
| Generate Honda 2024 | Mode: generate; Manufacturer (WMI): 1HG; Model Year: 2024 | Generated VIN: 1HGHXW6K8RT204746; WMI: 1HG; Check digit: 8; Model year: 2024 (R) |
| Generate Tesla 2025 | Mode: generate; Manufacturer (WMI): 5YJ; Model Year: 2025 | Generated VIN: 5YJ2D2E03S1278359; WMI: 5YJ; Check digit: 3; Model year: 2025 (S) |
| Validate known good VIN | Mode: validate; VIN to validate: 1M8GDM9AXKP042788 | Input: 1M8GDM9AXKP042788; Check digit: X; Status: Structurally valid |
| Validate all-ones VIN | Mode: validate; VIN to validate: 11111111111111111 | Input: 11111111111111111; Check digit: 1; Status: Structurally valid |
FAQ
Is this random vin generator producing real vehicle numbers?
No. Every output is synthetic test data created for development purposes. While the numbers follow the correct structural format and have valid check digits, they do not correspond to actual manufactured vehicles.
How does the vin check digit calculator work?
It transliterates each letter to a numeric value, multiplies by position-specific weights, sums the products, and takes the result modulo 11. A remainder of 10 becomes X; any other remainder becomes the check digit itself.
Can the vin validator confirm a vehicle exists?
No. The validator only checks that the input is 17 characters long, contains no forbidden letters (I, O, Q), and has a mathematically correct check digit. It cannot query registration databases.
Why are the letters I, O, and Q excluded from VINs?
They are visually similar to the digits 1 and 0, which would cause transcription errors during manual entry or optical scanning.
What WMI codes does this tool support?
The embedded list includes 1HG (Honda), 1FA (Ford), 1G1 (Chevrolet), 5YJ (Tesla), WBA (BMW), WVW (Volkswagen), and JTD (Toyota). These cover common manufacturers for realistic-looking test data.
Does this tool upload my data anywhere?
No. All generation and validation logic runs entirely in your browser. Nothing is sent to any server.
Why does a real European VIN show Invalid VIN?
The position 9 check digit is mandatory only for North American (and Chinese) VINs. Many European VINs do not follow it, so a check digit mismatch does not mean the VIN is fake.