A VIN is a 17-character code that encodes country, manufacturer, vehicle attributes, check digit, year, plant, and serial number. Learn the ISO 3779 structure and check digit calculation.
Your car's VIN looks like a random string of 17 characters. It is not. Position 1 tells you the country. Position 10 tells you the year. Position 9 is a checksum that verifies the entire string.
The Vehicle Identification Number is a standardized code assigned to every road vehicle. The format is defined by ISO 3779, which specifies the content and structure of the 17-character string. In the United States, the NHTSA made the 17-character VIN mandatory for all on-road vehicles starting in 1981. The standard excludes the letters I, O, and Q to avoid confusion with the numerals 1, 0, and 9.
Decoding a VIN is not encryption. It is a structured encoding with fixed positions, each carrying specific information. There is no key and no secrecy. Anyone with the standard can read it.
The 17-character VIN is divided into three sections according to ISO 3779:
World Manufacturer Identifier (WMI) — Positions 1-3
The first three characters identify the manufacturer. Position 1 indicates the country or region. For example, 1-5 are assigned to the United States, W to Germany, J to Japan, and S to the United Kingdom. Positions 2-3 identify the specific manufacturer. For example, within 1G (General Motors, United States), 1G1 represents Chevrolet passenger cars, 1G2 represents Pontiac passenger cars, and 1GC represents Chevrolet trucks.
Manufacturers producing fewer than 1,000 vehicles per year use 9 as the third digit and encode the rest of their identifier in positions 12-14.
Vehicle Descriptor Section (VDS) — Positions 4-9
Positions 4-8 describe the vehicle attributes: model, body style, engine type, restraint system. Each manufacturer has its own coding system for these positions. Most manufacturers since the 1980s use position 8 to identify the engine type when multiple engines are available for the same model.
Position 9 is the check digit, a computed value that validates the entire VIN. The calculation method is specified below.
Vehicle Identifier Section (VIS) — Positions 10-17
Positions 10-17 identify the specific individual vehicle. Position 10 encodes the model year. Position 11 encodes the assembly plant. Positions 12-17 are the sequential serial number, unique within each manufacturer's plant and model year combination.
Position 1: Country of origin
1-5 = United States, 6 = Canada, 7 = Mexico, W = Germany, J = Japan, K = Korea, S = United Kingdom, V = France, T = Czech Republic, Z = Italy, 9 = Brazil. The full list is maintained by SAE International under ISO 3780.
Position 10: Model year code
The model year is encoded with a rotating set of letters and numbers. The sequence excludes I, O, Q, U, Z, and 0 to avoid ambiguity:
``
Code Year | Code Year
A 2010 | Y 2000
B 2011 | 1 2001
C 2012 | 2 2002
...
H 2017 | 8 2008
J 2018 | 9 2009
K 2019 | (cycle repeats every 30 years)
``
A given code maps to two possible years (30 years apart). For example, code J could mean 2018 or 1988. The manufacturer and model context disambiguate.
Position 11: Assembly plant
Each manufacturer assigns its own codes to assembly plants. There is no universal standard for this position. Toyota's position 11 codes differ from Ford's, which differ from BMW's.
Positions 12-17: Serial number
A sequential number unique within the manufacturer, plant, and model year. For high-volume manufacturers, this is a simple incrementing counter.
Position 9 is a check digit computed from the other 16 characters using a weighted sum modulo 11. This detects transcription errors and invalid VINs.
Step 1: Assign numeric values to each character.
Digits 0-9 retain their numeric value. Letters are assigned values as follows:
``
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
``
Note that I, O, and Q are not used in VINs at all.
Step 2: Apply position weights.
Each position has a fixed weight:
``
Position: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
Weight: 8 7 6 5 4 3 2 10 X 9 8 7 6 5 4 3 2
``
Position 9 (the check digit itself) is skipped in the calculation.
Step 3: Multiply and sum.
Multiply each character's numeric value by its position weight. Sum all 16 products.
Step 4: Modulo 11.
Divide the sum by 11. The remainder is the check digit. If the remainder is 10, the check digit is X.
Example: VIN 1G1BL52P7TR115814
After assigning values and applying weights, the sum of products is 241. 241 mod 11 = 10, so the check digit is X. But this VIN has 7 in position 9, which means it is invalid. (A valid VIN would have X in position 9 for this combination of other characters.)
You can test this with a checksum calculator like our Checksum Calculator to verify the arithmetic.
Buying a used car: Decode the VIN to verify that the seller's description matches the vehicle's actual attributes. The WMI confirms the country of manufacture. Position 10 confirms the model year. The VDS positions confirm the engine and body style. If the VIN says the car is a 2018 with a V6 engine but the seller claims it is a 2020 with a V8, something is wrong.
Vehicle history reports: Services like Carfax and the NHTSA VIN lookup tool use the VIN to pull recall information, accident history, and title records. The VIN is the key that links all records to a specific vehicle.
Parts ordering: Auto parts stores use the VIN to identify the exact engine, transmission, and trim level to ensure replacement parts are compatible. This is more reliable than searching by year and model name, since manufacturers sometimes change components mid-year.
Importing vehicles: Customs agencies use the VIN to verify the vehicle's origin and compliance with local regulations. The NZ Transport Agency requires importers to provide manufacturer VIN decode information during the entry certification process.
CTF challenges: Some CTF competitions include VIN decoding as a miscellaneous challenge. The check digit calculation is the typical target, since it involves a specific algorithm that can be implemented programmatically. This is similar to how ISBN check digits work.
The VIN encoding is manufacturer-specific for positions 4-8 and 11. There is no universal lookup table that decodes every manufacturer's VDS codes. To decode these positions, you need the manufacturer's own documentation or a VIN decoding service that maintains a database of manufacturer-specific codes.
The check digit catches single-character errors and most transposition errors, but it does not catch all possible errors. Two characters can be swapped in certain positions without invalidating the check digit. The modulo 11 scheme catches approximately 90% of all transcription errors, not 100%.
VINs from before 1981 (in the United States) do not follow the 17-character standard. Pre-1981 VINs varied in length and format by manufacturer, and the ISO 3779 structure does not apply to them.
Positions 1-3 are the World Manufacturer Identifier (country and manufacturer). Positions 4-8 are the Vehicle Descriptor Section (model, body style, engine). Position 9 is a check digit. Position 10 is the model year. Position 11 is the assembly plant. Positions 12-17 are the sequential serial number.
Each character in the VIN (excluding position 9) is assigned a numeric value and multiplied by a position-specific weight. The 16 products are summed, and the sum is divided by 11. The remainder is the check digit. If the remainder is 10, the check digit is the letter X.
The letters I, O, and Q are excluded from VINs to avoid confusion with the numerals 1, 0, and 9. The letters U and Z and the digit 0 are not used in position 10 (model year code). All other positions use the remaining 23 letters and 10 digits.
No. The combination of WMI, VDS, plant code, and sequential serial number is unique for each vehicle. Manufacturers producing fewer than 1,000 vehicles per year use position 3 as a 9 and encode additional manufacturer identification in positions 12-14, but the full 17-character VIN is still unique.
ISO 3779 defines the content and structure of the VIN. ISO 3780 defines the World Manufacturer Identifier codes. In the United States, the NHTSA mandated the 17-character VIN format for all on-road vehicles starting in 1981, based on but more stringent than ISO 3779.
Checksum Calculator
Calculate Luhn, CRC32, MD5, and SHA1 checksums for data validation and integrity checking.
Base64 Encode / Decode
Encode text to Base64 or decode Base64 payloads with UTF-8-safe handling.
Hex Encoder/Decoder
Convert text to hexadecimal format and decode hex strings back to readable text.
Text to Number (A=1, B=2)
Convert text to numbers using A=1, B=2, phone keypad, and ASCII encoding systems.
The Difference Between Encoding, Encryption, and Hashing
Base64 is not encryption. This guide defines encoding, encryption, and hashing precisely, runs the same input through each, and explains when to use which in production systems.
Base64 vs. Base62 vs. Base58: Which Encoding Belongs Where
Three base encoding schemes that look similar but solve different problems. Picking the wrong one can break URLs, confuse users, or add padding to JWTs.