Vehicle identification number

Vehicle Identification Numbers (VINs) are used to uniquely identify motor vehicles. Prior to 1980 there was not an accepted standard for these numbers, so different manufacturers used different formats. Modern day VINs consist of 17 characters that do not include the letters I, O or Q.

Components of the VIN
Modern Vehicle Identification Number systems are based on two related standards originally issued by the International Organization for Standardization in 1979 and 1980, ISO 3779 and ISO 3780, respectively. Compatible but somewhat different implementations of these ISO standards have been adopted by the European Union and the United States of America.

The VIN is composed of the following sections:

World Manufacturer Identifier
The first three characters uniquely identify the manufacturer of the vehicle using the World Manufacturer Identifier or WMI code. A manufacturer that builds fewer than 500 vehicles per year uses a 9 as the third digit and the 12th, 13th and 14th position of the VIN for a second part of the identification. Some manufacturers use the third character as a code for a vehicle category (e.g., bus or truck), a division within a manufacturer, or both. For example, within 1G (assigned to General Motors Corporation in the United States), 1G1 represents Chevrolet passenger cars; 1G2, Pontiac passenger cars; and 1GC, Chevrolet trucks.

The Society of Automotive Engineers (SAE) in the US assigns WMIs to countries and manufacturers.

The first character of the WMI is the region in which the manufacturer is located. In practice, each is assigned to a country of manufacture.

Vehicle Descriptor Section
The 4th through 9th positions in the VIN are the Vehicle Descriptor Section or VDS. This is used, according to local regulations, to identify the vehicle type and may include information on the automobile platform used, the model, and the car body styles. Each manufacturer has a unique system for using this field. Most manufacturers since the 1980s have used the 8th digit to identify the engine type whenever there is more than one engine choice for the vehicle. Example: for the 2007 Chevrolet Corvette U= 6.0L V8, E= 7.0L V8.

North American Check Digits
One element that is fairly consistent is the use of position 9 as a check digit, compulsory for vehicles in North America and used fairly consistently even outside this rule.

Vehicle Identifier Section
The 10th through 17th positions are used as the Vehicle Identifier Section or VIS. This is used by the manufacturer to identify the individual vehicle in question. This may include information on options installed or engine and transmission choices, but often is a simple sequential number. In fact, in North America, the last five digits must be numeric.

North American Model Year
One consistent element of the VIS is character number 10, which is required (in North America) to encode the model year encoding of the vehicle.

North American Plant Code
Another consistently-used element (which is compulsory in North America) is the use of the 11th character to encode the factory of manufacture of the vehicle. Although each manufacturer has their own set of plant codes, their location in the VIN is standardized.

Model year encoding
Besides the three letters that are not allowed in the VIN itself (I, O and Q), the letters U and Z and the digit 0 are not used for the year code. Note that the year code can be the calendar year in which a vehicle is built, or a model or type year allocated by the manufacturer. The year 1980 was encoded by some manufacturers, especially General Motors and Chrysler, as "A" (since the 17-digit VIN wasn't mandatory until 1981, and the "A" or zero was in the manufacturer's pre-1981 placement in the VIN), yet Ford Motor Company and American Motors Corporation still used a zero for 1980. Subsequent years increment through the allowed letters, so that "Y" represents the year 2000. 2001 through 2009 are encoded as the digits 1 through 9, and subsequent years are encoded as "A", "B", "C", etc.

Check digit calculation
If trying to validate a VIN with a check digit, first either: (a) remove the check digit for the purpose of calculation; or (b) utilize the multiplicative property of zero in the weight to cancel it out. You should later compare the old value of the check-bit, with the new to ensure the VIN's validity.

Overview of the process
An overview of the process for calculating a VIN's check digit is as follows:
 * 1) Remove all of the letters from the VIN by transliterating them with their numeric counterparts. Numerical counterparts can be found in the table below.
 * 2) Multiply this new number, the yield of the transliteration, with the assigned weight. Weights can be found in the table below.
 * 3) Sum the resulting products.
 * 4) Divide the sum of the products by 11, to find the remainder.
 * 5) If the remainder is 10 replace it with X.

Transliterating the numbers
Transliteration consists of removing all of letters and substituting them with their appropriate numerical counterparts. These numerical alternatives can be found in the following chart. I, O and Q are not allowed, and can not exist in a valid VIN; for the purpose of this chart, they have been filled in with N/A (not applicable). Numerical digits use their own values.

S is 2, and not 1. There is no left-alignment linearity.

Weights used in calculation
The following is the weight factor for each position in the VIN. The 9th position is that of the check digit. It has been substituted with a 0, which will cancel it out in the multiplication step.

Worked example
Consider the hypothetical VIN 1M8GDM9A_KP042788, where the underscore will be the check digit.


 * 1) The VIN's Value is calculated from the above table, this number will be used in the rest of the calculation.
 * 2) Copy over the weights from the above table.
 * 3) The products row is a result of the multiplication of the vertical columns: Value and Weight.
 * 4) The products (8,28,48,35..24,16) are all added together to yield a sum of 351
 * 5) One of the following operations:
 * 6) * 351 % 11 = 10 (where % is a modulo operator)
 * 7) ** 351 ÷ 11 = 31 10/11
 * 8) * 351 ÷ 11 = 31.9090- (Requires a lookup table)
 * 9) The check digit is 10, so it has been transliterated into X.

With a check digit of 'X' the VIN: 1M8GDM9A?KP042788 is written with the check bit as: 1M8GDM9AXKP042788.

Straight-ones (seventeen consecutive '1's) will suffice the check-digit. This is because a value of one, multiplied against 89 (sum of weights), is still 89. And 89 % 11 is 1, the check digit. This is an easy way to test a VIN-check algorithm.