Home Blog

We Tested 100 VINs: Which Pass Validation and Why?

We Tested 100 VINs: Which Pass Validation and Why?

Short answer: we ran 100 test VINs through our validator and 38 passed and 62 failed. A wrong check digit, a letter I, O or Q and a wrong length were all caught every time. What got through was more interesting: a VIN with two look-alike characters swapped, a string of 17 ones, and a made-up European style VIN that passed by luck.

If your own VIN just failed, the table below tells you what each message means and what to try. The rest is the evidence.

Your VIN Failed. Now What?

What the validator says What it usually means What to try
Contains characters a VIN cannot use: O, I or Q A typo. A VIN never uses those letters, so you typed O for 0, I for 1 or Q for 0 Swap in the digit, then check again. All 10 of our look-alike tests were caught this way
Check digit is X but the math gives Y One character is probably wrong, or the VIN does not use this check at all Compare each character with the car or the paperwork, or find the missing digit with the check digit calculator
Has 16 or 18 characters A character was dropped or added when copying Count against the original. Nothing else is checked until the length is right
Contains a hyphen, dot, dash or space The VIN was typed or pasted with punctuation Remove it. A hyphen, a dot and an en dash all failed for this reason
A European or Japanese style VIN fails the check digit The number was not built with this formula, so a real one can fail Treat the result as “not checkable”, not “fake”
It passes, but the car does not match Passing only means the 17 characters are consistent Read what a valid VIN does not prove below

How We Tested

We built 100 test cases in eight groups and ran every one through the validator code that powers our bulk VIN validator. Then we checked each answer against a second, separately written check-digit routine. The two agreed on all 100.

The VINs are synthetic. The valid ones use real make and model patterns from our own data with made-up serial numbers, and the check digit was worked out so they pass. They are not real cars. Download all 100 with the results from the CSV file.

The Results

Group What we tried Cases Passed
Valid Real-looking patterns from 20 makes, 5 of them with an X check digit 25 25
Wrong check digit A valid VIN with the ninth character changed 15 0
Letters I, O, Q A typo for 0 or 1 10 0
Wrong length 8 to 23 characters 12 0
Formatting Lowercase, spaces, quotes, hyphens, dots 8 4
Swapped neighbours Two side-by-side characters swapped 12 2
Non-US style Made-up European and Japanese style VINs 10 1
Edge cases All ones, all zeros, famous samples 8 6
Total   100 38

Of the 62 failures, 36 failed only the check digit, 10 only had a forbidden letter, 12 only had the wrong length, 3 had a bad character and the wrong length, and 1 broke in two when a space split it.

What Slipped Through

Quotes and commas are ignored. The bulk validator is built for pasted spreadsheets, so it strips quotes and a trailing comma. A VIN in quotes or followed by a comma passed. Lowercase letters and spaces around the VIN passed too.

Swapped neighbours. Ten of our twelve swap cases failed, but we built the other two on purpose with characters that count the same. So we tested every neighbouring pair in all 25 valid VINs: 385 swaps in total.

Swaps Count Slipped through
Away from the check digit 336 24
Touching the check digit (positions 8, 9, 10) 49 7

Every one of the 24 that slipped through away from the check digit swapped two characters with the same value in the check-digit formula, such as A and J, or H and 8. Every such pair slipped through. No other swap did. Next to the check digit, 7 of 49 got by, about one in seven. That is a small sample, and a random digit matches about one time in eleven.

Boring VINs pass. 11111111111111111, 00000000000000000 and 99999999999999999 all pass, and so do the sample VINs found in many tutorials. AAAAAAAAAAAAAAAAA and ZZZZZZZZZZZZZZZZZ fail. Passing the check says nothing about whether a VIN looks sensible.

One in ten non-US style VINs passed. We made up ten European and Japanese style VINs and did not work out a check digit for them. One passed, which is what chance predicts. The check digit rule is a requirement in the United States (49 CFR Part 565); other markets are not bound to it, so a genuine VIN from elsewhere can fail this test.

A Bug We Found in Our Own Tool

Testing turned up a mistake in our single-VIN validator. Its text box stopped at 17 characters. When we typed an 18-character VIN, it dropped the last character and answered “Valid VIN”. Five of our wrong-length cases (18, 19, 20, 22 and 23 characters) would have been called valid the same way.

We fixed it before publishing this article. The box now accepts longer text, so it reports the real length and fails it.

The two tools also differ on purpose. The single validator shows no verdict until you reach 17 characters, so our seven short cases got “keep typing” instead of a fail. It also does not strip quotes or commas, so two of our formatting cases failed there and passed in the bulk tool. On the 93 cases where the single validator gave a verdict, it matched the bulk tool on 91.

What a Pass Does Not Prove

A valid check digit means the 17 characters are consistent with each other. It does not prove that the car exists, who owns it, whether it was stolen, whether it has a clean history, or that the VIN on the paperwork belongs to the vehicle in front of you. Anyone can build a VIN that passes, and we just did it 25 times. To check a real car, read the VIN from the car itself, compare it with the papers, and see how cloning scams work.

Try It Yourself

Paste any of the 100 VINs into the VIN validator, or all of them at once into the bulk VIN validator. Compare what you get with the CSV.

Keep Reading

Free tools: VIN Validator · Bulk VIN Validator · Check Digit Calculator · VIN Generator

← Back to all articles