Skip to main content
Back to all articles

What is a VIN Really? And Why Your Decoder Can Be Wrong

Bertram Sargla10 min read

TL;DR: A VIN is a 17-character code assigned by the manufacturer. Positions 1–11 are standardized; positions 4–8 are not — they're a manufacturer code that means different things at different brands. That's why two decoders give different answers for the same VIN. Here's how to read the parts that are reliable and treat the parts that aren't with appropriate skepticism.

I run a VIN decoder for a living. I'm going to tell you something most companies in this space won't: VIN decoders are imperfect, and any decoder that claims 100% accuracy is either lying or has never been tested on a sufficiently weird VIN.

That's not because the people running the decoders are sloppy. It's because the VIN system was designed to be unique, not to be decoded by outsiders. The manufacturer knows what each character in their own VINs means. Everyone else is reverse-engineering from a sample.

The good news: this honest framing actually makes you a better used-car buyer. Once you understand what a decoder can and can't tell you, you stop expecting magic and start asking the right next questions.

The 17 characters, demystified

A 17-character VIN since 1981 follows ISO 3779, which divides it into three blocks:

Positions 1–3 — WMI (World Manufacturer Identifier)

  • Position 1: country/region of manufacture
  • Positions 2–3: manufacturer

Standardized globally. A VIN starting with "WBA" is BMW. "VF1" is Renault. "JM1" is Mazda Japan. Decoders rarely disagree on these.

Positions 4–8 — VDS (Vehicle Descriptor Section)

  • Five characters that describe the vehicle: model, body type, engine, transmission, restraint system, etc.

This is where decoders disagree. The standard says the manufacturer assigns this section, but it doesn't dictate what each character means. Every brand has its own coding system, and those systems change over time. A "B" in position 5 of a BMW 2010 means something completely different from a "B" in position 5 of a Mercedes 2010 or a BMW 2018.

Position 9 — Check digit

  • A mathematical checksum of the other 16 characters. Catches typos. Required in North America, optional in Europe.

European VINs sometimes have a check-digit position that's "wrong" by the North American algorithm. That doesn't make the VIN invalid — it means the European manufacturer didn't follow the optional check-digit rule. Some decoders flag European VINs as invalid for this reason. They're wrong.

Position 10 — Model year

  • A letter or number that encodes the model year. The encoding rolls every 30 years: 'A' was 1980, 2010, and will be 2040.

Two model-year errors are common:

  1. Decoders mistake the 30-year cycle. A VIN with a position-10 of 'B' that's clearly recent is 2011, not 1981. Most decoders get this right but some legacy tools don't.
  2. Model year ≠ calendar year of manufacture. A 2024-model-year car can be built in mid-2023. The VIN tells you the model year, not the calendar year. The factory build plate or the registration date tells you the calendar year.

Position 11 — Plant code

  • Where the car was assembled. Manufacturer-specific.

This one is often more reliable than position 4–8 because the assembly plant codes are visible to the dealer network and rarely change.

Positions 12–17 — Serial number

  • A unique production-sequence identifier for that specific vehicle.

Not decodable in any useful way. They're just a counter.

Why two decoders disagree

Take a real example: a Toyota VIN starting "JTM" or "JTD" — both Toyota Japan WMIs.

The "TO" in positions 5–6 of a Toyota VIN historically meant different vehicle families depending on the production year. Toyota changed their VDS assignments around 2010 and again around 2016 to accommodate new platforms (TNGA-K, TNGA-C). A decoder built from a 2009 reference sheet will tell you a 2018 VIN is a model that hasn't been made since 2010. A decoder built on the post-2016 sheet will tell you the right thing for new cars and the wrong thing for 2010-era ones.

Most decoders work by maintaining a manual mapping of "VDS pattern → vehicle attributes" learned from registry data. Two decoders working on different registry samples will produce slightly different mappings. Both can be locally correct and globally inconsistent.

Carlytics's decoder is fed by Finnish Traficom data (5 million VINs), Norwegian Vegvesen data, RDW for the Netherlands, and a few other registries. When we encounter a VDS we haven't seen before, we either fall back to the manufacturer's vPIC entry (where one exists) or we leave the field null. We'd rather show you a gap than guess.

Other decoders make different trade-offs. Some prefer to fabricate the most-likely value and accept a higher error rate. There's a real engineering argument for that — empty fields create UX issues — but we hold the line on "null beats wrong" because a wrong year on a paid report is a refund trigger, and a null year that we explain is just a known limitation.

When the decoder can be wrong

Five specific failure modes you should know about:

1. The "no VDS coverage" case

The decoder has never seen the specific positions-4–8 pattern in your VIN before. Carlytics will tell you which fields we couldn't determine. Other decoders may silently fabricate plausible values. Test for this by entering the same VIN into two or three decoders. If they disagree on year or model, neither has authoritative data — they're guessing.

2. The "manufacturer reused the VDS" case

A manufacturer recycles a VDS pattern between two completely different vehicles separated by years. The decoder sees the pattern and returns the older meaning even though the model year is recent (or vice versa). Cross-check year (position 10) against the rest of the decode. If the decoded model didn't exist in the decoded year, the decoder has a coverage gap.

3. The "regional variant" case

The same model has different VDS encodings in different markets. The European version of a US car can carry a US-pattern VIN if it was originally imported, or a Euro-pattern VIN if it was built in Europe. Decoders trained on one market's data sometimes mislabel imports.

4. The "post-build modification" case

The VIN tells you what left the factory. It does not tell you what the car is now. An engine swap, a body conversion, or a re-VIN at customs all leave the VIN unchanged but make the decode subtly wrong relative to the physical car. The chassis says one thing; the engine bay says another.

5. The "transposed character" case

The seller misread the VIN and gave you a 16- or 18-character string, or transposed a 5 and an S (they look alike on weathered plates) or a B and an 8. Most decoders catch this with a length or character-set check. The honest fix is to compare the seller's stated VIN against three places on the car: the windshield plate, the door-jamb sticker, and the registration document. All three should match exactly.

What the VIN tells you reliably

Despite all of the above, the parts a VIN decoder gets right consistently are the parts that matter most for catching scams:

  • Country/region of manufacture (position 1, very reliable)
  • Manufacturer (positions 2–3, very reliable)
  • Model year (position 10, very reliable for cars built in the standard production years; less so for the edges of model years that overlap two calendar years)
  • Make (derived from WMI, reliable)

These four are enough to catch most cross-border scams: if the seller says "2020 Audi A4" and the VIN decodes to a 2017 Skoda, the conversation is over before it starts.

The parts that are less reliable across decoders — the specific engine variant, the body style for vehicles that came in multiple body styles on the same VDS, the trim level — are also the parts where you can verify on the car itself by looking at the build plate in the door jamb or under the hood.

How to read a VIN check honestly

When you run a VIN through any decoder, including ours, mentally split the output into three tiers:

Tier 1 — high confidence: WMI, manufacturer, country of manufacture, model year. Believe these.

Tier 2 — medium confidence: model name, body style, engine displacement. Cross-check against the listing; if they match, believe them. If they don't match, the listing might be wrong, the decoder might be wrong, or the car might not be what the seller thinks it is. All three are useful to know before you travel.

Tier 3 — lower confidence: exact trim, exact engine code, transmission variant for cars with multiple transmissions on the same VDS. These are best verified against the build plate in person.

A good decoder report makes the confidence levels visible. Ours flags any field where the underlying source was a fallback rather than a direct match. Others flatten everything into "decoded" or "not decoded", which is less useful but easier to read.

What we'd change if we could

Honestly: we'd ask manufacturers to publish their VDS encodings. They won't — it's competitive data — but in a fair world it would be a public reference like the WMI list. Until then, the decoder ecosystem improves by trading registry samples (or, for some commercial decoders, by licensing them from each other). We work the open-data lane.

If you ever find a VIN our decoder gets wrong, email the team with the VIN and what we got wrong. We re-run it by hand, fix the underlying mapping, and the next person to enter that VIN gets the correct answer. That feedback loop is the only way the decoder gets less wrong over time.

What to do next

Run a VIN. Look at the result. If a field reads "data not available," that's our honest answer — we don't have authoritative coverage of that VDS pattern, and we'd rather tell you that than guess. If the result decodes cleanly, you can use the high-confidence fields (country, manufacturer, model year) to sanity-check the listing before you spend any more time on the car.

Related reading: How to check a VIN before buying a used car in Europe · Understanding VINs: the complete guide · Free VIN check vs paid report

Ready to Check a VIN?

Enter any 17-character VIN to instantly decode vehicle specs, check for safety recalls, and access vehicle history — free.

Check VIN for Free
What is a VIN Really? And Why Your Decoder Can… | Carlytics