MileageCurve

Methodology

Where the numbers come from, how they are computed, and what they cannot tell you.

Sources

Everything here derives from the NHTSA Office of Defects Investigation flat files, which are United States government work and in the public domain. Two sets are used:

FileWhat it providesRecords
FLAT_CMPLOwner complaints, counted once per complaint (the file lists a complaint once for every component it names). Field 18 carries mileage at failure. The count is complaints about the generations on this site.878,697
FLAT_RCL_PRE_2010
FLAT_RCL_POST_2010
Every recall campaign, before and since 2010, including the DO NOT DRIVE and PARK OUTSIDE severe advisories. The count is campaigns covering the generations on this site.3,048

How pages are grouped

Pages cover a model generation, not a model year. Generation is how a vehicle is actually engineered and how buyers think about it, and grouping this way avoids thousands of near-empty pages. The generation map was compiled from public references and audited for overlaps, gaps and boundary errors before use.

Where a manufacturer sold an old and a new generation in the same model year — the 2007 Silverado, the 2014–15 Rogue, the 2024 Traverse — NHTSA records do not separate them. Those years are assigned to the newer generation and flagged on the page as mixed. Where NHTSA does file the carryover separately (Malibu Classic, for instance), no ambiguity arises.

What is computed

For each generation: the distribution of mileage-at-failure across all complaints that record one; the same distribution per vehicle system; complaint counts by model year; recall campaigns; and reported crashes, fires, injuries and fatalities. Mileage values above 500,000 or at or below zero are discarded as data-entry errors. A distribution is only drawn when at least 30 complaints carry mileage, and a page is only published at 100 or more.

The shape label — early, late or spread — is derived mechanically from complaint density (reports per 1,000 miles) in three windows: 0–12,000, 20,000–80,000 and 100,000–200,000 miles. Density, not share, because windows of different width are not comparable as shares. No judgement is applied.

What these numbers are not

They are not a failure rate. Complaint counts reflect what owners chose to report, not how often a part fails per vehicle sold. Converting to a rate needs production volume by model and year, and no free, authoritative source for that exists. The obvious substitute — the affected-vehicle count published with recall campaigns — was tested against known US sales figures and rejected: it overstates by a median factor of 7.6, because most campaigns span several model years while the affected count is given for the campaign as a whole.

So this site does not rank vehicles against each other. It describes what happens to a given vehicle, and when. Popular models accumulate more complaints simply by being common, and a larger number here is not by itself evidence of a worse car.

Reproducibility

The pipeline is plain Python with no external dependencies: download the source files, build the database, render the site. Anyone can reproduce every figure on this site from the original government data.

Data snapshot: 2026-09-26. Rebuilt monthly, as NHTSA publishes.

How to read a page here

Start with your model year. Every vehicle page opens with a row of tiles, one per model year, each carrying that year’s own median. Most people arrive knowing the year on the title rather than which generation it belongs to, and the tiles exist so you do not have to work that out. A year with fewer than thirty reports carrying an odometer reading shows no number at all rather than one drawn from a handful — a median of nine reports looks exactly as solid on a page as a median of nine hundred.

Read the shape before the number. A generation whose reports cluster tightly at one mileage is describing a part that fails; one spread across the whole range is describing ordinary wear. The two call for different decisions — the first is worth asking a seller about by name, the second is just an old car — and a single average sits between them and describes neither.

The middle half is the honest part of the curve. Every page shows the range between the 25th and 75th percentile, and that band is where half the reports live. The tails matter less than they look: one report at 300,000 miles proves that a car reached it, not that yours will.

Twelve thousand miles is a line this site draws, not one the world draws. Reports filed below it describe something that was wrong from the start rather than something that wore out, and the pages shade that region so the distinction is visible. It is a convention, stated plainly so you can disagree with it.

Figure 1 · Toyota Prius, two generations

Same model name, different mileage curve

Share of each generation’s own mileage-tagged reports filed at or below each mileage, on a linear 0–200,000-mile axis. Shares of reports, not failure rates — and not a ranking.

  • Prius 2004–2009 — 5,987 reports with mileage
  • Prius 2010–2015 — 3,204 reports with mileage

Half of the Prius 2010–2015 reports arrive by 11,000 miles; the Prius 2004–2009 takes 54,000. Same nameplate, different curve — that is what every page here shows.

Source: NHTSA Office of Defects Investigation, public domain.