MileageCurve
  1. Home
  2. Open data

The data behind every page

Every figure on this site is computed from one file, and that file is published. It carries 322 vehicle generations across 29 makes, built from 519,530 NHTSA complaints that record an odometer reading at failure.

Download aggregates.jsonDownload generations.json

What is in it

aggregates.json carries one record per vehicle generation on this site with the figures its page prints: complaints, complaints that record mileage, the percentiles of mileage at failure, the shape of the distribution, recall campaigns and the leading systems.

generations.json carries the generation definitions: the make and model as NHTSA files them, including the other strings NHTSA uses for the same vehicle, the model years each generation covers, the platform code where one is documented, and the curated notes that explain how each boundary was drawn — including the overlaps, where a maker sold two bodies under one name in the same year.

What the numbers mean, and what they do not

These are complaints, not failures, and not a failure rate. A complaint exists because an owner filed one; nothing here counts the owners who did not. There is no denominator: no free model-level production figure exists, and the obvious substitute — the affected-vehicle count on recall campaigns — was tested here and rejected, because it overstates by a median factor of 7.6 when a campaign spans several model years.

Medians fall as generations get newer, and that is age rather than decline: a car built three years ago has not had time to reach a high odometer reading. Compare generations of similar age, never across the column. The method page sets out every step from the raw federal file to the figures here.

Licence and how to cite

The aggregates are published under CC BY 4.0: use them anywhere, including commercially, with attribution and a link back. The underlying NHTSA data is a United States government work and is in the public domain.

Suggested citation: MileageCurve, Mileage at failure by vehicle generation, derived from NHTSA Office of Defects Investigation, snapshot 2026-09-26. https://mileagecurve.com/data/

Rebuilding it yourself

The pipeline has no dependencies beyond the Python standard library: fetch the federal flat files, load them into SQLite, compute, render. The generation boundaries used are in the file above, and the snapshot date on every page says which download the figures came from.