Sources · steps · limits

Methodology: where the data comes from

Last verified 2026-11-02 · Sources: NHTSA vPIC, NHTSA Recalls and the 18 state agency pages in states.py · Report an error

Every plate and VIN fact on this site comes from one of the sources below. Nothing here is bought from a broker, scraped from a competitor or guessed to fill a gap.

Sources we check

SourceURLUsed forLast checked
NHTSA vPIC APIhttps://vpic.nhtsa.dot.gov/api/VIN decode: make, model, year, trim, body class, engine, plant and the vPIC error code2026-11-02
NHTSA vPIC decoderhttps://vpic.nhtsa.dot.gov/decoder/Re-checking a decode by hand in a browser2026-11-02
NHTSA Recalls APIhttps://api.nhtsa.gov/recalls/recallsByVehicle?make=honda&model=accord&modelYear=2003Open recall campaigns by make, model and model year2026-11-02
State motor vehicle agencies (18)https://freeplatelookup.com/license-plate-lookup/Plate format, front plate, inspections, title brands and record access; agency names and URLs live in states.py, patterns in formats.py2026-11-01
18 U.S.C. § 2721–2725 (DPPA)https://www.law.cornell.edu/uscode/text/18/2721Why a plate cannot return an owner name or address2026-11-02

Open recalls are NHTSA's. Readers who want to search by hand can use NHTSA's public recall lookup at https://www.nhtsa.gov/recalls; the decoder calls the API endpoint in row 3 because it needs JSON rather than a web page.

The state rules are hand-written from the agency pages. The 18 agencies behind the guides are California Department of Motor Vehicles; Texas Department of Motor Vehicles (TxDMV); Florida Department of Highway Safety and Motor Vehicles (FLHSMV); New York State Department of Motor Vehicles; Pennsylvania Department of Transportation (PennDOT); Illinois Secretary of State, Driver and Vehicle Services; Ohio Bureau of Motor Vehicles (BMV); Georgia Department of Revenue, Motor Vehicle Division; North Carolina Division of Motor Vehicles (NCDMV); Michigan Department of State (Secretary of State); Minnesota Driver and Vehicle Services (DVS), Dept. of Public Safety; Arkansas Department of Finance and Administration, Office of Motor Vehicle; Nevada Department of Motor Vehicles; Oregon DMV (Oregon Department of Transportation); Colorado Division of Motor Vehicles (Dept. of Revenue); Utah Division of Motor Vehicles (Utah State Tax Commission); Nebraska Department of Motor Vehicles; New Jersey Motor Vehicle Commission (MVC). The agency name and URL for each state are stored in states.py, the passenger plate patterns and their checked date in formats.py, and every state guide links its agency in the Sources section at the bottom. The 30-site comparison on the lookup-sites page is this site's own test from 2026-11-01, not an external source, and the page says so.

How it works

  1. VIN decode. The VIN is checked against the 17-character pattern (I, O and Q are never valid) in the browser and again in worker.js before any request is made. The worker then calls https://vpic.nhtsa.dot.gov/api/vehicles/DecodeVin/<VIN>?format=json.
  2. Field mapping. The response keeps only the fields listed in FIELDS in worker.js — up to 19 manufacturer-reported values. Empty values and "Not Applicable" are dropped, so a blank cell means NHTSA has no data for that variable, not that the vehicle lacks the feature. The result is cached by VIN for 24 hours (cacheTtl 86400).
  3. Recall lookup. If the decode returned a model year and a model, the worker calls https://api.nhtsa.gov/recalls/recallsByVehicle with the decoded make, model and year, and keeps up to 20 campaigns: NHTSA campaign number, component and summary.
  4. State rule display. There is no state-rules API. states.py holds the agency, plate text, inspection and title notes for 18 states; formats.py holds the passenger patterns and the date they were checked. The page generator prints those values and links the agency. Changing a rule is a manual edit followed by a rebuild — that is the step most likely to lag.
  5. Plate format check. Runs entirely in the browser. formats.py is exported as a JSON block in the page and a.js tests the plate against every state pattern, listing all matches. The plate never leaves the browser and is not logged.
  6. VIN examples. The three decoded VINs are a dated snapshot of live vPIC responses from 2026-11-02; the returned values are archived in docs/vin-examples-2026-11-02.json. They are not refreshed automatically.

Known limitations

Reporting a problem

If a source above contradicts a page, send the page URL and the official link through the corrections page. Corrections that check out against the source are applied and logged there.