VIN Explained: What Every Character in a VIN Number Means
A position-by-position decode of the 17-character VIN per ISO 3779/3780: the WMI, the check-digit math with a worked example, and model-year letter codes.
By FakeName Editorial TeamPublished June 25, 2026Last updated June 25, 20268 min read
A Vehicle Identification Number (VIN) is a 17-character code that uniquely identifies one motor vehicle: who built it, what it is, and where it falls in the production run. Two international standards define it: ISO 3779 covers the VIN's content and structure, and ISO 3780 covers the world manufacturer identifier [iso-3779]. This guide decodes all 17 positions, works through the check-digit math, and maps the model-year letters, with tables you can keep open while you write a parser.
What are the three sections of a 17-character VIN?
A 17-character VIN breaks into three blocks: positions 1-3 are the World Manufacturer Identifier (WMI), positions 4-9 are the Vehicle Descriptor Section (VDS) that describes model, body, engine, and restraint system and ends with the check digit, and positions 10-17 are the Vehicle Identifier Section (VIS) that pins down year, plant, and serial number [iso-3779].
One rule holds across all three blocks: the letters I, O, and Q never appear, because they read too much like the digits 1, 0, and 9. That single constraint is the first thing any validator should check.
| Position | Section | Meaning |
|---|---|---|
| 1 | WMI | Region / country of the manufacturer |
| 2 | WMI | Manufacturer |
| 3 | WMI | Vehicle type or manufacturing division |
| 4 | VDS | Model / line attribute |
| 5 | VDS | Body style or platform |
| 6 | VDS | Engine type |
| 7 | VDS | Restraint system or series |
| 8 | VDS | Model or further descriptor |
| 9 | VDS | Check digit (calculated) |
| 10 | VIS | Model year |
| 11 | VIS | Assembly plant |
| 12-17 | VIS | Sequential production serial number |
ISO does not fix the meaning of positions 4-8; each manufacturer decides how to encode model, body, and engine inside those five slots. That is why a full decode needs a manufacturer-specific lookup table on top of the standard. Only positions 1-3 (WMI), 9 (check digit), and 10 (model year) are standardized across every VIN.
How do you read the WMI (world manufacturer identifier)?
The WMI is the first three characters of a VIN, assigned through SAE International under ISO 3780 [iso-3780][sae-wmi]. Character 1 encodes a broad geographic region, and characters 2-3 narrow it to a specific manufacturer. A builder making fewer than 1,000 vehicles per year carries a 9 in position 3 and is further identified by positions 12-14 rather than position 3 alone.
| First character | Region | Example origin |
|---|---|---|
| 1, 4, 5 | North America | United States |
| 2 | North America | Canada |
| 3 | North America | Mexico |
| 6 | Oceania | Australia / New Zealand |
| 9 | South America | Brazil / Argentina |
| J | Asia | Japan |
| K | Asia | South Korea |
| L | Asia | China |
| S-Z | Europe | United Kingdom, Germany, France, etc. |
| W | Europe | Germany |
The vehicle identification number (VIN) is a structured combination of characters assigned to a vehicle by its manufacturer for identification purposes.
How is the VIN check digit calculated?
The VIN check digit at position 9 is calculated in three steps: transliterate every character to a number, multiply each by a fixed position weight, then sum the products and take the remainder modulo 11 (a remainder of 10 is written as X). In the United States and Canada this digit is mandatory, and the exact algorithm is codified in 49 CFR Part 565 [nhtsa-565].
| Letter | Value | Letter | Value | Letter | Value |
|---|---|---|---|---|---|
| A | 1 | J | 1 | S | 2 |
| B | 2 | K | 2 | T | 3 |
| C | 3 | L | 3 | U | 4 |
| D | 4 | M | 4 | V | 5 |
| E | 5 | N | 5 | W | 6 |
| F | 6 | — | — | X | 7 |
| G | 7 | P | 7 | Y | 8 |
| H | 8 | R | 9 | Z | 9 |
| Position | Weight | Position | Weight |
|---|---|---|---|
| 1 | 8 | 10 | 9 |
| 2 | 7 | 11 | 8 |
| 3 | 6 | 12 | 7 |
| 4 | 5 | 13 | 6 |
| 5 | 4 | 14 | 5 |
| 6 | 3 | 15 | 4 |
| 7 | 2 | 16 | 3 |
| 8 | 10 | 17 | 2 |
| 9 | 0 | — | — |
A worked check-digit example
Take the sample VIN 1M8GDM9AXKP042788. Transliterate each character, multiply by its position weight, and sum the products. Position 9 contributes nothing because its weight is 0. The table below shows every product.
| Pos | Char | Transliterated | Weight | Product |
|---|---|---|---|---|
| 1 | 1 | 1 | 8 | 8 |
| 2 | M | 4 | 7 | 28 |
| 3 | 8 | 8 | 6 | 48 |
| 4 | G | 7 | 5 | 35 |
| 5 | D | 4 | 4 | 16 |
| 6 | M | 4 | 3 | 12 |
| 7 | 9 | 9 | 2 | 18 |
| 8 | A | 1 | 10 | 10 |
| 9 | X | (check) | 0 | 0 |
| 10 | K | 2 | 9 | 18 |
| 11 | P | 7 | 8 | 56 |
| 12 | 0 | 0 | 7 | 0 |
| 13 | 4 | 4 | 6 | 24 |
| 14 | 2 | 2 | 5 | 10 |
| 15 | 7 | 7 | 4 | 28 |
| 16 | 8 | 8 | 3 | 24 |
| 17 | 8 | 8 | 2 | 16 |
The products total 351. Divide by 11: 351 equals 31 x 11 + 10, so the remainder is 10, which the rule writes as X. The ninth character of the VIN is X, so the check digit matches and the VIN is structurally valid. This is the exact routine that runs in our VIN validator. Change any single character or transpose two of them, and the weighted sum almost always lands on a different remainder, exposing the error.
How do VIN model year codes work (position 10)?
Position 10 encodes the model year using a repeating 30-symbol sequence that skips I, O, Q, U, Z, and the digit 0. Because it repeats every 30 years, a single code is ambiguous on its own: the letter A means 1980 and again 2010. In North America, a letter at position 7 generally indicates model year 2010 or later, and a digit indicates 2009 or earlier, which resolves the cycle [nhtsa-565].
| Code | Year (cycle 1) | Year (cycle 2) | Code | Year (cycle 1) | Year (cycle 2) |
|---|---|---|---|---|---|
| A | 1980 | 2010 | Y | 2000 | 2030 |
| B | 1981 | 2011 | 1 | 2001 | 2031 |
| C | 1982 | 2012 | 2 | 2002 | 2032 |
| D | 1983 | 2013 | 3 | 2003 | 2033 |
| E | 1984 | 2014 | 4 | 2004 | 2034 |
| F | 1985 | 2015 | 5 | 2005 | 2035 |
| G | 1986 | 2016 | 6 | 2006 | 2036 |
| H | 1987 | 2017 | 7 | 2007 | 2037 |
| J | 1988 | 2018 | 8 | 2008 | 2038 |
| K | 1989 | 2019 | 9 | 2009 | 2039 |
| L | 1990 | 2020 | M | 1991 | 2021 |
| N | 1992 | 2022 | P | 1993 | 2023 |
| R | 1994 | 2024 | S | 1995 | 2025 |
| T | 1996 | 2026 | V | 1997 | 2027 |
| W | 1998 | 2028 | X | 1999 | 2029 |
The full alphabet in order is A-B-C-D-E-F-G-H-J-K-L-M-N-P-R-S-T-V-W-X-Y, then 1-2-3-4-5-6-7-8-9: exactly 30 symbols. The U.S. requirement to encode model year at position 10 comes from the same regulation that defines the check digit [nhtsa-565], and the broader practice is documented in reference material on the VIN format [wikipedia-vin].
Why do VINs skip the letters I, O, and Q?
VINs omit I, O, and Q everywhere to prevent confusion with the digits 1, 0, and 9 when a VIN is read aloud, handwritten on a title, or scanned by imperfect OCR. This is the cheapest validation check available: if a candidate VIN contains any of those three letters, it is malformed before the check-digit math even runs [iso-3779].
How do you generate and validate test VINs responsibly?
To test registration forms, fleet dashboards, or insurance flows, you need realistic 17-character VINs that pass length, character-set, and check-digit validation without referencing any real vehicle. The fake identity generator assembles VINs from reserved and never-issued patterns and computes a correct check digit, so test data flows through validation cleanly. To confirm a value is well-formed, paste it into the VIN validator, which recomputes the check digit and rejects forbidden characters.
For real vehicles, the official NHTSA vPIC decoder resolves a genuine VIN to manufacturer and specification data [nhtsa-decoder]. Never feed a generated VIN into it expecting a match; generated values intentionally do not correspond to any issued vehicle.
- Length and charset first: reject anything that is not exactly 17 characters drawn from A-Z (minus I, O, Q) and 0-9.
- Then the check digit: apply the transliteration and weight tables above; treat a remainder of 10 as X.
- Be lenient on region: flag a check-digit mismatch as a warning, not a hard failure, for VINs whose WMI indicates a region that does not mandate the check digit.
- Keep it fictional: never seed test data from VINs scraped off real cars, listings, or public records; that risks tying your test environment to a real owner.
References & sources
- ISO 3779:2009 — Road vehicles — Vehicle identification number (VIN) — Content and structure — International Organization for Standardization
- ISO 3780:2009 — Road vehicles — World manufacturer identifier (WMI) code — International Organization for Standardization
- 49 CFR Part 565 — Vehicle Identification Number (VIN) Requirements — U.S. National Highway Traffic Safety Administration / eCFR
- Vehicle identification number — Wikipedia
- VIN Decoder (vPIC) — official VIN lookup service — U.S. National Highway Traffic Safety Administration
- World Manufacturer Identifier (WMI) Registration — SAE International
Frequently asked questions
How many characters are in a VIN?+
A modern VIN is exactly 17 characters: capital letters A-Z (excluding I, O, and Q) and digits 0-9. Vehicles built before 1981 often used shorter VINs of varying lengths, so the 17-character rule only applies to the standardized format defined by ISO 3779.
What does the 9th digit of a VIN mean?+
Position 9 is the check digit. It is calculated from the other 16 characters using fixed transliteration values and position weights, then reduced modulo 11. A result of 10 is written as the letter X. The check digit lets software catch most typos and transcription errors before they propagate.
Which character tells you the model year?+
Position 10 encodes the model year as a single letter or digit. The codes cycle on a 30-year sequence: for example A maps to 1980 and again to 2010, while B maps to 1981 and 2011. To resolve which cycle applies in North America, look at position 7: a letter there generally indicates model year 2010 or later, and a digit indicates 2009 or earlier.
Why do some VINs have an invalid check digit?+
The check digit is mandatory for vehicles sold in North America under U.S. and Canadian regulations, but it is optional in many other regions that follow ISO 3779. Manufacturers in Europe and Asia frequently place a different character at position 9, so a 'failing' check digit does not always mean the VIN is fake.
Can I use a generated VIN on a real vehicle or document?+
No. Generated VINs are for software testing, QA, and form-filling only. Putting a fabricated VIN on a real vehicle, title, registration, or insurance document is fraud and is illegal. Use generated values strictly in test environments.
Where can I check whether a VIN is structurally valid?+
Use the validator at /tools/vin-validator. It confirms the 17-character length, rejects the forbidden letters I/O/Q, recomputes the check digit, and flags malformed structure. It checks format only and does not assert that a vehicle exists.