PULSCAR ANALYSIS — STRUTS, SHOCKS AND COIL SPRINGS IN NHTSA'S PUBLIC FILES PulsCar analysis of NHTSA public data, September 2026. License: CC BY 4.0. Attribution: "PulsCar analysis of NHTSA public data, September 2026." Published alongside https://www.pulscar.io/blog/strut-replacement-cost ------------------------------------------------------------------------------ 1. SOURCE FILES ------------------------------------------------------------------------------ NHTSA's own published flat files, downloaded from static.nhtsa.gov and loaded into a local SQLite database without modification. No third-party data. COMPLAINTS — 777,040 owner complaints received 1 January 2015 to 8 September 2026. https://static.nhtsa.gov/odi/ffdd/cmpl/CMPL.txt RECALLS — campaigns counted DISTINCT. MANUFACTURER — documents counted DISTINCT by NHTSA document id. COMMUNICATIONS Complaints are self-reported and are not failure rates. There is no denominator. Nothing here ranks any vehicle's reliability. ------------------------------------------------------------------------------ 2. THE WORD PROBLEM — READ THIS FIRST ------------------------------------------------------------------------------ "Strut" means two different parts. To a suspension technician it is the damper-and-spring assembly that holds up a corner of the car. To most owners writing to NHTSA it is just as often the gas strut that holds up a hood, liftgate or trunk lid. Both are called struts in the complaint file and in the recall file. A search for "strut" that does not separate them produces a suspension count padded with liftgates. NHTSA's component field does not solve it: of 29,949 complaints tagged SUSPENSION, almost all carry only the top-level tag, and just 13 carry SUSPENSION:FRONT:MACPHERSON STRUT. So the set has to be built from text. ------------------------------------------------------------------------------ 3. BUILDING THE SET ------------------------------------------------------------------------------ Python regular expressions, re.IGNORECASE, word boundaries, on the narrative: strut(s), strut mount/assembly/bearing/tower, shock absorber(s), shocks, "front/rear/new/bad/worn/blown/leaking/broken/replaced shock", coil spring(s) A match is discarded when the 25 characters before it name a hood, liftgate, tailgate, trunk, hatch, deck lid, door, window, glass or "lift support", and when it is an idiom ("electric shock", "in shock", "shocked me"). A complaint is kept if at least one match survives. 4,783 complaints matched a word; 138 matched only as a gas strut or idiom. THE SET: 4,645 complaints. ------------------------------------------------------------------------------ 4. SAMPLE READING — REQUIRED BEFORE PUBLISHING ANY KEYWORD COUNT ------------------------------------------------------------------------------ 40 random complaints from the set (Python random.seed(2026)) read in full; classifications in strut-40-complaints-read.csv. on topic, about this car's suspension 33 broken or detached coil spring 10 of those 33 incidental mention (strut replaced while chasing another fault, or in a list) 5 crash damage to a strut tower 1 false positive (a tailgate gas strut whose second mention lacked "tailgate") 1 Read the set as about 85 percent squarely on topic. Note what the reading found that the counts understate: broken coil springs were 10 of 40, while the broken-spring regular expression below flags only 9.5 percent of the set. The regex is a floor; owners describe a broken spring in many ways. ------------------------------------------------------------------------------ 5. CONTEXTS (strut-complaints-by-context.csv) ------------------------------------------------------------------------------ Nine context flags, each a regular expression; a complaint can carry several. Median mileage uses odometer values above 0 and below 400,000, and the number of usable mileages is published next to each median. Flags across the set, against the whole file: crash 2.07% (all complaints 4.37%) towed 2.73% (all complaints 5.11%) Worn struts rarely end a journey. Broken springs are the exception that matters: they sit in the complaints where a spring cut a tire or fell out. ------------------------------------------------------------------------------ 6. OWNER-REPORTED AMOUNTS (strut-owner-reported-amounts.csv) ------------------------------------------------------------------------------ Dollar figures between $80 and $6,000 within about 110 characters of a strut, shock or spring word and a repair word, excluding windows that mention a loan, purchase, trade value, deductible, towing or a rental: 205 candidates. Every published figure was read by hand. 39 are published, in lanes: strut or shock pair, installed 11 median $900, range $675-$1,030 coil spring pair, installed 14 median $820, range $550-$1,100 single conventional strut or shock 6 median $464, range $358-$526 single adaptive/magnetic/self-leveling 3 $400, $600 and $1,000 each single coil spring 3 $252, $350, $1,100 (dealer) strut or shock mount 2 under $200 one side; $500 both Four candidates that looked like suspension money were liftgate, door or hood struts — the word problem again — and were dropped along with figures that were for other repairs named in the same sentence. These are what owners wrote, not invoices, and complaints over-represent bad outcomes. ------------------------------------------------------------------------------ 7. RECALLS AND PROGRAMS ------------------------------------------------------------------------------ strut-recalls-passenger-vehicles.csv: recall campaigns whose component is a suspension strut, shock or spring, or whose defect text names one, excluding motorcycles, trailers, RVs and heavy trucks: 94 campaigns, of which 3 are gas strut (liftgate or hood) recalls kept and labelled so the ambiguity is visible — Mazda 16V-644 is titled around struts and is about liftgate supports. strut-programs-and-warranty-extensions.csv: ten manufacturer programs and warranty extensions that pay for struts, shocks or springs, each with its NHTSA document id. 557 distinct manufacturer documents in the file mention a shock absorber, coil spring, strut assembly or strut mount. ------------------------------------------------------------------------------ 8. PRICES ON THE ARTICLE PAGE ------------------------------------------------------------------------------ Shop ranges marked on the page are carried unchanged from PulsCar's published model and repair guides (pair prices for Corolla, Camry, RAV4, Highlander, Forester, Outback, Focus, Fusion, Equinox; sway bar end links; alignment; diagnosis). Two of our guides disagree on a strut mount ($150-$350 against $300-$600 per side); the page shows both and explains the difference rather than choosing one silently. ------------------------------------------------------------------------------ CASE SENSITIVITY ------------------------------------------------------------------------------ NHTSA stores complaint narratives in ALL CAPS for records filed through roughly 2020 and in mixed case from 2021 on; a case-SENSITIVE search loses about 92% of the post-2020 complaints. Every text query behind this folder uses Python re.IGNORECASE or SQLite LIKE, both case-insensitive. ------------------------------------------------------------------------------ 9. BROKEN SPRINGS AGAINST THE YEARS A DOCUMENT COVERS (strut-broken-springs-vs-covered-years.csv) ------------------------------------------------------------------------------ For the cars that lead the broken-spring count, each complaint's model year was compared with the model years the relevant recall, program or extension names. Model year is NHTSA's own field. State of registration is NOT compared, and two of the recalls are limited to named salt states, so "in covered years" means the model year is named, not that the car was eligible. Versa 96 of 98 in 2007-2012 (recall 15V-573) Forester 45 of 45 in 2014-2016 (program WUT-05) Elantra 35 of 35 in 2011-2016 (extension 19-SS-002H) Sonata 24 of 24 in 2011-2016 (extension 19-SS-002H) -> 200 of 202 for the four leaders Santa Fe 7 of 15 in 2001-2006 (recall 14V-435) Jetta 5 of 19 in 2015-2019 (recalls 19V-188 / 18V-904, certain cars) The broken-spring flag is a floor (section 4), so these are counts of the complaints the flag caught, not of every broken spring on these cars.