Vehicle identification number
From Wikipedia, the free encyclopedia
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. In the United States a confidential vehicle identification number is used with certain major assemblies of a vehicle and is known only to designated persons within the Federal Bureau of Investigation and the National Automobile Theft Bureau.
Contents |
[edit] Parts of the VIN
Modern Vehicle Identification Number systems are based on two related standards originally issued by the ISO 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:
Standard | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | ||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
ISO 3779 | WMI | VDS | VIS | ||||||||||||||||
North American
> 500 vehicles / year |
Manufacturer Identifier | Vehicle Attributes | Check Digit | Model Year | Plant Code | Sequential Number | |||||||||||||
North American
< 500 vehicles / year |
Manufacturer Identifier | Vehicle Attributes | Check Digit | Model Year | Plant Code | Manufacturer Identifier | Sequential Number |
[edit] 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 in the United States), 1G1 represents Chevrolet passenger cars; 1G2, Pontiac passenger cars; and 1GC, Chevrolet trucks.
[edit] WMI Regions
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. Common auto-manufacturing countries are noted.
WMI | Region | Notes |
---|---|---|
A-H | Africa | AA-AH = South Africa |
J-R | Asia | J = Japan KL-KR = South Korea L = China MA-ME = India MF-MK = Indonesia ML-MR = Thailand PA-PE = Philippines PL-PR = Malaysia |
S-Z | Europe | SA-SM = United Kingdom SN-ST, W = Germany SU-SZ = Poland TA-TH = Switzerland TJ-TP = Czech Republic TR-TV = Hungary VA-VE = Austria VF-VR = France VS-VW = Spain VX-V2 = Yugoslavia XS-XW = USSR X3-X0 = Russia YA-YE = Belgium YF-YK = Finland YS-YW = Sweden 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-0 | South America | 8A-8E = Argentina 8F-8J = Chile 8X-82 = Venezuela 9A-9E, 93-99 = Brazil 9F-9J = Colombia |
[edit] List of common WMIs
The Society of Automotive Engineers (SAE) in the US assigns WMIs to countries and manufacturers. The following table contains a list of commonly used WMIs, although there are many others assigned.
WMI | Manufacturer |
---|---|
A3 | Mitsubishi |
HD | Harley-Davidson |
JA | Isuzu |
JF | Fuji Heavy Industries (Subaru) |
JH | Honda |
JK | Kawasaki (motorcycles) |
JM | Mazda |
JN | Nissan |
JS | Suzuki |
JT | Toyota |
KL | Daewoo General Motors South Korea |
KM8 | Hyundai |
KMH | Hyundai |
KNA | Kia |
KNB | Kia |
KNC | Kia |
KNM | Renault Samsung |
L56 | Renault Samsung |
L5Y | MERATO MOTORCYCLE Taizhou Zhongneng |
LSY | Brilliance Zhonghua |
LTV | Toyota Tian Jin |
LVS | Ford Chang An |
LZM | MAN China |
LZE | Isuzu Guangzhou |
MA3 | Suzuki India |
SAL | Land Rover |
SAJ | Jaguar |
SCC | Lotus Cars |
SHS | Honda UK |
SJN | Nissan UK |
SDB | Peugeot UK |
TMB | Škoda |
TMT | Tatra |
TRA | Ikarus Bus |
TRU | Audi Hungary |
TSM | Suzuki, (Hungary) |
UU1 | Dacia, (Romania) |
VF1 | Renault |
VF3 | Peugeot |
VF7 | Citroën |
VSS | SEAT |
VSX | Opel Spain |
VS6 | Ford Spain |
VSG | Nissan Spain |
VSE | Suzuki Spain (Santana Motors) |
VWV | Volkswagen Spain |
WAU | Audi |
WBA | BMW |
WBS | BMW M |
WDB | Mercedes-Benz |
WDC | DaimlerChrysler |
WF0 | Ford Germany |
WMW | MINI |
WP0 | Porsche |
W0L | Opel |
WVW | Volkswagen |
WV1 | Volkswagen Commercial Vehicles |
WV2 | Volkswagen Bus/Van |
XTA | Lada/AutoVaz (Russia) |
YK1 | Saab |
YS3 | Saab |
YV1 | Volvo Cars |
YV2 | Volvo Trucks |
YV3 | Volvo Buse |
ZAM | Maserati Biturbo |
ZAP | Piaggio Vespa |
ZCG | Cagiva SpA |
ZDM | Ducati Motor Holdings SpA |
ZDF | Ferrari Dino |
ZFA | Fiat |
ZFF | Ferrari |
1FA | Ford Motor Company |
1FB | Ford Motor Company |
1FC | Ford Motor Company |
1FD | Ford Motor Company |
1FM | Ford Motor Company |
1FU | Freightliner |
1FV | Freightliner |
1F9 | FWD Corp. |
1G | General Motors USA |
1GC | Chevrolet USA |
1G6 | Cadillac USA |
1G2 | Pontiac USA |
1GM | Pontiac USA |
1H | Honda USA |
1L | Lincoln USA |
1ME | Mercury USA |
1M1 | Mack Truck USA |
1M2 | Mack Truck USA |
1M3 | Mack Truck USA |
1M4 | Mack Truck USA |
1R9 | Roadrunner Hay Squeeze USA |
1N | Nissan USA |
1NX | NUMMI USA |
1VW | Volkswagen USA |
1XP | [[Peterbilt] USA] |
1YV | Mazda USA |
2FA | Ford Motor Company Canada |
2FB | Ford Motor Company Canada |
2FC | Ford Motor Company Canada |
2FM | Ford Motor Company Canada |
2FT | Ford Motor Company Canada |
2FU | Freightliner |
2FV | Freightliner |
2G | General Motors Canada |
2G1 | Chevrolet Canada |
2G2 | Pontiac Canada |
2HG | Honda Canada |
2HK | Honda Canada |
2HM | Hyundai Canada |
2M | Mercury |
2T | Toyota Canada |
2WK | Western Star |
2WL | Western Star |
2WM | Western Star |
3FE | Ford Motor Company Mexico |
3G | General Motors Mexico |
3H | Honda Mexico |
3N | Nissan Mexico |
3VW | Volkswagen Mexico |
4F | Mazda USA |
4M | Mercury |
4S | Subaru-Isuzu Automotive |
4T | Toyota |
4US | BMW USA |
4UZ | Frt-Thomas Bus |
4V1 | Volvo |
4V2 | Volvo |
4V3 | Volvo |
4V4 | Volvo |
4V5 | Volvo |
4V6 | Volvo |
4VL | Volvo |
4VM | Volvo |
4VZ | Volvo |
5F | Honda USA-Alabama |
5L | Lincoln |
5N1 | Nissan USA |
5NP | Hyundai USA |
5T | Toyota USA - trucks |
6F | Ford Motor Company Australia |
6G2 | Pontiac Australia (GTO) |
6H | General Motors-Holden |
6MM | Mitsubishi Motors Australia |
6T1 | Toyota Motor Corporation Australia |
8AG | Chevrolet Argentina |
8GG | Chevrolet Chile |
8AP | Fiat Argentina |
8AF | Ford Motor Company Argentina |
8AD | Peugeot Argentina |
8GD | Peugeot Chile |
8A1 | Renault Argentina |
8AK | Suzuki Argentina |
8AJ | Toyota Argentina |
8AW | Volkswagen Argentina |
93V | Audi Brazil |
9BG | Chevrolet Brazil |
935 | Citroën Brazil |
9BD | Fiat Brazil |
9BF | Ford Motor Company Brazil |
93H | Honda Brazil |
9BM | Mercedes-Benz Brazil |
9BS | Scania Brazil |
93Y | Renault Brazil |
UU1 | Renault-Dacia Romania-Pitesti |
93R | Toyota Brazil |
9BW | Volkswagen Brazil |
[edit] 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 platform used, the model, and the body style. Each manufacturer has a unique system for using this field.
[edit] 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.
[edit] 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.
[edit] 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 of the vehicle.
[edit] 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.
[edit] 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 is encoded as "A", and 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.
Code | Year | Code | Year | Code | Year | Code | Year |
---|---|---|---|---|---|---|---|
A | 1980 | L | 1990 | Y | 2000 | A | 2010 |
B | 1981 | M | 1991 | 1 | 2001 | B | 2011 |
C | 1982 | N | 1992 | 2 | 2002 | C | 2012 |
D | 1983 | P | 1993 | 3 | 2003 | D | 2013 |
E | 1984 | R | 1994 | 4 | 2004 | ||
F | 1985 | S | 1995 | 5 | 2005 | ||
G | 1986 | T | 1996 | 6 | 2006 | ||
H | 1987 | V | 1997 | 7 | 2007 | ||
J | 1988 | W | 1998 | 8 | 2008 | ||
K | 1989 | X | 1999 | 9 | 2009 |
[edit] Check digit calculation
Firstly, find the numerical value associated with each letter in the VIN. (I, O and Q are not allowed.) Digits use their own values.
A: 1 | J: 1 | |
B: 2 | K: 2 | S: 2 |
C: 3 | L: 3 | T: 3 |
D: 4 | M: 4 | U: 4 |
E: 5 | N: 5 | V: 5 |
F: 6 | W: 6 | |
G: 7 | P: 7 | X: 7 |
H: 8 | Y: 8 | |
R: 9 | Z: 9 |
Secondly, look up the weight factor for each position in the VIN except the 9th (the position of the check digit).
1st: ×8 | 5th: ×4 | 10th: ×9 | 14th: ×5 |
2nd: ×7 | 6th: ×3 | 11th: ×8 | 15th: ×4 |
3rd: ×6 | 7th: ×2 | 12th: ×7 | 16th: ×3 |
4th: ×5 | 8th: ×10 | 13th: ×6 | 17th: ×2 |
Thirdly, multiply the numbers and the numerical values of the letters by their assigned weight factor, and sum the resulting products. Divide the sum of the products by 11. The remainder is the check digit. If the remainder is 10, the check digit is the letter X.
[edit] Example
Consider the hypothetical VIN 1M8GDM9A_KP042788, where the underscore will be the check digit.
VIN: 1 M 8 G D M 9 A _ K P 0 4 2 7 8 8 Value: 1 4 8 7 4 4 9 1 0 2 7 0 4 2 7 8 8 Weight: 8 7 6 5 4 3 2 10 0 9 8 7 6 5 4 3 2 Products: 8 28 48 35 16 12 18 10 0 18 56 0 24 10 28 24 16
The sum of all 16 products is 351. Dividing by 11 gives a remainder of 10, so the check digit is "X" and the complete VIN is 1M8GDM9AXKP042788.
For Software Developers [especially PL/SQL], here's a program to implement the above formula:
CREATE OR REPLACE FUNCTION VALIDATE_VIN(IN_VIN IN VARCHAR2) RETURN NUMBER AS
--Author: Rajnikant Tahlyan --Date: 13-Feb-2007
--MEANING OF DIFFERENT CHARACTERS IN A VIN --CHARACTER 1 --> COUNTRY --CHARACTER 2 --> MANUFACTURER --CHARACTER 3 --> MAKE --CHARACTER 4-6 --> ENGINE --CHARACTER 7 --> BODY/TRANSMISSION --CHARACTER 8 --> TRIM LEVEL/RESTRAINT --CHARACTER 9 --> CHECK DIGIT --CHARACTER 10 --> MODEL YEAR --CHARACTER 11 --> ASSEMBLY PLANT --CHARACTER 12-17 --> SERIAL NUMBER
V_CHECK_DIGIT_NUM NUMBER; V_CHECK_DIGIT VARCHAR2(1);
--VALUES ASSIGNED TO CHARACTERS AS PER "SUPPLEMENT TO TRUCK BLUE BOOK - 1999 TRUCK IDENTIFICATION" V_A NUMBER := 1; V_B NUMBER := 2; V_C NUMBER := 3; V_D NUMBER := 4; V_E NUMBER := 5; V_F NUMBER := 6; V_G NUMBER := 7; V_H NUMBER := 8; V_J NUMBER := 1; V_K NUMBER := 2; V_L NUMBER := 3; V_M NUMBER := 4; V_N NUMBER := 5; V_P NUMBER := 7; V_R NUMBER := 9; V_S NUMBER := 2; V_T NUMBER := 3; V_U NUMBER := 4; V_V NUMBER := 5; V_W NUMBER := 6; V_X NUMBER := 7; V_Y NUMBER := 8; V_Z NUMBER := 9;
BEGIN
IF (LENGTH(IN_VIN) <> 17) THEN RETURN 1; --FAILURE --> ERRORNEOUS VIN, AFTER 1981 EACH VIN HAS TO BE OF 17 CHARACTERS - EITHER THE VIN IS FAKE OR EARLIER THAN 1981 ELSE --USE FORMULA TO CALCULATE THE CHECK DIGIT SELECT MOD((DECODE(SUBSTR(IN_VIN,1,1) ,'A',V_A,'B',V_B,'C',V_C,'D',V_D,'E',V_E,'F',V_F,'G',V_G,'H',V_H,'J',V_J,'K',V_K,'L',V_L,'M',V_M,'N',V_N,'P',V_P,'R',V_R,'S',V_S,'T',V_T,'U',V_U,'V',V_V,'W',V_W,'X',V_X,'Y',V_Y,'Z',V_Z,SUBSTR(IN_VIN,1,1))*8 + DECODE(SUBSTR(IN_VIN,2,1) ,'A',V_A,'B',V_B,'C',V_C,'D',V_D,'E',V_E,'F',V_F,'G',V_G,'H',V_H,'J',V_J,'K',V_K,'L',V_L,'M',V_M,'N',V_N,'P',V_P,'R',V_R,'S',V_S,'T',V_T,'U',V_U,'V',V_V,'W',V_W,'X',V_X,'Y',V_Y,'Z',V_Z,SUBSTR(IN_VIN,2,1))*7 + DECODE(SUBSTR(IN_VIN,3,1) ,'A',V_A,'B',V_B,'C',V_C,'D',V_D,'E',V_E,'F',V_F,'G',V_G,'H',V_H,'J',V_J,'K',V_K,'L',V_L,'M',V_M,'N',V_N,'P',V_P,'R',V_R,'S',V_S,'T',V_T,'U',V_U,'V',V_V,'W',V_W,'X',V_X,'Y',V_Y,'Z',V_Z,SUBSTR(IN_VIN,3,1))*6 + DECODE(SUBSTR(IN_VIN,4,1) ,'A',V_A,'B',V_B,'C',V_C,'D',V_D,'E',V_E,'F',V_F,'G',V_G,'H',V_H,'J',V_J,'K',V_K,'L',V_L,'M',V_M,'N',V_N,'P',V_P,'R',V_R,'S',V_S,'T',V_T,'U',V_U,'V',V_V,'W',V_W,'X',V_X,'Y',V_Y,'Z',V_Z,SUBSTR(IN_VIN,4,1))*5 + DECODE(SUBSTR(IN_VIN,5,1) ,'A',V_A,'B',V_B,'C',V_C,'D',V_D,'E',V_E,'F',V_F,'G',V_G,'H',V_H,'J',V_J,'K',V_K,'L',V_L,'M',V_M,'N',V_N,'P',V_P,'R',V_R,'S',V_S,'T',V_T,'U',V_U,'V',V_V,'W',V_W,'X',V_X,'Y',V_Y,'Z',V_Z,SUBSTR(IN_VIN,5,1))*4 + DECODE(SUBSTR(IN_VIN,6,1) ,'A',V_A,'B',V_B,'C',V_C,'D',V_D,'E',V_E,'F',V_F,'G',V_G,'H',V_H,'J',V_J,'K',V_K,'L',V_L,'M',V_M,'N',V_N,'P',V_P,'R',V_R,'S',V_S,'T',V_T,'U',V_U,'V',V_V,'W',V_W,'X',V_X,'Y',V_Y,'Z',V_Z,SUBSTR(IN_VIN,6,1))*3 + DECODE(SUBSTR(IN_VIN,7,1) ,'A',V_A,'B',V_B,'C',V_C,'D',V_D,'E',V_E,'F',V_F,'G',V_G,'H',V_H,'J',V_J,'K',V_K,'L',V_L,'M',V_M,'N',V_N,'P',V_P,'R',V_R,'S',V_S,'T',V_T,'U',V_U,'V',V_V,'W',V_W,'X',V_X,'Y',V_Y,'Z',V_Z,SUBSTR(IN_VIN,7,1))*2 + DECODE(SUBSTR(IN_VIN,8,1) ,'A',V_A,'B',V_B,'C',V_C,'D',V_D,'E',V_E,'F',V_F,'G',V_G,'H',V_H,'J',V_J,'K',V_K,'L',V_L,'M',V_M,'N',V_N,'P',V_P,'R',V_R,'S',V_S,'T',V_T,'U',V_U,'V',V_V,'W',V_W,'X',V_X,'Y',V_Y,'Z',V_Z,SUBSTR(IN_VIN,8,1))*10 + DECODE(SUBSTR(IN_VIN,10,1),'A',V_A,'B',V_B,'C',V_C,'D',V_D,'E',V_E,'F',V_F,'G',V_G,'H',V_H,'J',V_J,'K',V_K,'L',V_L,'M',V_M,'N',V_N,'P',V_P,'R',V_R,'S',V_S,'T',V_T,'U',V_U,'V',V_V,'W',V_W,'X',V_X,'Y',V_Y,'Z',V_Z,SUBSTR(IN_VIN,10,1))*9 + DECODE(SUBSTR(IN_VIN,11,1),'A',V_A,'B',V_B,'C',V_C,'D',V_D,'E',V_E,'F',V_F,'G',V_G,'H',V_H,'J',V_J,'K',V_K,'L',V_L,'M',V_M,'N',V_N,'P',V_P,'R',V_R,'S',V_S,'T',V_T,'U',V_U,'V',V_V,'W',V_W,'X',V_X,'Y',V_Y,'Z',V_Z,SUBSTR(IN_VIN,11,1))*8 + DECODE(SUBSTR(IN_VIN,12,1),'A',V_A,'B',V_B,'C',V_C,'D',V_D,'E',V_E,'F',V_F,'G',V_G,'H',V_H,'J',V_J,'K',V_K,'L',V_L,'M',V_M,'N',V_N,'P',V_P,'R',V_R,'S',V_S,'T',V_T,'U',V_U,'V',V_V,'W',V_W,'X',V_X,'Y',V_Y,'Z',V_Z,SUBSTR(IN_VIN,12,1))*7 + DECODE(SUBSTR(IN_VIN,13,1),'A',V_A,'B',V_B,'C',V_C,'D',V_D,'E',V_E,'F',V_F,'G',V_G,'H',V_H,'J',V_J,'K',V_K,'L',V_L,'M',V_M,'N',V_N,'P',V_P,'R',V_R,'S',V_S,'T',V_T,'U',V_U,'V',V_V,'W',V_W,'X',V_X,'Y',V_Y,'Z',V_Z,SUBSTR(IN_VIN,13,1))*6 + DECODE(SUBSTR(IN_VIN,14,1),'A',V_A,'B',V_B,'C',V_C,'D',V_D,'E',V_E,'F',V_F,'G',V_G,'H',V_H,'J',V_J,'K',V_K,'L',V_L,'M',V_M,'N',V_N,'P',V_P,'R',V_R,'S',V_S,'T',V_T,'U',V_U,'V',V_V,'W',V_W,'X',V_X,'Y',V_Y,'Z',V_Z,SUBSTR(IN_VIN,14,1))*5 + DECODE(SUBSTR(IN_VIN,15,1),'A',V_A,'B',V_B,'C',V_C,'D',V_D,'E',V_E,'F',V_F,'G',V_G,'H',V_H,'J',V_J,'K',V_K,'L',V_L,'M',V_M,'N',V_N,'P',V_P,'R',V_R,'S',V_S,'T',V_T,'U',V_U,'V',V_V,'W',V_W,'X',V_X,'Y',V_Y,'Z',V_Z,SUBSTR(IN_VIN,15,1))*4 + DECODE(SUBSTR(IN_VIN,16,1),'A',V_A,'B',V_B,'C',V_C,'D',V_D,'E',V_E,'F',V_F,'G',V_G,'H',V_H,'J',V_J,'K',V_K,'L',V_L,'M',V_M,'N',V_N,'P',V_P,'R',V_R,'S',V_S,'T',V_T,'U',V_U,'V',V_V,'W',V_W,'X',V_X,'Y',V_Y,'Z',V_Z,SUBSTR(IN_VIN,16,1))*3 + DECODE(SUBSTR(IN_VIN,17,1),'A',V_A,'B',V_B,'C',V_C,'D',V_D,'E',V_E,'F',V_F,'G',V_G,'H',V_H,'J',V_J,'K',V_K,'L',V_L,'M',V_M,'N',V_N,'P',V_P,'R',V_R,'S',V_S,'T',V_T,'U',V_U,'V',V_V,'W',V_W,'X',V_X,'Y',V_Y,'Z',V_Z,SUBSTR(IN_VIN,17,1))*2),11) INTO V_CHECK_DIGIT_NUM FROM DUAL;
--IF CHECK DIGIT IS 10, USE X ELSE WHAT EVER IS RETURNED I.E. 0-9 IF (V_CHECK_DIGIT_NUM = 10) THEN V_CHECK_DIGIT := 'X'; ELSE V_CHECK_DIGIT := TO_CHAR(V_CHECK_DIGIT_NUM); END IF;
--IF THE CALCULATED CHECK DIGIT MATCHES THE 9TH CHARACTER OF VIN, RETURN SUCCESS [0] ELSE FAILURE [1] IF (V_CHECK_DIGIT = SUBSTR(IN_VIN,9,1)) THEN RETURN 0; --SUCCESS, THE VIN IS GENUINE ELSE RETURN 1; --FAILURE, CHECK DIGIT MISMATCH, THE VIN IS FAKE END IF;
END IF;
END VALIDATE_VIN;
[edit] See also
- Daimler-Chrysler VIN codes
- List of Ford VIN codes
- List of GM VIN codes
- Honda VIN codes
- Land Rover VIN codes
- Mercedes-Benz VIN codes
- Subaru VIN codes
- Toyota VIN codes
- VIN Etching