How CarWhere rates model years
Every year-by-year verdict on this site is computed from federal data, not opinion. We read the government’s own complaint and recall records, weight them for severity, and compare each model year against the rest of its own model. Here is exactly how — and where the method’s limits are.
By CarWhere Research · Updated 2026-08-28 · Computed by a fixed, published algorithm
What each verdict means
Avoid. This model year carries a materially elevated federal complaint burden versus the rest of the model — often a specific, well-documented failure. Buy only with eyes open and a thorough inspection.
Caution. Above the model’s own average, or carrying an open concern worth checking, but short of the avoid line.
Solid. A middle-of-the-pack year for this model — no standout federal red flags.
Best. Among the cleanest federal records for this model, with enough years on the road to trust the signal.
Insufficient data. Too few complaints on file to rate fairly — we never call a year “best” simply because it is too new or too rare to have generated reports yet.
Where the data comes from
- • NHTSA owner complaints (Office of Defects Investigation) — every complaint a vehicle owner has filed with the federal government, including the component and the owner’s own account. Pulled from the public NHTSA complaints API. This is the only input to the verdict rate.
- • NHTSA recall campaigns — the safety recalls issued for each model year and what the defect can cause, from the NHTSA recalls API. Contributes the capped recall adder above.
- • Owner narratives — the free-text field of those same federal complaints (not a separate dataset), which the synthesis step turns into named issues. Where we label an issue “confirmed,” we cross-check public owner forums (Reddit and marque-specific forums) — this affects the issue labels, not the numeric score.
- • Make/model names are normalized to NHTSA’s canonical vocabulary via NHTSA vPIC.
CarWhere’s verified buyer-paid prices are shown alongside some years for buying context — they do not affect the reliability verdict, which is computed only from the federal complaint and recall record above.
How the score is built
- 1
Normalize the vehicle. Resolve the make and model to NHTSA’s canonical names (vPIC) and enumerate every model year on the road.
- 2
Pull the federal record. For each model year, collect all NHTSA owner complaints and every recall campaign, cached and refreshed monthly.
- 3
Weight for severity. A complaint counts as severe if it reports a crash, fire, injury, or death, or names a safety-critical system (engine, power train, steering, service brakes, or fuel). Severe complaints count double in the rate. The exact weights and thresholds are published below.
- 4
Normalize within the model. Annualize complaints by the model year’s time on the road (clamped to a 3–12 year band so a brand-new year isn’t divided by 1 and a 20-year-old year isn’t over-credited). This adjusts for exposure time but not for how many vehicles were sold. Then divide by the model’s own median, so a verdict means “worse than a typical year of this model,” not “worse than a Corolla.”
- 5
Fold in recalls and confirmed issues. Add a small, capped score adder for recall campaigns (more for fire/crash recalls) and for issues our synthesis step has independently confirmed. Exact caps below.
- 6
Apply guardrails, then verdict. Years with fewer than 15 complaints are marked “insufficient”; the two newest model years are never rated “best”; and “avoid” additionally requires at least 40 lifetime complaints so a low-volume year can’t be flagged on a handful of reports. The final score maps to avoid / caution / solid / best by the fixed thresholds below. A manual override exists only to correct data errors — a mis-mapped model, duplicate records — never to change a verdict for editorial reasons, and every correction is logged.
The exact scoring
Every weight and threshold is fixed and applied identically to all models — no per-model tuning. Here is the full calculation for one model year:
age = clamp(current_year − model_year, 3, 12) # years on the road
rate = complaints ÷ age
severe_rate = severe_complaints ÷ age # severe = crash/fire/injury/death
# OR component ∈ {ENGINE, POWER TRAIN,
# STEERING, SERVICE BRAKES, FUEL}
composite = rate + 2 × severe_rate # severe counts double
base = composite ÷ median(composite) # median over years with ≥15 complaints
recall_adder = min(0.50, min(0.30, 0.05 × recalls)
+ min(0.40, 0.20 × fire_crash_recalls))
issue_adder = min(0.75, 0.25 × confirmed_issues)
SCORE = base + recall_adder + issue_adderVerdict thresholds
| AVOID | SCORE ≥ 1.60 and ≥ 40 lifetime complaints |
| CAUTION | SCORE ≥ 1.25 |
| BEST | SCORE ≤ 0.75, no confirmed issue, not one of the 2 newest model years, ≥ 15 complaints |
| INSUFFICIENT | fewer than 15 lifetime complaints |
| SOLID | everything else |
Worked example (illustrative)
A model year with 300 complaints (90 severe), 6 years on the road, in a model whose median composite is 40, with 2 recalls (none fire/crash) and 1 confirmed issue:
rate = 300 ÷ 6 = 50 severe_rate = 90 ÷ 6 = 15 composite = 50 + 2 × 15 = 80 base = 80 ÷ 40 = 2.00 recall_adder = min(0.30, 0.05×2) = 0.10 (no fire/crash recalls) issue_adder = 0.25 × 1 = 0.25 SCORE = 2.00 + 0.10 + 0.25 = 2.35 → 2.35 ≥ 1.60 and 300 ≥ 40 → AVOID
How confident we are in each named issue
When we describe a specific failure — a transmission that judders, an engine that burns oil — we label how well the evidence holds up:
- • Confirmed — a federal complaint cluster and independent owner reports agree, or a recall backs it. Published with the numbers.
- • Reported — owners describe it, but the federal signal is thin. Published with a hedge.
- • Myth-check — forum lore the data contradicts (for example, complaints that fell sharply after a fix). We say so.
Limitations, stated plainly
- • Complaint counts are raw federal filings, not adjusted for how many of each model year were sold. A popular year attracts more complaints simply by being on more roads; we normalize within a model to soften this, but no public dataset gives exact sales by model year.
- • Newer model years have had less time on the road, so their record is thinner and read with more caution.
- • A verdict is a screen, not a substitute for a pre-purchase inspection of the specific vehicle and VIN.
How often it updates
Complaint and recall counts refresh monthly — the reason these pages don’t go stale the way static “worst years” articles do — and the owner-narrative synthesis is re-run quarterly. Every page shows the month its data was last refreshed.