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.

PositionSectionMeaning
1WMIRegion / country of the manufacturer
2WMIManufacturer
3WMIVehicle type or manufacturing division
4VDSModel / line attribute
5VDSBody style or platform
6VDSEngine type
7VDSRestraint system or series
8VDSModel or further descriptor
9VDSCheck digit (calculated)
10VISModel year
11VISAssembly plant
12-17VISSequential production serial number
Position-by-position map of a 17-character VIN (ISO 3779).

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 characterRegionExample origin
1, 4, 5North AmericaUnited States
2North AmericaCanada
3North AmericaMexico
6OceaniaAustralia / New Zealand
9South AmericaBrazil / Argentina
JAsiaJapan
KAsiaSouth Korea
LAsiaChina
S-ZEuropeUnited Kingdom, Germany, France, etc.
WEuropeGermany
First-character WMI region codes (representative ranges).
The vehicle identification number (VIN) is a structured combination of characters assigned to a vehicle by its manufacturer for identification purposes.
ISO 3779, Road vehicles — Vehicle identification number (VIN) — Content and structure

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].

LetterValueLetterValueLetterValue
A1J1S2
B2K2T3
C3L3U4
D4M4V5
E5N5W6
F6X7
G7P7Y8
H8R9Z9
VIN transliteration values. Digits map to themselves; letters use the table below. I, O, Q are excluded.
PositionWeightPositionWeight
18109
27118
36127
45136
54145
63154
72163
810172
90
Position weights. Position 9 (the check digit itself) carries weight 0 so it never affects its own result.

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.

PosCharTransliteratedWeightProduct
11188
2M4728
388648
4G7535
5D4416
6M4312
799218
8A11010
9X(check)00
10K2918
11P7856
120070
1344624
1422510
1577428
1688324
1788216
Worked check-digit calculation for 1M8GDM9AXKP042788. Sum of products = 351.

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].

CodeYear (cycle 1)Year (cycle 2)CodeYear (cycle 1)Year (cycle 2)
A19802010Y20002030
B19812011120012031
C19822012220022032
D19832013320032033
E19842014420042034
F19852015520052035
G19862016620062036
H19872017720072037
J19882018820082038
K19892019920092039
L19902020M19912021
N19922022P19932023
R19942024S19952025
T19962026V19972027
W19982028X19992029
Model-year codes at position 10, showing both 30-year cycles.

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

  1. ISO 3779:2009 — Road vehicles — Vehicle identification number (VIN) — Content and structureInternational Organization for Standardization
  2. ISO 3780:2009 — Road vehicles — World manufacturer identifier (WMI) codeInternational Organization for Standardization
  3. 49 CFR Part 565 — Vehicle Identification Number (VIN) RequirementsU.S. National Highway Traffic Safety Administration / eCFR
  4. Vehicle identification numberWikipedia
  5. VIN Decoder (vPIC) — official VIN lookup serviceU.S. National Highway Traffic Safety Administration
  6. World Manufacturer Identifier (WMI) RegistrationSAE 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.

We use cookies for analytics and ads to keep this generator free. See our Privacy Policy.