Guide ECU & Remapping · Vehicle identification & diagnostics
Understanding VIN Numbers: Structure, Decoding and Limitations
Learn how modern VINs are structured, what local format checks and NHTSA vPIC lookups can reveal, and what a VIN decode cannot prove.
A Vehicle Identification Number (VIN) is an identifier assigned by a vehicle manufacturer. A decoder can interpret some of its structure or compare it with a database, but a string that looks like a VIN is not automatically genuine, and the characters do not provide a complete history of a vehicle.
The modern 17-character format
For vehicles within its scope, U.S. 49 CFR Part 565 specifies a 17-character VIN and a permitted character set. This is a useful reference for many modern VINs, but it does not mean every vehicle ever made, every older identifier, or every vehicle in every market follows identical requirements. NHTSA’s vPIC service is intended for model years 1981 onward; it does not decode vehicles built to earlier VIN standards, and its data are strongest for vehicles intended for sale or import into the United States.
In the permitted U.S. character set, letters I, O and Q are excluded. Avoiding characters that can be confused with numerals such as 1 and 0 helps reduce transcription ambiguity. The VIN Decoder trims spaces at either end and accepts lowercase by converting it to uppercase, but it requires exactly 17 characters and rejects I, O and Q. It does not accept internal spaces or punctuation.
Common VIN sections and positions
A 17-character VIN has structure, not a universal decoder
1–3 · WMI
Manufacturer identifier under the applicable assignment system.
4–9 · VDS
Manufacturer-defined descriptor; represented attributes vary.
10–17 · VIS
Vehicle identifier within the manufacturer's system.
- May encode: position 10 commonly represents model year where that convention applies.
- Needs authoritative context: manufacturer-specific character meanings and exact assignments.
- Rule-specific exception: for certain low-volume manufacturers, positions 12–14 also contribute to the manufacturer identifier.
- Position alone cannot establish: vehicle history, authenticity, condition, or a universal meaning.
Many VIN references describe three sections: WMI, VDS and VIS. The labels help organize the characters, but the manufacturer-assigned meaning of individual positions is not one universal plain-language codebook.
WMI — World Manufacturer Identifier (positions 1–3)
This identifies a manufacturer and vehicle type under the applicable assignment system. An exact manufacturer match needs an authoritative assignment or database.
VDS — Vehicle Descriptor Section (commonly positions 4–9)
These are manufacturer-defined descriptive characters. The attributes represented and their positions depend on applicable rules and manufacturer information.
VIS — Vehicle Identifier Section (positions 10–17)
This section identifies the particular vehicle within the manufacturer’s system. Position 10 commonly encodes model year in systems that use this convention.
There is a U.S. regulatory nuance: Part 565 formally describes positions 1–3, positions 4–8, a separate check digit at position 9, and positions 10–17. For certain low-volume manufacturers, positions 12–14 also contribute to the manufacturer identifier. So the familiar WMI/VDS/VIS grouping is a helpful overview, while the rules that apply to a particular VIN determine how its characters are assigned and interpreted.
The manufacturer supplies the decoding information for its format. A character position should not be treated as having one globally fixed meaning across all manufacturers, vehicle types and markets. Database-returned vehicle attributes are a separate layer: they come from the database’s records, not from a universal character legend.
Model-year codes can need context
In U.S. Part 565, position 10 represents model year for covered vehicles. A model year is the manufacturer’s designation and is not necessarily the calendar year when the vehicle was assembled. A year-code character can recur in different cycles, so the character alone may leave more than one plausible year.
The current U.S. rules provide additional context for certain passenger cars, multipurpose passenger vehicles and trucks with a gross vehicle weight rating of 4,536 kg (10,000 lb) or less: the character in position 7 helps distinguish the 1980–2009 from the 2010–2039 model-year ranges. Other vehicle categories and markets can follow different provisions. NHTSA’s vPIC also recommends providing a model year when using its API to resolve year ranges.
Hex Labs’ local table is intentionally much smaller than vPIC. It maps position 10 to a base year in a 1980–2009 table and displays possible 30-year-cycle years. It does not use position 7, infer a vehicle class, or consult a manufacturer’s records. Treat these as rough code-cycle candidates, not a determination of model year; for some inputs the simple cycle list can include a future year. A database result or vehicle documentation may provide needed context.
Check digits are a limited transcription check
For vehicles subject to U.S. Part 565, position 9 is a check digit calculated from the other VIN characters using the regulation’s method. Its stated purpose is to help verify transcription accuracy. Requirements and conventions should not be generalized to every VIN in every jurisdiction.
The Hex Labs VIN Decoder does not calculate or validate a check digit. It checks the length and allowed characters, then displays the sections and any local-table matches. Even a mathematically passing check digit would not establish that an identifier was legitimately assigned, that a physical vehicle matches it, or that records attached to it are authentic.
Local checks and optional NHTSA lookup
The local check runs in your browser. It normalizes outer spaces and letter case, checks the 17-character allowed format, splits the sections, checks a small built-in WMI table and displays the limited year-code candidates. A local match means only that an entry exists in that small table; no match means only that the WMI was not in that table. Neither result proves issuance or a complete vehicle specification.
The separate Request NHTSA vehicle details action sends the normalized VIN directly from your browser to the NHTSA vPIC API. No request is made while typing, and Hex Labs does not proxy it. Hex Labs sends the VIN and requests JSON; it does not send a model-year parameter. NHTSA recommends providing a model year to resolve year ranges when using the API. The dataset is based on manufacturer-submitted information; NHTSA describes vPIC as focused on vehicles intended for sale or import into the United States, with limited results possible for other vehicles. Returned values can be partial, unavailable or absent.
Hex Labs displays only selected non-empty fields from the response: make, model, model year, vehicle type, body class, manufacturer, plant country, engine model, displacement, cylinder count, primary fuel type and drive type. The request has a 12-second timeout and can be cancelled if the input changes or the component closes. A timeout, no result or missing fields says nothing conclusive about whether the VIN was issued.
The page does not save the current VIN or results in browser storage, and VIN/result inputs are not sent through Hex Labs analytics. When the tool opens, it attempts to remove a last-vin value saved by an older version. If you choose the external lookup, the VIN is sent to NHTSA vPIC; Hex Labs is not affiliated with or endorsing NHTSA.
What VIN decoding cannot establish
A VIN decode by itself does not establish ownership, title status, theft status, accident or service history, mileage accuracy, mechanical condition, or the authenticity of documents associated with a vehicle. The Hex Labs tool is not a vehicle-history service. Confirm important identifying details against the vehicle and appropriate records; database coverage and manufacturer reporting vary.
Use the VIN Decoder for its bounded local format check and, only if you choose, an external vPIC request. For the official rules, consult 49 CFR Part 565; for API methods and dataset notes, see the NHTSA vPIC documentation and vPIC overview. Hex Labs does not provide or imply official vehicle-history data.