PULSCAR ANALYSIS OF NHTSA PUBLIC DATA — TIMING CHAINS PulsCar analysis of NHTSA public data, September 2026. License: CC BY 4.0. Files in this folder may be reused with attribution to PulsCar (pulscar.io). -------------------------------------------------------------------------- 1. SOURCE FILES -------------------------------------------------------------------------- NHTSA public flat files, downloaded from static.nhtsa.gov and loaded into a local SQLite database on 16 September 2026: Complaints FLAT_CMPL.txt 777,040 owner complaints (ODINO), received 1 January 2015 - 8 September 2026. https://static.nhtsa.gov/odi/ffdd/cmpl/CMPL.txt Recalls FLAT_RCL.txt one row per make/model/model year per campaign; campaigns counted DISTINCT on campaign number. https://static.nhtsa.gov/odi/ffdd/rcl/RCL.txt Communications FLAT_TSBS.txt manufacturer communications; counted DISTINCT on the NHTSA document id. Investigations FLAT_INV.txt ODI opening and closing resumes. https://static.nhtsa.gov/odi/ffdd/inv/INV.txt Complaints are owner reports: unverified, self-selected, no denominator of vehicles on the road. Nothing here is a failure rate and nothing here ranks any brand for reliability. The one genuine failure rate quoted on the page comes from NHTSA's own EA06-009 closing resume, where it was computed from GM warranty data, not from us. -------------------------------------------------------------------------- 2. THE COMPLAINT QUERY (3,898 -> 3,847) -------------------------------------------------------------------------- Step 1 - FTS5 prefilter (case-insensitive by construction) for any of the phrases "timing chain", "timing chains", "chain tensioner", "cam chain", "balance chain" -> 3,898. Step 2 - Python regex over the narrative, compiled with re.IGNORECASE: timing chain|chain tensioner|cam(?:shaft)? chain|balance chain|timing chains -> 3,885. Step 3 - drop motorcycles, trailers, RVs and heavy trucks by make and model string -> 3,847 passenger-vehicle complaints. Every figure uses that set. CASE SENSITIVITY. NHTSA narratives are ALL CAPS through 2020 and mixed case from 2021 onward. A regex written in uppercase without re.IGNORECASE, or an uppercase SQLite GLOB, silently drops most complaints filed from 2021 on. Every query here is case-insensitive: FTS5 folds case, SQLite LIKE folds ASCII case, and every Python regex carries re.IGNORECASE. We measured the size of the trap on a neighboring query in this same file: an uppercase-only search for a quoted trouble code returns 7,358 complaints where the case-insensitive one returns 10,476, a 29.8 percent loss concentrated entirely in 2021-2026. -------------------------------------------------------------------------- 3. WHAT IS COUNTED -------------------------------------------------------------------------- timing-chain-by-context.csv - case-insensitive category searches over the whole narrative. A complaint can appear in several rows; shares are of 3,847, not parts of a whole. towed is NHTSA's own structured flag; the all-file baseline over 777,040 complaints is 5.11 percent and this set runs at 6.24 percent. Mileage: values <= 0 and >= 400,000 dropped; 2,591 of 3,847 carry a usable figure, median 91,000 miles, Q1 70,000, Q3 116,200. timing-chain-by-engine-family.csv - nameplate groups, not VIN-decoded engine codes. We grouped by make and model because the flat file does not carry an engine field. A 2.4L Equinox and a 3.0L Equinox therefore sit in the same row, and the group labels name the engine that dominates the documented programs for that nameplate, not every engine sold in it. timing-chain-top-models.csv - the 45 most-reported make/model pairs. timing-chain-owner-reported-amounts.csv - every dollar figure between $200 and $25,000 that appears anywhere in a narrative in the set: 1,228 figures across 834 complaints. A single complaint can contribute several figures (a quote, a second quote, what was finally paid). The three subsets are: all figures; figures in complaints that describe an engine replacement or rebuild; and figures in complaints that describe a timing chain job and do NOT mention an engine replacement. The second and third subsets are the useful comparison and are the ones quoted on the page. THESE ARE NOT PRICES. They are numbers owners typed, mixing quotes, deductibles, totals and amounts refused. They are published as the shape of what owners report, next to the article's own estimate ranges, not as a replacement for them. -------------------------------------------------------------------------- 4. SAMPLE READING -------------------------------------------------------------------------- COMPLAINTS. 30 members of the 3,847 were drawn at random (random.seed(41)) and read in full. 26 of 30 had a timing chain, chain tensioner, guide or balance chain as the subject of the complaint. 4 of 30 mentioned a chain only in passing while complaining about something else: a passenger airbag sensor, interior lights switching on by themselves, a wiring harness, and a door that would not open. Observed false-positive rate about 13 percent (4/30), published rather than filtered out. The looser edge of the set is the balance chain, which on the GM 2.4L is a different chain from the timing chain and has its own coverage program. Complaints that name only the balance chain are kept in the set and the page says so explicitly, because owners and shops use the words interchangeably and separating them after the fact would be guesswork. DOLLAR FIGURES. 30 of the 1,228 extracted figures were drawn at random (random.seed(42)) and traced back to their own sentences. 25 of 30 were a repair total, a quote or a range quoted for a repair. The other 5 were: a $200 diagnosis fee, a $500 installation figure quoted apart from its parts, and three manufacturer goodwill offers - $8,000 toward a $10,000 engine, a $1,000 dealer discount, and $2,000 offered toward a new vehicle. So about one figure in six is not the price of a repair, and two of the 25 that are cover other work in the same bill. That is why the medians below are presented as the distribution of money named in a timing chain complaint, and never as a price. -------------------------------------------------------------------------- 5. RECALLS AND INVESTIGATIONS -------------------------------------------------------------------------- Recalls: exactly TWO campaigns in the whole 2015-2026 file name a timing chain in the defect or remedy text, and both are outside passenger cars - a Ducati motorcycle campaign (18V-854, 1,502 units) and a Mitsubishi Fuso commercial truck campaign (15V-195, 25 units). There is no passenger-vehicle timing-chain safety recall in the file. Investigations: seven ODI actions in the file carry a timing chain in the subject or summary. Five of them are one chain of events on the GM 2.2L L61 (DP05-008, PE06-006, EA06-009, DP08-002, PE08-061), ending in recall 07V-519. The figures quoted on the page are verbatim from those resumes. Recall 07V-519's population, summary, consequence and remedy were re-read on 18 September 2026 from NHTSA's live recalls API. Manufacturer communications: 261 distinct documents mention a timing chain, chain tensioner or balance chain. BMW (44), Honda (25), Chevrolet (20) and Subaru (16) lead. 21.1 percent of them describe a noise, 16.1 percent mention a warranty or coverage extension, and only 3.8 percent mention software - this is a mechanical subject, not a calibration one. -------------------------------------------------------------------------- 6. LIMITATIONS -------------------------------------------------------------------------- * No engine field. Groups are nameplate groups; see section 3. * Self-selection. A chain replaced under warranty without drama rarely produces a federal complaint; a $6,000 engine does. * Owner attribution. "Timing chain" in a narrative is often what a shop told the owner, not a confirmed teardown finding. * Mileage is owner-stated and missing for about a third of the set. * Model-year windows in these files are the years present in the file, not the build windows in any coverage bulletin. Eligibility is decided by VIN. Questions, corrections, or a figure that does not reproduce: support@pulscar.io