Technical writing

NHTSA Recall Completion: The Federal Record of Whether Recalled Cars Actually Get Fixed

· 11 min read· AI Analytics
NHTSAVehicle SafetyRecallsCompletion RatesFederal Data

A recall headline announces that a defect was found. It does not tell you the thing that actually determines whether anyone is safer: did the cars get fixed? A vehicle recall only prevents harm if the defective part is replaced—and the manufacturer will do that for free, but only if the owner brings the vehicle in. NHTSA tracks the follow-through in a distinct dataset: roughly 73,600 quarterly completion reports that manufacturers are required to file after each campaign, recording quarter by quarter how many of the recalled units they have actually repaired. It is the record of whether the recall system works.

This article covers what the recall-completion dataset is and how it differs from the recall record it sits downstream of; the Safety Act and the regulations that require manufacturers to report completion rates on a recurring quarterly schedule; how a completion rate is constructed from units involved and units remedied, and how it climbs—or stalls— over the years after a recall; why rates vary so widely across campaigns, from dealer-serviced new vehicles to salvaged and resold cars whose owners never get the notice; the Takata airbag inflator recalls as the defining case of unrepaired vehicles persisting at scale; how the completion reports join by campaign number to the recall, complaint, and investigation datasets; the analytical uses, from measuring outreach effectiveness to finding stalled campaigns; a Python workflow that pulls the quarterly reports, tracks a campaign's completion curve, and flags low-completion recalls; and the caveats— self-reported data, denominator drift, and the limits of a campaign-level rate—every analyst must keep in mind.

What the dataset is

When the National Highway Traffic Safety Administration (NHTSA) or a manufacturer determines that a vehicle or item of motor-vehicle equipment contains a safety-related defect or fails to meet a Federal Motor Vehicle Safety Standard, the manufacturer must conduct a recall: notify owners, and remedy the defect at no charge by repairing, replacing, or, in the last resort, repurchasing the vehicle. The recall itself—the campaign, the defect description, the affected makes and models, the population of units involved—lives in NHTSA's recall dataset. The completion data is the separate record of what happened next: how many of those recalled units were actually brought in and fixed, reported on a recurring schedule for years afterward.

In our database this record is stored as the table nhtsa_recall_completion, with the grain of one row per recall campaign per reporting quarter: a single campaign that the manufacturer reports on for several years contributes many rows, one for each quarter it files. The dataset comprises roughly 73,600 of these quarterly completion reports. Each row ties a recall campaign to a reporting period and the running tally of how many units have been remedied as of that period. The columns capture which campaign, which quarter, the size of the recalled population, and how many of those units have been fixed:

campaign_number        -- NHTSA recall campaign ID (e.g. 14V651000)
manufacturer           -- the reporting manufacturer
report_quarter         -- the calendar quarter this report covers
report_received_date   -- date NHTSA received the quarterly filing
units_involved         -- the population of units subject to the recall
units_remedied         -- units repaired/replaced as of this quarter
units_unreachable      -- units the manufacturer cannot locate or contact
units_exempted         -- units excused (e.g. exported, scrapped)
completion_rate        -- units_remedied / units_involved for the quarter
report_sequence        -- which quarterly report this is in the series
component / defect      -- short defect descriptor carried from the recall

The campaign_number is the load-bearing column. The NHTSA recall campaign number is the persistent identifier assigned to each recall—the familiar form is a year, a letter indicating the recall type (V for vehicle, E for equipment, T for tires), and a sequence number, as in 14V651000. It is the key that ties every quarterly completion report back to the same recall in the recall dataset, and through that recall to the investigation that prompted it and the complaints that fed the investigation. The two numeric columns that matter most are units_involved, the denominator—how many units the recall covers— and units_remedied, the numerator—how many have been fixed. Their ratio is the completion rate, and because a new row arrives each quarter, the sequence of rows for a single campaign is a time series: the completion curve that shows how fast, and how far, a recall reached the vehicles it was meant to fix.

The Safety Act and the reporting mandate

The entire recall regime rests on the National Traffic and Motor Vehicle Safety Act of 1966, the statute that created the federal motor-vehicle safety program and, with it, the authority to compel recalls. The Safety Act established the principle that manufacturers bear responsibility for safety defects in the vehicles and equipment they sell, that they must notify owners and remedy defects at no cost, and that the federal government—through what became NHTSA—can investigate suspected defects and order recalls when a manufacturer will not act voluntarily. The free-remedy obligation is the foundation of the completion data: because the fix is mandatory and free, the only thing standing between a recalled vehicle and a repaired one is getting the vehicle to a dealer—which is exactly what completion rates measure.

The reporting requirement that produces this dataset is regulatory. Under NHTSA's defect-and-noncompliance rules—principally 49 CFR Part 573, which governs the defect and noncompliance reports manufacturers must file (the quarterly-report obligation lives in section 573.7), with owner-notification content governed by 49 CFR Part 577—a manufacturer conducting a recall must report to NHTSA, on a recurring quarterly schedule and for a defined period after the recall begins, the number of units it has remedied. The reporting period runs for several years after the campaign is initiated, long enough to capture the slow tail of owners who respond late. This is why the dataset is a series rather than a single number: the regulation requires the manufacturer to keep filing quarter after quarter, so the data tracks a campaign's repair rate climbing over time rather than freezing it at a single snapshot.

A second statute sharpened the whole apparatus. After the high-profile tire and sport-utility-vehicle failures of the late 1990s, Congress passed the TREAD Act (the Transportation Recall Enhancement, Accountability, and Documentation Act of 2000), which strengthened early-warning reporting, raised civil penalties for failing to report defects promptly, and generally tightened the obligations around recalls. The broader effect was to make the recall and completion record more complete and more timely. For the analyst, the practical consequence is that the completion reports are not voluntary disclosures a manufacturer chooses to make—they are a legal obligation enforced with penalties, which is what makes the dataset a reliable, if self-reported, account of how recalls actually resolve.

How a completion rate is built and how it moves

A completion rate is a fraction, and understanding both the numerator and the denominator is essential to reading the data honestly. The denominator is the population of units involved: the count of vehicles or equipment items the manufacturer determines are subject to the recall, established when the campaign is filed and sometimes revised as the manufacturer refines which production runs are affected. The numerator is the units remedied: the count of those units that have been repaired or replaced as of the reporting quarter. Divide one by the other and you have the completion rate for that quarter. Because the manufacturer reports the cumulative remedied count each quarter, the rate is monotonic—it can only rise (or hold) from one quarter to the next as more owners come in.

The shape of the completion curve is remarkably consistent across well-run recalls and is itself the most informative feature of the data. The rate rises steeply in the first few quarters, when owner notifications land, the defect is in the news, and the most engaged owners—those who service their vehicles at the dealer and read their mail—come in promptly. Then the curve flattens: each subsequent quarter pulls in fewer of the remaining unrepaired units, because the owners who have not yet responded are the hardest to reach—they have moved, sold the vehicle, never received the notice, or decided the repair is not worth the trip. Many campaigns approach a plateau well short of one hundred percent and stay there, the residual representing units that may never be fixed. The interesting analytical questions all concern this curve: how steep is the initial climb (a proxy for how effectively the manufacturer reached owners), and how high is the plateau—does the campaign asymptote near complete, or stall with a large unrepaired remainder?

Two adjustments complicate the simple fraction and must be handled with care. First, the denominator is not fixed: manufacturers sometimes account for units that are unreachable (vehicles they cannot locate or whose owners cannot be contacted) or exempted (units exported, scrapped, or otherwise removed from the road). Whether these are subtracted from the denominator changes the reported rate substantially—a campaign can look much more complete if a large block of unreachable vehicles is excluded from the base. Second, the denominator can be revised upward or downward over the life of the campaign as the manufacturer corrects its population estimate, which can make the rate appear to move non-monotonically across quarters. An analyst comparing rates across campaigns must therefore check whether the denominators are constructed the same way before treating the rates as comparable.

Why completion rates vary so widely

Completion rates are not a manufacturer report card alone; they are driven heavily by the characteristics of the vehicles and owners involved, and the same recall can complete at very different rates across different segments of the affected fleet. The dominant factor is the age of the vehicles. A recall of current-model-year vehicles, still owned by their first buyers and serviced at the selling dealer, reaches high completion quickly: the owner is in the manufacturer's records, the address is current, and the vehicle comes in for routine service where the recall can be performed. A recall of vehicles that are ten or fifteen years old is a different problem entirely—those vehicles have changed hands repeatedly, the registered owner of record may be several owners stale, and many have left the dealer-service ecosystem for independent shops that do not perform recalls.

The hardest cases for completion are resold, salvaged, and exported vehicles, and owners who simply never get the notice. A vehicle sold on the used market, or rebuilt from salvage and put back on the road, often has no reliable link between the current driver and the address the manufacturer mails to. Owners move without updating their registration; notices are thrown away as junk mail; non-English-speaking owners may not understand the notice; and some owners, even when they understand, judge an open recall on an old vehicle not worth the inconvenience. Brand and service patterns matter too: luxury and dealer-serviced brands, whose owners maintain a relationship with the dealer, tend to reach higher completion than mass-market vehicles whose owners drift to independent service. The structural consequence is that completion rates are systematically lower exactly where the safety stakes can be highest—older, cheaper, multiply-resold vehicles, often driven by owners with the fewest resources—which is the central equity problem of the recall system and one the completion data makes visible.

The Takata case: when completion fails at scale

No episode illustrates the stakes of recall completion more starkly than the Takata airbag inflator recalls, the largest and most complex automotive recall in United States history. Takata manufactured airbag inflators that used an ammonium-nitrate-based propellant which, over years of exposure to heat and humidity, could degrade and cause the inflator to rupture when the airbag deployed—spraying metal fragments into the vehicle cabin and turning a life-saving device into a lethal one. The defect implicated tens of millions of vehicles across nearly every major automaker, and the recall was phased over many years as the scope of the problem became clear and replacement inflators were manufactured.

The completion data is where the human cost of incomplete recalls became impossible to ignore. Even years after the recalls were issued, with intense publicity, escalated outreach, multilingual notices, and in the most dangerous cases do-not-drive warnings urging owners not to operate the vehicle until it was repaired, millions of affected vehicles remained unrepaired. The campaigns illustrated every driver of low completion at once: the inflators were in older vehicles by the time the danger was understood, many had been resold or were in salvage channels, and the sheer scale strained the supply of replacement parts. The Takata episode is the reason recall completion is now understood not as a back-office bookkeeping detail but as a public-health metric in its own right—a recall that reaches only a fraction of the affected fleet leaves the rest of the danger on the road, and the completion reports are the only systematic measure of how much danger remains.

Joining to the recall, complaint, and investigation data

The completion dataset is the final stage of a four-part NHTSA defect lifecycle, and its value is greatest when it is read in sequence with the datasets upstream of it. The campaign_number is the join key that links completion to the recall, and the recall in turn links back to the investigation and the complaints. Reading the chain end to end tells the whole story of a defect: from the first owner complaints, through the investigation that examined them, to the recall that resulted, to whether the recall actually reached the vehicles.

The first and most direct join is to the recall dataset. The recall record carries everything about the campaign that the completion reports do not repeat each quarter—the full defect and remedy descriptions, the affected makes, models, and model years, the manufacturer's defect chronology, and the consequence of the defect. Joining nhtsa_recall_completion to the recall record by campaign number is what supplies the context an analyst needs to interpret a completion rate: a low rate on a campaign for a minor labeling defect is unremarkable, while the same low rate on a campaign for a defect that can cause a fire or an airbag rupture is a public-safety alarm. The recall record also supplies the recall's initiation date, which anchors the completion time series—letting the analyst measure not just the rate but how long after the recall began each quarterly rate was reached.

The deeper joins are to the investigation and complaint datasets, which sit upstream of the recall. NHTSA defect investigations are the formal inquiries—preliminary evaluations and engineering analyses—that often precede and prompt a recall, and the consumer-complaint database is the stream of owner-reported problems that feeds those investigations. Walking the chain backward from a completion report—completion to recall to investigation to complaints—lets an analyst connect how a defect surfaced (the complaints), how the agency examined it (the investigation), what action resulted (the recall), and whether that action worked (the completion). Walking it forward is just as valuable: a campaign with a stalled completion rate, viewed against an ongoing stream of new complaints about the same component, is a signal that the defect is still injuring people in vehicles the recall never reached. The completion data, in other words, closes the loop—it is the only place the system records whether everything upstream of it actually made anyone safer.

Analytical uses

A national, campaign-resolved, quarter-stamped record of recall completion supports analyses that the recall record alone cannot, because it is the only dataset that measures outcomes rather than intentions.

Measuring outreach effectiveness is the most direct use. Because each campaign produces a completion curve, an analyst can compare how fast and how far different campaigns—and different manufacturers—reach their affected fleets, after controlling for vehicle age and recall severity. A manufacturer whose campaigns consistently climb faster in the first year is reaching owners more effectively, whether through better address data, second and third notices, incentives, or escalated outreach. The completion data turns the abstract question of whether a manufacturer takes recalls seriously into a measurable curve.

Finding stalled and low-completion campaigns is the use with the most direct safety payoff. Sorting campaigns by their latest completion rate— and, more meaningfully, by the absolute number of unrepaired units still in the field—surfaces the recalls that are leaving the most danger on the road. Weighting that count by the severity of the defect, drawn from the joined recall record, produces a prioritized list of where unrepaired vehicles pose the greatest risk: exactly the analysis that justifies escalated outreach, do-not-drive warnings, or regulatory pressure on a manufacturer to do more.

Studying the determinants of completion uses the dataset as a research instrument. Joined to the recall record for vehicle age, brand, defect type, and population size, the completion outcomes let an analyst quantify how much each factor drives the final completion rate—how much a decade of vehicle age costs in completion, how much a do-not-drive warning adds, whether equipment recalls complete differently from vehicle recalls. And monitoring the recall system as a wholeaggregates across campaigns to answer the system-level question: across all open recalls, how many unrepaired units remain, how is that backlog trending, and is the recall system, in aggregate, getting better or worse at the one thing it exists to do.

Python workflow: tracking and flagging completion

The script below pulls the quarterly completion reports for a recall campaign from NHTSA's public recalls data, builds the completion curve—the rate quarter by quarter and how fast it climbed in the first year—and then flags campaigns whose latest completion rate falls below a threshold, the recalls leaving the most unrepaired units on the road. No API key is required for public data. Because NHTSA dataset endpoints and field names shift between releases, the script discovers the working population, remedied, and quarter column names at runtime rather than hard-coding them; any production use should be validated against the current NHTSA recalls data documentation and should page through the full report series for long-running campaigns.

import requests, pandas as pd
from collections import defaultdict

# NHTSA public recall data -- no API key required.
#
# NHTSA publishes recall campaign data through its public recalls API and
# the quarterly recall-completion (recall-completeness) reports through
# nhtsa.gov and its public datasets. The completion reports are filed by
# manufacturers on a recurring quarterly schedule and record, for each
# campaign, how many recalled units have been remedied as of that quarter.
# The documented public endpoint that takes a campaign number is
# recallsByCampaignNumber. Endpoint paths and field names shift between
# NHTSA dataset releases, so isolate them here and confirm against the
# current NHTSA recalls data documentation before production use.
RECALLS_API = "https://api.nhtsa.gov/recalls"


def _get(path, **params):
    r = requests.get(path, params=params, timeout=120)
    r.raise_for_status()
    return r.json()


def completion_reports(campaign):
    # Pull the quarterly completion history for one recall campaign.
    # Each row is one reporting quarter for the campaign and carries the
    # units involved (population) and the units remedied to date.
    data = _get(f"{RECALLS_API}/recallsByCampaignNumber",
                campaignNumber=campaign)
    return pd.DataFrame(data.get("results", []))


def _find(cols, *needles):
    # Return the first column whose name contains all of the needles.
    for c in cols:
        u = c.upper()
        if all(n.upper() in u for n in needles):
            return c
    return None


def completion_curve(campaign):
    df = completion_reports(campaign)
    if df.empty:
        print(f"No completion reports returned for {campaign}.")
        return

    qcol = _find(df.columns, "QUARTER") or _find(df.columns, "REPORT", "DATE")
    pop = _find(df.columns, "POPULATION") or _find(df.columns, "INVOLVED")
    fixed = _find(df.columns, "REMEDIED") or _find(df.columns, "REPAIRED")

    df = df.sort_values(qcol)
    df["rate"] = df[fixed].astype(float) / df[pop].replace(0, pd.NA).astype(float)

    # --- 1. Track the completion rate quarter by quarter -----------------
    print(f"Campaign {campaign}: completion rate by quarter")
    for _, row in df.iterrows():
        print(f"  {str(row[qcol]):<12} {row['rate']:6.1%}  "
              f"({int(row[fixed]):,} of {int(row[pop]):,})")

    latest = df.iloc[-1]["rate"]
    print(f"  latest completion rate: {latest:.1%}")

    # --- 2. How fast did the rate climb in the first year? ---------------
    if len(df) >= 5:
        gain = df.iloc[4]["rate"] - df.iloc[0]["rate"]
        print(f"  rate gain over first four quarters: {gain:.1%}")
    return df


def flag_low_completion(campaigns, threshold=0.70):
    # Flag campaigns whose latest reported completion rate is below the
    # threshold -- the recalls leaving the most unrepaired units on the road.
    stalled = {}
    for c in campaigns:
        df = completion_reports(c)
        if df.empty:
            continue
        pop = _find(df.columns, "POPULATION") or _find(df.columns, "INVOLVED")
        fixed = _find(df.columns, "REMEDIED") or _find(df.columns, "REPAIRED")
        qcol = _find(df.columns, "QUARTER") or _find(df.columns, "REPORT", "DATE")
        last = df.sort_values(qcol).iloc[-1]
        rate = float(last[fixed]) / max(float(last[pop]), 1)
        if rate < threshold:
            stalled[c] = (rate, int(last[pop]) - int(last[fixed]))
    return dict(sorted(stalled.items(), key=lambda kv: kv[1][0]))


completion_curve("14V651000")
# print(flag_low_completion(["14V651000", "15V320000", "16V061000"]))

Two practical notes apply. First, the completion-rate calculation in the script divides remedied units by the involved population as reported each quarter, which is the headline rate—but a rigorous analysis must decide how to treat the unreachable and exempted counts, because including or excluding them from the denominator can move the rate by several points, and it must guard against denominator revisions that make the cumulative rate appear to dip between quarters. Second, the low-completion flag is deliberately campaign-level and rate-based; the more decision-useful version weights each stalled campaign by the absolute number of unrepaired units and by the severity of the underlying defect from the joined recall record, so that a campaign leaving a million unrepaired vehicles with a fire risk rises above one leaving a few thousand with a cosmetic defect. The completion reports supply the counts; the recall join supplies the severity needed to turn the counts into a risk ranking.

Limitations and analytical caveats

The recall-completion dataset is the most comprehensive public record of recall outcomes in the United States, but it carries structural limitations that an analyst must internalize before drawing conclusions from it.

The data is self-reported by manufacturers. The completion counts come from the manufacturers themselves, filed under a legal obligation but not independently audited unit by unit. A manufacturer's own service records are the source of the remedied count, and definitions of what counts as remedied, unreachable, or exempted involve judgment that varies between manufacturers. The TREAD Act's penalties and NHTSA's oversight constrain outright misreporting, but the data should be read as the manufacturer's good-faith accounting rather than an externally verified census, and cross-manufacturer comparisons inherit whatever differences exist in how each one counts.

The denominator drifts and is not standardized. As the preceding sections stressed, the population of units involved can be revised over the life of a campaign, and the treatment of unreachable and exempted units differs across reports. A completion rate is only as comparable as its denominator, and two campaigns reporting the same rate may have constructed that rate from very different bases. Any cross-campaign ranking that uses the reported rate without normalizing the denominator is partly measuring accounting convention rather than real-world repair coverage—which is why the absolute count of unrepaired units is often the more honest metric than the percentage.

Reporting ends, so late repairs go uncounted. The quarterly reporting obligation runs for a defined period after the recall begins, not forever. Once that period ends the campaign stops appearing in new completion reports, even though some owners will still bring vehicles in afterward—those late repairs are never captured. The final reported rate is therefore a floor on lifetime completion, not the lifetime total, and the gap is largest exactly for the long-tail campaigns on old vehicles where repairs trickle in for many years. Conversely, the most recent quarter in any snapshot can lag the true state, because a quarter's repairs have to be tallied and filed before they appear.

A campaign-level rate hides the within-campaign distribution.The completion rate is reported for the campaign as a whole, but completion is not uniform across the affected fleet: newer units within a campaign complete far faster than older ones, first-owner vehicles faster than resold ones, one region faster than another. A single campaign rate of seventy percent can mean an evenly distributed seventy percent, or it can mean ninety-five percent of new vehicles fixed and thirty percent of the oldest—and those are very different safety pictures. The dataset does not resolve completion below the campaign level, so the equity dimension that matters most—who is left unrepaired—must be inferred from the joined recall characteristics rather than read directly.

Held with these caveats in mind, the nhtsa_recall_completion table is a uniquely valuable resource: a campaign-resolved, quarter-stamped record of whether the country's safety recalls actually reach the vehicles they target—the follow-through data that sits downstream of the recall, the investigation, and the complaints, and the only place the system records whether all of that upstream work ended with a defective part replaced or with the danger still on the road.

Related writing

NHTSA Vehicle Recall Data: 70 Years of Safety Defects Across 900 Million Vehicles — The recall record this dataset sits directly downstream of: the campaign join key links every quarterly completion report back to the defect description, affected models, and population that the completion rate is measured against.

NHTSA Defect Investigations: The Federal Record of What Leads to a Recall — The inquiry stage upstream of the recall: walking the lifecycle from investigation to recall to completion shows how a defect was examined, what action resulted, and whether that action actually reached the affected vehicles.

NHTSA Vehicle Safety Complaints: The Federal Database Behind Auto Defect Investigations and Recalls — The owner-reported problems at the head of the chain: a stalled completion rate read against a continuing stream of new complaints about the same component signals a defect still injuring people in vehicles the recall never reached.