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
| Source | URL | Used for | Last checked |
|---|---|---|---|
| NHTSA vPIC API | https://vpic.nhtsa.dot.gov/api/ | VIN decode: make, model, year, trim, body class, engine, plant and the vPIC error code | 2026-11-02 |
| NHTSA vPIC decoder | https://vpic.nhtsa.dot.gov/decoder/ | Re-checking a decode by hand in a browser | 2026-11-02 |
| NHTSA Recalls API | https://api.nhtsa.gov/recalls/recallsByVehicle?make=honda&model=accord&modelYear=2003 | Open recall campaigns by make, model and model year | 2026-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.py | 2026-11-01 |
| 18 U.S.C. § 2721–2725 (DPPA) | https://www.law.cornell.edu/uscode/text/18/2721 | Why a plate cannot return an owner name or address | 2026-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
- 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.jsbefore any request is made. The worker then callshttps://vpic.nhtsa.dot.gov/api/vehicles/DecodeVin/<VIN>?format=json. - Field mapping. The response keeps only the fields listed in
FIELDSinworker.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 (cacheTtl86400). - Recall lookup. If the decode returned a model year and a model, the worker calls
https://api.nhtsa.gov/recalls/recallsByVehiclewith the decoded make, model and year, and keeps up to 20 campaigns: NHTSA campaign number, component and summary. - State rule display. There is no state-rules API.
states.pyholds the agency, plate text, inspection and title notes for 18 states;formats.pyholds 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. - Plate format check. Runs entirely in the browser.
formats.pyis exported as a JSON block in the page anda.jstests the plate against every state pattern, listing all matches. The plate never leaves the browser and is not logged. - 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
- A decode reports only what the manufacturer filed with NHTSA. Blank trim, engine or equipment fields are common, and vPIC can return a check-digit warning without refusing the decode, so a decode is a set of reported facts about the vehicle, not an inspection of it.
- Recall campaigns are matched by make, model and model year, not by VIN. The list can include a campaign that was already repaired on a particular vehicle, and it cannot tell you whether a recall repair was completed; NHTSA's own VIN recall check is the place for that.
- State rules are written by hand and can lag. The guides were checked on 2026-11-01; fees, forms and inspection rules change without notice, and the plate patterns cover standard passenger series only — not vanity, specialty, dealer or temporary plates. Confirm with the agency before relying on a rule.
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.