VIN Methodology & Data Dictionary
How the TruckCodex VIN reference is built — sources, coverage, field definitions, refresh cadence, limitations, and a citation guide for academic and journalistic use.
What this section is
The TruckCodex VIN subsystem is a free public reference that decodes every vehicle identification number we encounter, aggregates the results, and cross-pollinates them with FMCSA inspection, crash, and NHTSA recall data. It is not a SaaS product. There are no signup gates or paywalls; the site may show disclosed ads or partner offers elsewhere. The VIN reference itself stays free to browse. The audience is fleet managers, owner-operators, mechanics, researchers, journalists, regulators, and curious members of the public.
The bar for every page in this subsystem is simple: does it give a real human a real answer they can trust and cite? If a page is sparse, we say so plainly rather than pad it with filler.
Data sources
| Source | Operator | What it provides | Refresh |
|---|---|---|---|
| NHTSA vPIC API | NHTSA | Vehicle Product Information Catalog. Primary VIN decoder. Translates 17-character VINs into 140+ structured fields including make, model, year, body class, fuel type, brake system, plant of manufacture, and dozens of safety-equipment flags. Daily-updated reference data. | On-demand at first lookup; weekly batch refresh |
| FMCSA Inspection Unit reports | FMCSA | Roadside inspection records. Each inspection lists the vehicle's VIN, make, year, plate, carrier (USDOT), inspection date, level, violations cited, and out-of-service status. The discovery feed for VINs we hadn't seen before. | Daily, with 24h upstream lag |
| NHTSA Recalls | NHTSA | Recall campaigns indexed by make, model, and model year. Used to cross-reference each decoded VIN against active recall campaigns. | Daily |
| FMCSA Crash File | FMCSA | Reportable crashes involving commercial motor vehicles. Joined to VINs via the vehicle unit table when the crash record carries a VIN. | Daily, with 24h upstream lag |
How they combine: FMCSA inspections supply the population of VINs (the "discovery" feed). NHTSA vPIC supplies the structured decode for each VIN. Recalls and crashes are joined back via (make, model, year) and the unit table. Every VIN page footer displays two timestamps per source: when TruckCodex captured the data, and when the upstream database was current.
Coverage statistics
Counts are queried live from the database and cached for 1 hour. Last decode batch: Oct 26, 2026 .
Decode confidence model
Every decoded VIN carries a decode_confidence
score derived from the vPIC response. The score is recorded on the
VINRecord row at decode
time and never recomputed unless the VIN is re-decoded.
| Score | Meaning | Typical cause |
|---|---|---|
| 100 |
vPIC returned ErrorCode "0" — clean decode with no warnings.
|
Standard 17-character VIN, post-1981, valid check digit. |
| 50 | vPIC returned warnings (e.g. invalid check digit, unrecognized WMI, suspicious model year) but still produced Make/Model. | Typo in roadside-inspection data entry; obscure WMI from re-manufactured or imported vehicles; partial decode. |
| 0 | vPIC could not decode the string into any vehicle attributes. |
Pre-1981 VINs (5-13 chars), data-entry errors, or placeholders
like "123456"
used by inspectors when no readable VIN was on the vehicle.
|
Confidence-0 VINs with decoded_at
set are sentinelled and never re-queried — they are known-undecodable.
All aggregations (field stats, recall matches, peer comparisons) operate
only on confidence-50 and confidence-100 records.
Field Catalog
Phase 1 surfaces hub pages for 19 vPIC fields. Each field has a directory of distinct values and per-value detail page with VIN counts, inspection rate, OOS rate, and recall coverage. "Bucketing" indicates that TruckCodex groups raw values into ranges (e.g. continuous horsepower into power-class brackets) for the hub URL.
| Field | vPIC source | Description | Bucketed? | Distinct values |
|---|---|---|---|---|
|
Brake System
brake_system
|
BrakeSystemType | The braking system installed on the vehicle, as decoded from the VIN. Air brakes are standard on Class 7-8 trucks; hydraulic brakes are common on Class 1-6. NHTSA vPIC field name: BrakeSystemType. | no | 5 |
|
Fuel Type
fuel_type
|
FuelTypePrimary | Primary fuel the vehicle runs on. Diesel dominates Class 7-8 trucking; gasoline is common in Class 1-3. Electric and natural-gas variants are growing share but remain uncommon in commercial trucking. NHTSA vPIC field name: FuelTypePrimary. | no | 12 |
|
Body Class
body_class
|
BodyClass | The NHTSA body classification for the vehicle. Common values for commercial trucks include Truck-Tractor, Cab Chassis, and Truck. NHTSA vPIC field: BodyClass. | no | 55 |
|
Vehicle Type
vehicle_type
|
VehicleType | The general type of vehicle as classified by NHTSA. For trucking, the dominant types are Truck and Trailer. NHTSA vPIC field: VehicleType. | no | 9 |
|
Drive Type
drive_type
|
DriveType | The drivetrain configuration. 6x4 and 4x2 are standard for Class 7-8 on-highway trucks; AWD appears in vocational applications. NHTSA vPIC field: DriveType. | no | 23 |
|
GVWR Class
gvwr
|
GVWR (bucketed) | The gross vehicle weight rating class (1 through 8). Class 7-8 are heavy-duty trucks; Class 3-6 are medium-duty. NHTSA vPIC field: GVWR, bucketed by TruckCodex. | yes | 8 |
|
Engine Displacement
engine_displacement
|
DisplacementL (bucketed) | Engine displacement in liters, bucketed by TruckCodex into 4 ranges. Class 8 long-haul trucks typically run 12L+ engines. NHTSA vPIC field: DisplacementL. | yes | 4 |
|
Engine Cylinders
engine_cylinders
|
EngineCylinders | Number of engine cylinders. Inline-6 (6 cylinders) dominates Class 8 trucking. NHTSA vPIC field: EngineCylinders. | no | 9 |
|
Engine Model
engine_model
|
EngineModel | The specific engine model designation from the manufacturer, e.g. X15, DD15, MX-13. NHTSA vPIC field: EngineModel. | no | 1,486 |
|
Manufacturer
manufacturer_name
|
Manufacturer | The parent company that manufactured the vehicle, which may differ from the retail make. NHTSA vPIC field: Manufacturer. | no | 3,950 |
|
Plant Country
plant_country
|
PlantCountry | The country where the vehicle was manufactured. USA, Canada, and Mexico dominate Class 7-8 production. NHTSA vPIC field: PlantCountry. | no | 44 |
|
Plant State
plant_state
|
PlantState | U.S. state or Canadian province where the vehicle was assembled (NHTSA vPIC PlantState). This is assembly-plant geography, not FMCSA inspection state or carrier domicile — use /inspections/states/ or /usdot/ for those. | no | 187 |
|
Plant City
plant_city
|
PlantCity | City where the vehicle was assembled (NHTSA vPIC PlantCity). Assembly-plant geography only — not where the truck was inspected or where the carrier is domiciled. | no | 2,154 |
|
Trim
trim
|
Trim | The trim level or configuration code. For commercial trucks, trim often encodes cab/sleeper configuration. NHTSA vPIC field: Trim. | no | 1,289 |
|
WMI
wmi
|
WMI | World Manufacturer Identifier — the first 3 characters of the VIN. Useful for tracing manufacturer origin and assembly region. NHTSA vPIC field: WMI. | no | — |
|
Transmission Style
transmission_style
|
TransmissionStyle | The transmission type (automatic, manual, AMT). Automated manuals (AMT) dominate modern Class 8 trucks for fuel economy. NHTSA vPIC field: TransmissionStyle. | no | 10 |
|
Axle Configuration
axle_configuration
|
AxleConfiguration | The axle layout and steering configuration. Standard heavy-haul setups include 6x4 (3 axles, 2 driven) and 8x4. NHTSA vPIC field: AxleConfiguration. | no | 4 |
|
Cab Type
body_cab_type
|
BodyCabType | Cab style and configuration relative to the engine — conventional (cab behind engine), COE (cab over engine), or sleeper variants. NHTSA vPIC field: BodyCabType. | no | 11 |
|
Engine Horsepower
engine_hp
|
EngineHP (bucketed) | Engine horsepower output, bucketed by TruckCodex into power-class ranges. Heavy-haul Class 8 typically runs 400-600 HP. NHTSA vPIC field: EngineHP. | yes | 4 |
Bucketed fields use these ranges: GVWR Class rolls up vPIC sub-classes (1A/1B → class-1) into the eight standard Class 1–8 buckets. Engine Displacement: under-3L, 3–6L, 6–12L, 12L-plus. Engine HP: under-200, 200–400, 400–600, 600-plus.
What vPIC tells you
vPIC translates the 17-character VIN into a structured set of vehicle attributes. Encoding by VIN position:
- Chars 1–3 (WMI) — manufacturer + region
- Chars 4–8 (VDS) — model + configuration
- Char 9 — check digit (validation)
- Char 10 — model year
- Char 11 — assembly plant
- Chars 12–17 (VIS) — sequential serial number
What vPIC doesn't tell you
vPIC describes how a vehicle was built, not what has happened to it since. It does not include:
- Current odometer reading or mileage history
- Title, lien, or ownership records
- Modifications or aftermarket equipment
- Accident history beyond the FMCSA crash file
- Service or maintenance records
Recall matching
We match a VIN to a recall campaign when its decoded make, model, and model year all match the campaign's affected range. A match indicates the vehicle may be affected; only the manufacturer can confirm a specific VIN against the campaign's serial-number range. For a VIN-specific recall lookup, consult NHTSA's recall lookup.
Inspection signals
The "OOS rate" displayed on hub pages is computed directly from FMCSA inspection records: the number of inspections that resulted in an out-of-service order, divided by total inspections involving vehicles with the configuration in question. We do not editorialize. We do not compute a "safety score" or "risk rating." Numbers and medians are shown side by side; readers draw their own conclusions.
Update cadence
| Job | Frequency | What it does |
|---|---|---|
| FMCSA inspection import | Daily (cron) |
Pulls the previous day's roadside inspections. Newly-seen VINs are
upserted into VINRecord
and queued for vPIC decoding.
|
| VIN re-decode | Weekly (Sun 03:00 UTC) | Re-queries vPIC for any VIN with a decode older than 90 days. NHTSA periodically backfills make/model decoding for previously-undecodable VINs, and this catches those. |
| Aggregation refresh | Quarterly |
Rebuilds field_value_stats,
field_pair_stats,
vin_recall_match,
and model_year_inspection_stats.
Hub pages read exclusively from these.
|
| Recall + crash import | Daily | NHTSA recall campaigns and FMCSA crash records are pulled and joined to existing VINs by (make, model, year). |
Limitations & known gaps
We list these openly because trust requires it. None of these affect the published numbers — but researchers framing analyses against this dataset should know what's in scope and what isn't.
-
Pre-1981 VINs are undecodable. Before 1981 the VIN
standard was 5–13 characters and varied by manufacturer; vPIC cannot
decode them. Our database includes
~216,198 confidence-0 records,
most of which are short placeholders (e.g.
"123456") entered by inspectors when no readable VIN was on the vehicle. These are excluded from all aggregations. - Safety equipment fields (FCW, ABS, ESC, lane-keep) are sparse for older trucks. NHTSA only began requiring these fields in vPIC after the 2018 reporting standard, so model years prior to ~2014 typically show "Not Applicable" or null.
- Engine HP is populated for roughly 7% of decoded VINs. Manufacturers are not required to encode horsepower in the WMI/VDS positions, and many opt out. Our HP hub pages reflect the populated subset only.
- Trailers carry minimal engine and active-safety data. This is structurally correct (a trailer has no engine), and detail pages omit these sections rather than show empty fields.
- WMI mismatches at the VIN-decode boundary. A small fraction of VINs decode to a make-slug that has no corresponding ModelYear aggregate page (e.g. unusual sub-brand slugs). The detail page handles this gracefully by linking only to pages that exist.
- Recall match is configuration-level, not unit-level. A VIN matches a recall when its (make, model, year) overlaps the campaign — this is necessary because NHTSA recalls publish ranges, not full VIN lists. Per-VIN serial-range confirmation requires the manufacturer's lookup tool.
NHTSA correction policy
When NHTSA corrects a vPIC decode after we have published it, we update the page in place with a footnote noting the prior decode and the correction date. URLs never change. A VIN page published in 2026 will remain at the same URL in 2030, with whatever the current best decoding is at that time.
How to cite TruckCodex
For academic, journalistic, or regulatory use, the following citation
block is suitable. Replace YYYY-MM-DD
with your access date.
TruckCodex VIN Database (truckcodex.com/vin/). Decoded via NHTSA vPIC API; FMCSA inspection records. Accessed YYYY-MM-DD.
TruckCodex. (2026). VIN {VIN} decode. Retrieved YYYY-MM-DD from https://truckcodex.com/vin/{VIN}/
TruckCodex. (2026). {Field label}: {Value}. Retrieved YYYY-MM-DD from https://truckcodex.com/vin/specs/{field}/{value}/
License
Government-source data (FMCSA, NHTSA) is uncopyrightable. TruckCodex's compiled aggregations are released under CC0 (public domain dedication). No restrictions on reuse, modification, or redistribution. Citation is appreciated but not required.
Corrections
For data errors that originate upstream, file a correction with the relevant agency:
- FMCSA inspection or carrier data: FMCSA DataQs
- NHTSA recall or vPIC data: NHTSA Contact