Introduction
Every vehicle sold since 1981 carries a 17-character Vehicle Identification Number stamped on the dashboard and door frame. That string is not a random serial. It is a structured code defined by ISO 3779, encoding the manufacturer, country of origin, vehicle attributes, model year, assembly plant, and production sequence, all guarded by a mod-11 check digit. This VIN decoder breaks the 17 characters into their WMI, VDS, and VIS sections, validates the check digit, and resolves the model year code. Paste a VIN above and the breakdown appears instantly. Nothing is sent to a server.
What this tool does
- Decodes any 17-character VIN per ISO 3779 into its three sections: WMI (chars 1-3), VDS (chars 4-9), and VIS (chars 10-17).
- Validates the check digit at position 9 using the mod-11 algorithm with the standard transliteration table and position weights, reporting whether the computed value matches the actual digit.
- Resolves the WMI prefix to a manufacturer and country using a built-in lookup table covering common prefixes from North America, Europe, Japan, Korea, and India.
- Decodes the model year code at position 10, which cycles through letters and numbers every 30 years (A=1980, B=1981, up to 9=2039).
- Rejects invalid characters: VINs never contain the letters I, O, or Q because they are too easily confused with digits 1 and 0.
- Produces a position-by-position table showing each character, its section, and its meaning within the VIN structure.
How this tool works
Type or paste a VIN into the input field. The tool normalizes it by uppercasing and stripping spaces and hyphens, then checks three things: length (exactly 17 characters), character validity (alphanumeric excluding I, O, Q), and the check digit at position 9.
For the check digit, the tool transliterates each character to a numeric value using the ISO 3779 table (A=1, B=2, ... H=8, J=1, K=2, and so on, with 0-9 mapping to themselves). It multiplies each value by its position weight (8, 7, 6, 5, 4, 3, 2, 10, skip position 9, 9, 8, 7, 6, 5, 4, 3, 2), sums the products, and takes the remainder modulo 11. If the remainder is 10, the check digit is X. Otherwise the check digit is the remainder itself. The tool compares this computed value against the actual character at position 9 and flags a mismatch.
The WMI (characters 1-3) is looked up in a manufacturer table. The model year code (character 10) is decoded against the 30-year cycle table. The output panel shows the full position breakdown, the check digit validation result, and any errors found.
How VIN decoding works (ISO 3779)
The VIN standard is defined in ISO 3779:2009, which specifies the 17-character format and the three-section structure. The World Manufacturer Identifier (WMI) occupies positions 1-3 and identifies the country and manufacturer. The first character encodes the country: 1-5 for North America, J for Japan, W for Germany, S for the UK, and so on. The Vehicle Descriptor Section (VDS, positions 4-9) contains manufacturer-specific attributes like body style, engine type, and restraint system, with position 9 reserved for the check digit. The Vehicle Identifier Section (VIS, positions 10-17) encodes the model year, assembly plant, and serial number.
The check digit algorithm is specified in SAE J853 and enforced by NHTSA regulation 49 CFR Part 565. It uses a weighted sum modulo 11 to catch transcription errors. The transliteration table maps letters to numbers, skipping I, O, and Q entirely. The position weights are fixed: 8, 7, 6, 5, 4, 3, 2, 10, 0 (check digit position), 9, 8, 7, 6, 5, 4, 3, 2. A remainder of 10 is written as X.
The model year code at position 10 cycles through a 30-year sequence. Letters A through Y (excluding I, O, Q, U) cover 1980-2000, then digits 1 through 9 cover 2001-2009, then the cycle repeats with A for 2010. This means a single character can map to two possible years 30 years apart, so context (the vehicle's known age) disambiguates. The same validation principle, a modular checksum over a structured identifier, appears in the IBAN Validator for bank account numbers.
How to use this tool
- Paste a 17-character VIN into the input field. Spaces and hyphens are stripped automatically, and the input is uppercased.
- Check the Valid indicator at the top of the settings panel. If the VIN has fewer or more than 17 characters, or contains I, O, or Q, the tool lists the specific errors.
- Review the WMI section (chars 1-3) to see the resolved manufacturer and country of origin.
- Check the check digit panel. It shows the actual digit at position 9 and the computed value, with a VALID or INVALID label.
- Read the model year from char 10, the assembly plant code from char 11, and the 6-digit serial number from chars 12-17.
- Scroll through the position breakdown table to see every character mapped to its section and meaning.
Real-world examples
Decoding a 2018 Honda Civic VIN
Input: `1HGFC2A69JL000000`. The tool identifies WMI `1HG` as Honda (USA). Position 9 is `6`, and the mod-11 computation confirms the check digit is valid. Position 10 is `J`, which decodes to model year 2018. The VIS section shows assembly plant code `L` and serial number `000000`. The VDS section `FC2A69` contains Honda-specific vehicle descriptor codes that vary by manufacturer.
Catching a transcribed VIN error
A dealership clerk copies a VIN from a printed form but mistypes position 5 as `O` instead of `0`. The tool flags two errors: the character `O` is not allowed in VINs (confused with zero), and even if it were a valid character, the check digit would no longer match. This is exactly the kind of single-character transcription error the mod-11 check digit was designed to catch, since the weighted sum changes by a non-zero amount for any single-position substitution.
Identifying a European import
Input: `WBA7E2C50JG000000`. The WMI `WBA` resolves to BMW (Germany). The first character `W` indicates Germany per the ISO 3780 country code convention. Position 10 `J` maps to 2018. This tells a used-car buyer the vehicle was manufactured in Germany for the European market, which may affect emissions equipment and parts availability compared to a US-market BMW with a `WBA` prefix but different VDS codes.
Resolving an ambiguous model year
Input: `1FTFW1R6XDFC00000`. Position 10 is `D`, which maps to both 1983 and 2013. The tool picks the most plausible year (2013) based on the current date. A Ford F-150 with this VIN is almost certainly a 2013 model, not 1983, because the WMI `1FT` (Ford USA truck) was not assigned in 1983 and the vehicle descriptor codes match the 2013 platform. For vehicles near the 30-year boundary, the VDS codes and manufacturer history resolve the ambiguity.
Comparison with similar methods
| Method | Complexity | Typical use |
|---|---|---|
| VIN (ISO 3779) | 17 chars, mod-11 check digit, 3 sections | Vehicle identification, registration, recalls |
| IBAN (ISO 13616) | 15-32 chars, mod-97 checksum, country-specific | International bank transfers, SEPA payments |
| ISBN-13 | 13 digits, mod-10 check digit | Book identification, publishing catalogs |
| EAN-13 barcode | 13 digits, mod-10 check digit | Retail product identification |
| Luhn (credit cards) | 13-19 digits, mod-10 Luhn algorithm | Payment card number validation |
Limitations or considerations
This tool decodes the structural elements defined by ISO 3779: the WMI, VDS, VIS split, the check digit, and the model year code. It does not decode the manufacturer-specific VDS attributes (positions 4-8) because those codes are proprietary and vary by manufacturer. A VIN like `1HGFC2A69JL000000` will show `FC2A69` as the VDS but will not tell you the engine size or trim level, because Honda does not publish that mapping publicly.
The WMI lookup table covers the most common prefixes but is not exhaustive. If a WMI is not in the table, the tool reports "Unknown manufacturer" rather than guessing. For a complete WMI database, consult the NHTSA manufacturer query. The model year code can map to two years 30 years apart; the tool picks the most recent plausible one, but for vehicles near the boundary you may need to confirm with the manufacturer.
This tool validates format and check digit integrity. It does not verify that the VIN exists in a registration database or that the vehicle has not been reported stolen. For that, use the NHTSA VIN lookup or a commercial vehicle history service.
Frequently asked questions
Why do VINs exclude the letters I, O, and Q?
These letters are visually similar to the digits 1 and 0. The ISO 3779 standard excludes them to reduce transcription errors when VINs are read from printed documents, stamped metal plates, or handwritten forms. The same logic excludes the letter U from the model year code table to avoid confusion with the letter V.
What does the check digit at position 9 actually detect?
The mod-11 check digit catches all single-character substitutions and most transpositions of adjacent characters. It uses weighted position values (8, 7, 6, 5, 4, 3, 2, 10, 0, 9, 8, 7, 6, 5, 4, 3, 2) so that swapping two characters changes the weighted sum by a non-zero amount in almost every case. This is the same error-detection principle used in the IBAN Validator, which uses mod-97 for bank account numbers.
Can the model year code map to two different years?
Yes. The model year code cycles every 30 years. The letter A maps to both 1980 and 2010. The letter S maps to both 1995 and 2025. The tool picks the most recent plausible year based on the current date, but for vehicles near the 30-year boundary you should confirm with the VDS codes or manufacturer records.
How do I find the manufacturer from a VIN?
The first three characters form the WMI (World Manufacturer Identifier). The first character encodes the country, and the full three-character prefix identifies the manufacturer. This tool looks up common WMIs automatically. For a complete lookup, use the NHTSA vPIC API at vpic.nhtsa.dot.gov, which is the official US government source for WMI assignments.
Is a valid check digit proof that a VIN is real?
No. A valid check digit only proves the VIN is internally consistent and was not corrupted during transcription. It does not prove the VIN exists in a registration database or corresponds to an actual vehicle. Someone can construct a syntactically valid VIN that passes the check digit test but does not match any registered car.
Conclusion
A VIN is a compact, structured identifier that encodes a vehicle's origin, attributes, and production sequence in 17 characters, protected by a mod-11 check digit. This decoder splits the string into its ISO 3779 sections and validates the check digit so you can catch transcription errors before they propagate into registration or insurance systems. For other structured identifier validators, see the IBAN Validator for bank account numbers or the Cron Expression Parser for schedule expressions.