Xerobit

VIN Decoder: Validate the Check Digit and Structure

Enter a 17-character Vehicle Identification Number to verify its check digit at position 9, decode the World Manufacturer Identifier, model year and plant code. This vin decoder runs entirely in your browser without uploading any data.

Result

  • Valid
    Yes

    Check digit matches.

  • WMI
    1HG

    World Manufacturer Identifier (positions 1 to 3)

  • Model Year Code
    M

    1991 / 2021

  • Plant Code
    N

    Assembly plant (position 11)

  • Sequential Number
    109186

    Production sequence (positions 12 to 17)

  • Weighted Sum
    340

    Sum mod 11 = 10

How to use the vin check digit validator

  1. Enter or paste a 17-character Vehicle Identification Number into the input field.
  2. The tool automatically converts each letter to its numeric value using the standard transliteration table.
  3. It multiplies each value by its position weight and sums the results.
  4. The sum modulo 11 is compared against the character at position 9 (where a remainder of 10 matches 'X').
  5. Review the decoded WMI, model year, plant code and overall validity below the input.

How the check digit is calculated

The check digit sits at position 9 of every 17-character VIN. To compute it, each character is first converted to a number using the transliteration table (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; digits keep their face value). Each numeric value is then multiplied by a fixed weight for its position.

The weights from position 1 to 17 are: 8, 7, 6, 5, 4, 3, 2, 10, 0, 9, 8, 7, 6, 5, 4, 3, 2. Position 9 has a weight of zero because it is the check digit itself. Sum all 17 products and take the result modulo 11. If the remainder is 10, the check digit is the letter X. Otherwise the check digit is the remainder itself.

For example, take the well-known test VIN 1HGBH41JXMN109186. Leaving out the check digit (weight 0), the transliterated values are 1, 8, 7, 2, 8, 4, 1, 1, X (weight 0, ignored), 4, 5, 1, 0, 9, 1, 8, 6. Multiplying by the weights gives 8 + 56 + 42 + 10 + 32 + 12 + 2 + 10 + 0 + 36 + 40 + 7 + 0 + 45 + 4 + 24 + 12 = 340. Since 340 mod 11 = 10, the check digit must be the letter X, which is exactly the ninth character of this VIN, so it passes.

Transliteration reference table

Every letter in a VIN maps to a specific integer. The letters I, O and Q are never used in a VIN because they look too similar to the digits 1 and 0. Below is the complete mapping used by this vin decoder.

LetterValueLetterValueLetterValue
A1J1S2
B2K2T3
C3L3U4
D4M4V5
E5N5W6
F6P7X7
G7R9Y8
H8Z9

Digits 0 through 9 simply map to themselves. When building tools like a random vin generator, this same table is used in reverse to ensure the generated check digit is correct.

Decoding the VIN sections

A 17-character VIN is divided into three main sections defined by ISO 3779 and FMVSS 115.

  • WMI (positions 1 to 3): The World Manufacturer Identifier. The first character indicates the country or region (for example, 1, 4 or 5 for the United States, J for Japan, W for Germany). The second and third characters narrow down the manufacturer and vehicle type.
  • VDS (positions 4 to 9): The Vehicle Descriptor Section encodes attributes such as body style, engine type and restraint system. Position 9 is always the check digit validated by this tool.
  • VIS (positions 10 to 17): The Vehicle Identifier Section. Position 10 is the model year code, position 11 is the assembly plant code and positions 12 through 17 form the sequential production number.

This structure means a vin decoder can extract manufacturing details without needing access to a proprietary database, provided you know the manufacturer-specific VDS mappings.

Model year codes

Position 10 uses a repeating 30-year cycle of letters and digits to represent the model year. Because the letters I, O, Q, U and Z plus the digit 0 are excluded, the cycle covers exactly 30 characters before repeating. This means a code like A could represent 1980 or 2010; context from the rest of the VIN or the vehicle itself resolves the ambiguity.

CodeYearCodeYearCodeYear
A1980 / 2010L1990 / 2020W1998 / 2028
B1981 / 2011M1991 / 2021X1999 / 2029
C1982 / 2012N1992 / 2022Y2000 / 2030
D1983 / 2013P1993 / 202312001 / 2031
E1984 / 2014R1994 / 202422002 / 2032
F1985 / 2015S1995 / 202532003 / 2033
G1986 / 2016T1996 / 202642004 / 2034
H1987 / 2017V1997 / 202752005 / 2035
J1988 / 201862006 / 203682008 / 2038
K1989 / 201972007 / 203792009 / 2039

Common mistakes when reading a VIN

The most frequent error is confusing visually similar characters. The letter O is never valid in a VIN, so any apparent O should be read as the digit 0. Likewise, the letter I is forbidden and should be treated as the digit 1, while Q is never used. Handwritten VINs on service records or title documents are especially prone to these mix-ups.

Another common issue is incorrect length. A valid VIN under ISO 3779 and North American FMVSS 115 standards must be exactly 17 characters. Older vehicles manufactured before 1981 may have shorter identifiers, but those do not follow the modern check digit algorithm and cannot be validated with this vin decoder.

Finally, some people assume the check digit guarantees the VIN belongs to a real vehicle. It only proves the string is mathematically consistent. Detecting fabricated but structurally valid VINs requires checking the WMI against known manufacturer assignments and verifying the serial number range, which goes beyond checksum validation.

Worked examples

ExampleInputResult
Valid test VINVehicle Identification Number: 1HGBH41JXMN109186Valid: Yes; WMI: 1HG; Model Year Code: M; Plant Code: N; Sequential Number: 109186; Weighted Sum: 340
Check digit zeroVehicle Identification Number: 5YJ3E1EA0LF000009Valid: Yes; WMI: 5YJ; Model Year Code: L; Plant Code: F; Sequential Number: 000009; Weighted Sum: 253
Invalid check digitVehicle Identification Number: 1HGBH41J1MN109186Valid: No; WMI: 1HG; Model Year Code: M; Plant Code: N; Sequential Number: 109186; Weighted Sum: 340

FAQ

What is a VIN check digit?

The check digit is the ninth character in a 17-character Vehicle Identification Number. It is calculated from the other 16 characters using a weighted sum modulo 11, and it helps detect transcription errors.

Why are the letters I, O and Q missing from VINs?

These letters are excluded by the ISO 3779 standard because they are easily confused with the digits 1 and 0, especially when stamped on metal or handwritten on documents.

Can this vin decoder tell me who owns a vehicle?

No. This tool only validates the mathematical structure and decodes the standardized sections like the WMI, model year and plant code. Ownership information is held in government and insurance databases.

Do all countries use the same VIN format?

No. North America requires the 17-character format with a check digit in position 9. Europe and most other regions follow ISO 3779 but do not require the check digit to be calculated, so a genuine VIN from outside North America can show as invalid here even though it is real.

What happens if the remainder is 10 during check digit calculation?

When the weighted sum modulo 11 equals 10, the check digit is represented by the letter X rather than a two-digit number, keeping the VIN at exactly 17 characters.

Is my VIN sent to a server when I use this tool?

No. All validation and decoding happens locally in your browser. Nothing is uploaded anywhere.