Every car built since 1981 carries a 17-character fingerprint. That’s the VIN. Punch one in here and the decoder pulls apart the structural pieces the standard defines: where it was built, which manufacturer code it carries, what model year the tenth character points to, and whether the math behind the check digit actually holds up.
The short version
A VIN isn’t random. ISO 3779 carves those 17 characters into fixed blocks. Positions 1 to 3 are the World Manufacturer Identifier. Positions 4 to 8 describe the vehicle. Position 9 is a check digit, a tiny built-in error catcher. Position 10 encodes the model year. Position 11 is the plant. The last six digits are a serial number rolling off the line.
This tool reads all of that without phoning home. No upload, no API call, no account. You paste, it parses.
What the check digit actually proves
Here’s the clever bit. Position 9 isn’t data, it’s a checksum. Each of the other 16 characters gets a numeric value (letters too, via a fixed transliteration table), multiplied by a positional weight, summed, then taken mod 11. A remainder of 10 becomes the letter X.
If the computed value matches what’s sitting in position 9, the VIN is internally consistent. One mistyped digit and the check almost always fails. That’s the point: it catches transcription errors before they become someone else’s problem.
One caveat worth knowing. North American VINs enforce this check. A lot of European VINs technically follow ISO 3779 but skip the check-digit rule, so a “mismatch” there doesn’t mean the VIN is fake. The decoder tells you which case you’re looking at instead of just flashing red.
Reading the blocks
- WMI (1-3) identifies the maker. The very first character also pins down a region: numbers 1 to 5 mean North America, S through Z lean European, J through R cover Asia, and so on.
- VDS (4-8) holds model, body style, engine and restraint info. Decoding it fully is manufacturer-specific, so the tool shows the raw block rather than guessing.
- Model year (10) runs through a 30-year cycle. The letter B means 1981 or 2011. The digit 3 means 2003 or 2033. Because the codes repeat, the decoder lists both plausible years.
- Plant (11) is the assembly plant code. It’s a single character that only the manufacturer’s own table can fully resolve.
Why it won’t show you “2019 Toyota Camry LE”
Straight talk: the make, model and trim you see on commercial decoders come from a licensed database (NHTSA’s vPIC in the US, plus paid feeds elsewhere). That data isn’t baked into the VIN, it’s looked up from the WMI and VDS.
An offline browser tool can’t carry that whole database around. So this one stays honest and decodes the structural fields the standard actually defines. You get the region, the manufacturer code, a verified check digit, the year and the plant. For the full vehicle spec, run the same VIN through vPIC.
Common questions
Why are I, O and Q never in a VIN? They look too much like 1, 0 and 0. The standard banned them outright to kill ambiguity. If you see one, the VIN is wrong somewhere.
My VIN is 17 characters but the check digit fails. Is it stolen? Probably not. Most mismatches are typos. The rest are European VINs that don’t enforce the check at all. Re-read it character by character first.
Can I decode an older VIN? Pre-1981 VINs had no fixed length or format, so the 17-character rules don’t apply. This decoder expects the modern standard.
Does anything I paste get sent anywhere? Nope. Every calculation happens in your browser. Close the tab and it’s gone.
What’s the X in some VINs? When the check-digit math lands on a remainder of 10, the standard writes it as X. It’s a valid check digit, not a letter from the rest of the VIN.