PulsCar analysis of NHTSA public data, September 2026 Ball joints: what 2,249 owner complaints, 73 recall campaigns and 139 manufacturer communications say License: CC BY 4.0. Credit "PulsCar analysis of NHTSA public data, September 2026" with a link to https://pulscar.io/blog/ball-joint-replacement-cost All queries were run on 18 September 2026. -------------------------------------------------------------------------- 1. SOURCE FILES -------------------------------------------------------------------------- Public NHTSA flat files from https://static.nhtsa.gov/odi/, loaded into a local SQLite database. Complaints FLAT_CMPL. 777,040 vehicle complaints (one row per ODINO) received 1 January 2015 to 8 September 2026. Dictionary: https://static.nhtsa.gov/odi/ffdd/cmpl/CMPL.txt Recalls FLAT_RCL. One row per make/model/model year per campaign; campaigns counted DISTINCT on the campaign number and populations taken at each campaign's largest reported POTAFF so a campaign is never double-counted. Communications FLAT_TSBS, counted DISTINCT on the NHTSA ID. https://static.nhtsa.gov/odi/ffdd/tsbs/TSBS.txt CASE SENSITIVITY. NHTSA complaint narratives are ALL CAPITALS for complaints received through 2020 and mixed case from 2021 onward. An uppercase regex without re.IGNORECASE, or an uppercase SQLite GLOB, silently drops most post-2020 complaints. Every regex here was compiled with re.IGNORECASE; SQLite LIKE and FTS5 MATCH are case-insensitive and the queries rely on that. -------------------------------------------------------------------------- 2. THE COMPLAINT SET (2,249) -------------------------------------------------------------------------- Step 1. complaints_fts MATCH '"ball joint" OR "ball joints" OR balljoint OR balljoints' -> 2,254 candidates. (Two FTS phrases are needed because the tokenizer treats "joint" and "joints" as different tokens.) Step 2. Confirm with the case-insensitive regex ball[\s-]?joints?\b on the narrative -> 2,251. Step 3. Drop motorcycle and powersports makes -> 2 dropped. FINAL: 2,249. WHAT THIS SET IS. It is every complaint whose narrative NAMES a ball joint. It is not "complaints caused by a ball joint," and the article says so. A narrative that lists ball joints among several suspects for a Ford or Ram steering shimmy is in the set; so is one where a shop replaced ball joints and the problem stayed. SAMPLE READING. Thirty complaints drawn at random (random.seed(10425)) and read in full: - 25 of 30 were genuinely about a ball joint: a failure, a separation, a wear finding, a recall, or a joint the owner was quoted for. - 2 of 30 were off topic — a ball joint appeared once in a narrative whose subject was something else (a wiper motor failure; a braking crash). - 3 of 30 named ball joints only inside a list of suspected parts in a steering-shimmy or "death wobble" report, with no ball joint finding. Off-topic rate about 7%; "named as a suspect, not a finding" about 10%. The separation subset below is much cleaner, because it requires a verb. -------------------------------------------------------------------------- 3. THE SEPARATION SUBSET (743) -------------------------------------------------------------------------- A complaint joins this subset if the narrative matches any of: (ball joint|joint|stud) within 70 characters of separated / snapped / broke / broken / fractured / came apart / came off / failed completely / sheared / popped out / pulled out / collapsed / fell off, or the same verbs within 70 characters BEFORE a ball joint mention, or "wheel" within 60 characters of separated / came off / fell off / collapsed / detached / folded / came apart, or (suspension|control arm|wheel assembly) within 40 characters of collapsed. 743 complaints, 33.0% of the set. Within them, 119 narratives explicitly say the wheel came off or folded under the vehicle. The subset is a description of language, not an adjudication. A narrative can describe a separation that a technician later attributed to something else, and an owner who wrote "it broke" may mean the joint was worn out. -------------------------------------------------------------------------- 4. WHAT WAS COUNTED -------------------------------------------------------------------------- ball-joint-by-context.csv The whole set, the separation subset, the remainder, and the whole-file baseline, with the structured CRASH and TOWED flags, injuries, deaths and mileage (MILES field, 0 < miles < 400,000). Headline contrasts: crash flag 8.40% of the 2,249 against 4.37% for all 777,040 complaints; 14.40% inside the separation subset. Towed flag 12.58% against 5.11%, and 23.69% inside the separation subset. 78 injuries and 2 deaths across the set. Mileage: median 99,150 across 1,524 readings, quartiles 48,000 and 145,000; 20.0% at or under 36,000 miles and 78.1% at or under 150,000. ball-joint-what-owners-describe.csv Case-insensitive regex families counted across the whole set and inside the separation subset. Mentions, not confirmed repairs; a narrative can match several families and the shares do not add to 100. The two findings the article leans on: - "play" or "loose" language appears in 17.16% of the whole set but only 8.08% of the separation subset. Owners who described a joint coming apart were about half as likely to mention having noticed play first. This is a fact about what people wrote, not proof that separations arrive without warning; someone whose wheel folded under the car is writing about that, not about a noise from last spring. - a torn, split or missing boot appears in 0.80% of narratives (18 of 2,249). A boot is an inspection finding, not an incident, and federal safety complaints are filed about incidents. Read this as "this dataset cannot see boots," never as "boots rarely matter." ball-joint-by-make.csv / ball-joint-top-models.csv Counts, plus the rate per 10,000 of that make's own complaints (by make) and the share of that model's own complaints (by model), so the denominator is always visible. NOT failure rates: NHTSA publishes no vehicles-on-the-road denominator, owners of some brands file more readily, and 36.82% of this set already names a recall or campaign, which is itself a reason to file. "MERCEDES-BENZ" and "MERCEDES BENZ" were merged in both numerator and denominator. ball-joint-recalls.csv Every campaign whose COMPONENT, DEFECT or CONSEQUENCE text contains "ball joint" AND whose component string starts with SUSPENSION or STEERING: 73 campaigns, 2,011,573 potentially affected units. The component filter matters: without it the query also returns windshield wiper campaigns, because wiper linkages contain ball joints too; five such campaigns (including one covering 681,509 vehicles) were removed by it. 69 of the 73 name a separation or a loss of steering or control in the defect or consequence text. 15 of the 73 are equipment campaigns (an "E" in the campaign number) — recalls of replacement ball joints and control arms sold as parts, not of vehicles. Manufacturer communications (counted, not published as a CSV) tsbs_fts MATCH '"ball joint" OR "ball joints"' -> 139 distinct NHTSA IDs. 40 mention a noise, 28 an inspection, 11 a torque figure, 11 a specification, 4 looseness. By maker the largest single group is Tenneco with 18, all of them notices about replacement parts rather than about vehicles. -------------------------------------------------------------------------- 5. LEGAL TEXT WE READ (and what it does NOT say) -------------------------------------------------------------------------- 67 Pa. Code § 175.80(a)(3)(i), Pennsylvania's periodic inspection rule, read 18 September 2026: an inspector must reject a vehicle when "the ball joint movement is in excess of the manufacturer's specifications." No number. 49 CFR § 393.209(d) (FMCSA, commercial vehicles), read 18 September 2026 from the GovInfo print of the 1 October 2024 edition: "Universal joints and ball-and-socket joints shall not be worn, faulty or repaired by welding." Again no number. Conclusion published in the article: the "1/16 inch" figure widely repeated online is shop practice, not a regulation and not a universal specification. Neither document we opened states it. -------------------------------------------------------------------------- 6. LIMITATIONS -------------------------------------------------------------------------- - Complaints are self-reported, unverified, and are not failure rates. - Recall publicity drives complaint volume. The Jeep Liberty share below is a real cluster, but it is also the cluster with the longest recall history in this set, and both facts push in the same direction. - MILES is blank or zero in about a third of rows; n is printed next to every median. - Small denominators produce loud percentages. Dodge Stratus shows 33 ball-joint complaints out of 119 complaints for that model, which is a 27.73% share of a tiny file and is reported as such, not as a failure rate.