VIN Check Digit Explained: How Position 9 Works

· Updated July 18, 2026

Learn how the VIN check digit in position 9 is calculated with weights and mod 11, why it catches typos, and what a valid digit does not prove about a car.

Position 9 of a 17-character VIN is the check digit. It is a single character (0–9 or X for 10) calculated from the other sixteen characters. Its job is error detection: catch mistyped VINs before they pollute titles, insurance policies, and parts orders.

DecodeAnyVin validates the check digit when you use the free VIN decoder. A matching check digit means the string is mathematically consistent. It does not prove the vehicle is not stolen, cloned, or misrepresented on a title report.

Why a check digit exists

VINs are copied by hand, OCR’d from photos, and typed into forms. A single wrong character can attach recalls or registration data to the wrong car. The ISO 3779 check digit algorithm (as applied in North American practice) catches many single-character errors and some transpositions.

It will not catch every possible fraud. A sophisticated forger can invent a VIN that passes the algorithm. Pair check-digit validation with physical VIN inspection and, when needed, a title history search. See VIN cloning and decoder vs title report.

Character transliteration

Letters are converted to numbers before weighting:

LettersValue
A, J1
B, K, S2
C, L, T3
D, M, U4
E, N, V5
F, W6
G, P, X7
H, Y8
R, Z9

Digits keep their face value. Letters I, O, and Q are illegal in VINs and have no transliteration in a valid string.

Position weights

Each of the 17 positions has a weight. Position 9 (the check digit itself) is excluded from the sum used to compute it. Standard weights for positions 1–17 are:

8, 7, 6, 5, 4, 3, 2, 10, (check), 9, 8, 7, 6, 5, 4, 3, 2

For every position except 9, multiply the transliterated value by that weight, then add the products.

Modulo 11

  1. Sum all weighted products (excluding position 9).
  2. Compute sum mod 11.
  3. If the remainder is 10, the check digit is X.
  4. Otherwise the check digit is the remainder (0–9).

If the VIN’s actual position 9 does not match this result, the VIN fails validation.

Worked mini-example

You do not need to calculate by hand for everyday use—the decoder does it—but understanding one pass helps when a seller argues a “weird VIN is fine.”

  1. Write the 17 characters.
  2. Replace letters using the table.
  3. Skip position 9.
  4. Apply weights, sum, mod 11.
  5. Compare to the printed check digit.

If your manual math disagrees with DecodeAnyVin, recheck transliteration first—especially S=2 and Z=9, which people often misremember.

What failure usually means

  • Typo when copying from a photo
  • OCR confusion (5/S, 0/D, 1/L)
  • Truncated or padded string (not exactly 17 characters)
  • Illegally included I, O, or Q
  • Invented or altered VIN that was not recalculated

Fix transcription errors before assuming fraud. Compare the dash plate and door jamb as described in where to find your VIN.

What success does not mean

A valid check digit is a low bar. Cloned VINs copied from a real wrecked donor often pass because they are real strings. The check digit cannot detect:

  • Mileage rollback
  • Salvage or flood title brands
  • Unrepaired recall conditions
  • Whether the VIN plate was transplanted

Use NHTSA recall lookup for U.S. safety campaigns (NHTSA recalls by VIN) and a separate history product for title brands.

Regional notes

ISO 3779 defines the VIN structure worldwide. Check-digit enforcement is especially consistent for vehicles built for or registered in markets that adopted the North American calculation practice. Some older or specialty vehicles may predate modern check-digit expectations. If a pre-1981 vehicle has a shorter serial, do not force it into the 17-character algorithm.

More standard background: ISO 3779 VIN standard. European market nuances: European VIN differences.

Practical workflow

  1. Capture the VIN from two physical locations.
  2. Paste into DecodeAnyVin.
  3. Confirm check digit status in the result.
  4. If invalid, re-read ambiguous characters; do not “fix” the VIN to force a brand you expect.
  5. If valid, continue with year, plant, and descriptor review (how to read a VIN).

Transposition and OCR edge cases

The weighted check digit catches many single substitutions. It is weaker against some multi-character edits carefully chosen by someone who recalculates position 9. Casual fraudsters often change a serial digit and forget to recompute the check digit—those fail immediately. OCR pipelines on phone photos frequently invent illegal letters; reject any decode attempt that includes I, O, or Q and re-capture the plate.

When two candidate readings differ by one character, compute or decode both. Only one should pass. If both somehow pass, you are not looking at a one-character issue—escalate to physical inspection of multiple VIN locations.

Check digit in insurance and registration workflows

Insurers and DMV systems often refuse VINs that fail check-digit validation. That protects databases from garbage entries, but it also means a mistyped character on a bill of sale can block same-day registration. Keep a photo of the door label in the glovebox folder you take to the clerk. If a dealer’s contract shows a failing VIN, fix the contract before you sign rather than “sorting it later.”

Implementing the algorithm yourself

Developers sometimes off-by-one the weights or forget that position 9 is skipped in the sum. Unit-test against known valid VINs from your own vehicles and against deliberate single-character mutations that must fail. DecodeAnyVin already performs this validation on the homepage decoder; use it as a reference oracle when building internal tools.

For spreadsheet users, transliteration mistakes on S, Z, and H are the usual bugs. Print the letter-value table next to your sheet until the process is muscle memory.

The check digit is your first automated filter—not the last word on vehicle legitimacy. Use it every time you type a VIN for parts, insurance, or a purchase decision.

Decode a VIN free → More guides

Related guides