Reference
How to read a VIN
Every vehicle built for the US market since 1981 carries the same seventeen-character structure, defined by ISO 3779 and 49 CFR Part 565.
The three sections
A VIN divides into three parts. The first three characters identify who built it, the next five describe what it is, and the last eight identify which particular one it is.
Positions 1–3 — World Manufacturer Identifier
The WMI identifies the manufacturer and the region where the WMI was assigned. Note the wording: it indicates where the identifier was issued, which is usually but not always where the vehicle was assembled. A US-badged car built in Mexico carries a 3.
| First character | Region | Examples |
|---|---|---|
| A–C | Africa | AA–AH South Africa |
| J–R | Asia | J Japan · KL–KR South Korea · L China · MA–ME India · NL–NR Türkiye |
| S–Z | Europe | SA–SM United Kingdom · SN–ST and W Germany · VF–VR France · ZA–ZR Italy |
| 1–5 | North America | 1, 4, 5 United States · 2 Canada · 3 Mexico |
| 6–7 | Oceania | 6A–6W Australia · 7A–7E New Zealand |
| 8–9 | South America | 8A–8E Argentina · 9A–9E and 93–99 Brazil |
Positions 4–8 — Vehicle Descriptor Section
The VDS describes the vehicle: model, body style, engine, restraint system, transmission. There is no universal standard for what each position means — each manufacturer assigns its own scheme and files it with NHTSA. This is why decoding a VIN requires a database rather than arithmetic.
Position 9 — check digit
A checksum computed from the other sixteen characters. It catches most transcription errors. See how the check digit works for the arithmetic.
Positions 10–17 — Vehicle Identifier Section
Position 10 is the model year. Position 11 is the assembly plant, assigned by the manufacturer. Positions 12 to 17 are the production sequence number — effectively the serial number of that individual vehicle coming off the line.
See model year codes for the position 10 table.
The letters that never appear
I, O and Q are excluded from VINs entirely, because they are too easily confused with 1 and 0. If you think you are reading one of those letters, you are reading a digit. Our decoder substitutes them automatically and tells you when it has.