PULSCAR ANALYSIS OF NHTSA PUBLIC DATA — BRAKE PADS, ROTORS AND WHAT OWNERS SAY THEY PAID PulsCar analysis of NHTSA public data, September 2026. License: CC BY 4.0. Files: brake_complaints_summary.csv, brake_owner_reported_prices.csv, brake_rear_wear_by_model.csv, brake_rear_wear_bulletins.csv. SOURCE FILES 1. NHTSA ODI complaint flat file (COMPLAINTS_RECEIVED_*.txt) from https://static.nhtsa.gov/odi/ffdd/cmpl/ — field definitions: https://static.nhtsa.gov/odi/ffdd/cmpl/CMPL.txt 777,040 complaints received 1 January 2015 - 8 September 2026, de-duplicated by ODINO. 2. NHTSA manufacturer communications (TSB) flat file — 187,827 distinct document ids. 3. NHTSA recall flat file — counted as DISTINCT campaign. Loaded into local SQLite with FTS5 indexes on complaint text and bulletin summary. QUERY 1 — THE BRAKE-PAD SET select c.* from complaints c join complaints_fts f on f.rowid = c.rowid where complaints_fts match '"brake pad" OR "brake pads" OR "brake rotor" OR "brake rotors" OR "pads and rotors" OR "rotors and pads" OR "pad wear" OR "brake job"'; Result: 3,394 complaints. This is the denominator for every share below. SAMPLE READING 30 of the 3,394 were drawn at random (random.seed(11)) and read. All 30 concerned brake pads or rotors, so the set itself is clean; what is NOT clean is assuming every one of them is a pad-wear story — many are brake-failure reports in which pads are mentioned in passing. That is why each finding below has its own narrower query rather than reusing the set. QUERY 2 — PREMATURE OR ABNORMAL WEAR (520 complaints, 15.3%) (prematur|excessiv\w*|abnormal\w*|rapid\w*|unusual\w*|too (fast|quickly)|wore out|worn out| worn down|only \d[\d,]* miles)[^.]{0,60}(pad|rotor|brake) | (pad|rotor|brake)[^.]{0,60}(prematur|excessiv\w*|abnormal\w*|wore out|worn out|worn down|wearing out) Mileage quartiles use the file's own failure-mileage field, 0 < miles < 400,000 (292 of the 520 carry one). MEDIAN 36,665 MILES IS NOT PAD LIFE. It is the mileage at which people who believed their brakes wore out too early said so to the federal government. Normal pad life is not measurable from this file at all, because satisfied owners do not file complaints. QUERY 3 — REAR WEAR (413 complaints, 12.2%) rear[^.]{0,80}(pads?|rotors?|brakes?)[^.]{0,120}(worn|wear|wore|prematur|metal|2\s?mm|3\s?mm|replac) | (pads?|rotors?|brakes?)[^.]{0,40}rear[^.]{0,120}(worn|wear|wore|prematur) Counted by model in brake_rear_wear_by_model.csv with two denominators: brake-pad complaints for that model, and all complaints for that model. Model years shown are the top three. This counts complaints that DESCRIBE rear wear; it does not establish that rears wear before fronts on any particular vehicle, only that owners of some models report it repeatedly. QUERY 4 — REPLACED BUT NOT FIXED (120 complaints, 3.5%) (replac\w+|new)[^.]{0,40}(pads?|rotors?)[^.]{0,200}(still|again|persist|did not (fix|resolve|help) |didn.t (fix|help)|came back|returned|no change) QUERY 5 — WHAT OWNERS SAY THEY PAID (brake_owner_reported_prices.csv) Two passes, because the first was not good enough to publish. PASS 1: any dollar amount within 120 characters of brake/pad/rotor. 166 complaints, 184 amounts, median $752. We read 30 at random and classified them: 18 of 30 were brake pad or rotor work; the rest were ABS actuators, master cylinders, brake hoses, a diagnostic fee and repairs bundled with non-brake work. 60% precision — not publishable. PASS 2 (published): split the complaint into sentences; keep a sentence only if it contains a dollar amount AND \b(pads?|rotors?|brake job|brakes)\b AND a transaction verb (replac|chang|new |quote|charg|cost|paid|pay|install|repair), and DROP the sentence if it contains actuator|master cylinder|brake hose|booster|abs|hydro|cooling|alignment| diagnostic fee|axle|transmission|engine|tire|battery|suspension|strut. Amounts outside $50-$6,000 are dropped. Result: 111 complaints, 116 sentences, 126 amounts. We read 30 of the surviving sentences at random (random.seed(31)): 22 were brake pad or rotor work; 8 were bundles including calipers, hoses or a wheel, or a larger repair. So the published distribution still carries roughly a one-in-four upward contamination, and the median is therefore an UPPER bound on a pad job, not a price for one. The pads-only and pads-and-rotors splits are by whether the sentence names rotors; both are small samples (30 and 46 amounts) and are labelled as such wherever they appear. LARGER CAVEAT: this is a complaint file. Everyone in it was unhappy enough to write to the federal government, and people write about bills that felt wrong. Read these numbers as "what angry owners report being charged," never as a market price. "A SHOP COULD NOT FIND IT" Same FTS5 phrase list used across our research: "could not duplicate" OR "unable to duplicate" OR "could not replicate" OR "unable to replicate" OR "could not reproduce" OR "no problem found" OR "could not find the" OR "unable to find the" OR "nothing was found" OR "found nothing wrong" OR "no issue found" OR "no problems found" Brake-pad complaints: 53 of 3,394 (1.56%). Whole file: 7,337 of 777,040 (0.94%). BULLETINS select distinct t.* from tsbs t join tsbs_fts f on f.rowid = t.rowid where tsbs_fts match '("brake pad" OR "brake pads" OR "brake rotor" OR "brake rotors") AND (wear OR worn OR noise OR squeal OR squeak OR grind OR judder OR vibration)'; 506 distinct documents. 75 (14.8%) mention software, reprogramming or calibration. 18 are specifically about uneven or premature REAR pad wear; those 18 are listed individually in brake_rear_wear_bulletins.csv with their document ids so anyone can pull the PDFs. RECALLS select * from recalls where defect like '%brake pad%' or remedy like '%brake pad%' or consequence like '%brake pad%'; 46 distinct campaigns, including motorcycles, trailers and e-bikes. Three passenger-vehicle campaigns cited in the article — 25V693000, 24V201000, 23V732000 — were read in full. LIMITATIONS Complaints are unverified owner reports, not failure rates and not a sample of all vehicles. There is no vehicles-in-service denominator in these files, so no statement of the form "model X wears out brakes faster than model Y" can be supported by them, and none is made. Dollar figures are self-reported and unaudited. No VIN, city, dealer name or long free text appears in these files; quoted snippets are short and carry no identifying detail. CONTACT: support@pulscar.io ------------------------------------------------------------------------------ CASE SENSITIVITY — SECTION ADDED 19 SEPTEMBER 2026 ------------------------------------------------------------------------------ NHTSA stores complaint narratives in ALL CAPS for records filed through roughly 2020 and in mixed case for records filed from 2021 on. A case-SENSITIVE search of the narrative field loses about 92% of the complaints filed after 2020, so this is the single largest way an analysis of this database can go wrong while still looking finished. Every query behind this file is case-insensitive, in two layers: * the complaint set is built with an FTS5 MATCH full-text search, which folds case before matching, so it cannot miss a mixed-case record; and * where the narrative is then tested with patterns, the narrative is upper-cased and whitespace-normalized first, so the patterns compare upper against upper. No query in this work uses GLOB or any case-sensitive comparison. This was not taken on trust. On 19 September 2026 every published folder was re-checked against the same database. Re-run here: step 1 is FTS5; the recall query uses LIKE, which is case-insensitive in SQLite for ASCII text.