PulsCar analysis of NHTSA public data, September 2026 Topic: when does the noise happen? What share of owner-described car noises could be captured by a phone recording made with the car parked and idling? License: CC BY 4.0 (attribution: "PulsCar analysis of NHTSA public data, September 2026") SOURCES - NHTSA Office of Defects Investigation flat file COMPLAINTS (FLAT_CMPL), field dictionary https://static.nhtsa.gov/odi/ffdd/cmpl/CMPL.txt Rows loaded: 777,040 owner complaints received 1 January 2015 - 8 September 2026. Downloaded and indexed 17 September 2026; the queries below were run 18 September 2026. CASE SENSITIVITY (read this before reusing any query here) NHTSA complaint narratives are stored in ALL CAPS for complaints received through about 2020 and in mixed case from 2021 on. In this file's noise set, 28,460 complaints were received in or before 2020 (17 of them contain any lowercase letter) and 26,709 were received in 2021 or later (24,926 of them contain lowercase). Every query here is therefore case-insensitive: SQLite FTS5 matching is case-insensitive, and every Python regular expression is compiled with re.IGNORECASE. We measured what a case-sensitive query would have cost: the same word list written in capitals with no IGNORECASE flag matches 31,409 complaints instead of 55,169, and keeps only 2,008 of the 26,709 post-2020 complaints - a 92.5% loss on the recent half of the file, silently. An uppercase SQLite GLOB pattern fails the same way; SQLite LIKE does not, because LIKE is case-insensitive for ASCII by default. QUERY 1 - the noise set SQLite FTS5 over the complaint narrative for: noise, noises, noisy, grinding, grind, squeal(ing), squeak(ing), knock(ing), rattle/rattling, clunk(ing), whine/whining, hum(ming), tick(ing), screech(ing), growl(ing), chirp(ing), groan(ing) -> 57,204 complaints. Tightening (negation): a complaint counts only if at least one noise word is NOT preceded within 40 characters by no / not / never / without / n't / any. This removes narratives such as "NO UNUSUAL NOISES" and "no rattles or squeaks". -> 55,169 complaints. This is the denominator for every share below. Note: the sibling article diagnose-car-noise-sound-vs-obd-scanner.mdx publishes 55,554 for a near-identical query. The 385-complaint (0.7%) difference comes from a slightly different implementation of the same negation test. The two sets are not interchangeable and the two pages' counts should not be mixed. QUERY 2 - the condition the owner names (file: noise-conditions.csv) Each narrative was scanned, case-insensitively, for phrases naming when the noise occurs. Exact patterns: braking : (when|while|during|upon|on|after) [i] [am] [apply* the] brak* | brake[s] [are] appl* | press* the brake | stepping on the brake | coming to a stop turning : (when|while|during|on|upon) [i] [am] turn* | turning (the wheel|left| right) | in a turn | making a turn | cornering | parking lot speed bumps : (over|hitting|going over|across) [a|the|small|any] (bump|bumps| pothole|potholes|speed bump|railroad|rough road|rough pavement) | uneven road | uneven pavement | rough road speed : NN mph | at (highway|freeway) speed | highway speed[s] | (when|while) [i am|i'm] driving | (when|while) in motion | as [the] speed increases | above NN mph | over NN mph accel : (when|while|during|under|upon) [i] [am] accelerat* | on acceleration | when [i] (press|push|step on) the (gas|accelerator|throttle) | decelerat* | (when|while) shift* | changing gears at rest : at idle | while idl* | idling | in park | when parked | sitting in/at the driveway/garage/parking | in neutral | (when|while|during|upon|on| after) [i] [am] start* | start-up | cold start* | when the car/engine/ vehicle is cold | first start* | engine [is] running | in the morning Buckets are mutually exclusive: "driving condition only" means one or more of the first five matched and the at-rest pattern did not; "at-rest condition only" is the reverse; "both" and "no condition matched" are the remaining two. A complaint can name several conditions, so the six per-condition rows at the top of the CSV sum to more than the bucket rows. QUERY 3 - bounding the "no condition matched" bucket 24,996 complaints matched no condition pattern. Because a narrative can describe motion without any of the phrases above ("DRIVING ON HIGHWAY FROM FL TO GA"), that bucket was re-scanned with a deliberately loose word list - motion words (driving, drove, drive, mph, highway, freeway, interstate, on the road, reverse, backing up, merging, in motion, coasting, braking, turning, bump, bumps, accelerat*, shifting, speed) and at-rest words (idle, idling, park, parked, neutral, start*, cold, morning, driveway, garage, stationary). Result: 7,058 (28.2%) contain motion words only, 3,964 (15.9%) at-rest words only, 5,522 (22.1%) both, 8,452 (33.8%) neither. These loose counts are an upper bound on each side, not a classification; they are published so the reader can see which way the unmatched bucket leans. QUERY 4 - by the word the owner used (file: noise-by-word-and-condition.csv) Word families (case-insensitive stems): knock*, grind*, rattl*, clunk*, tick*, whin*, squeak*, squeal*, hum*, screech*, growl*, chirp*, groan*. A narrative can use more than one word and then appears in more than one row. Shares are within each row's own count. QUERY 5 - the no-code subset (file: noise-no-code-conditions.csv) Within the noise set, narratives also matching a "no code / no warning light" phrase (no trouble|fault|error|diagnostic|stored code[s], no DTC, did not set a code, no check engine light, no engine light, no warning light[s], no dashboard light, no lights came on, nothing showed up on the scan, scan showed/found nothing, codes were not set/stored/present, without a check engine light/warning light/code), with the noise word and the no-code phrase within 600 characters of each other so the two statements belong to the same described failure. -> 3,204 complaints. (The sibling page publishes 3,512 for its own version of this query; see the note under Query 1.) QUERY 6 - reproducibility (file: reproducibility.csv) "Intermittent" = intermittent*, comes and goes, not every time, only sometimes, sporadic*, off and on, randomly. "Nobody could reproduce or hear it" = (could|can|was|were|would) not/n't [be] duplicate/reproduce/replicate/hear/find/detect/identify/verify*, unable to duplicate/reproduce/replicate/hear/find/detect*, no problem/fault/issue found, did not hear it / did not hear the noise. SAMPLE READING (required before publishing any keyword count) 30 random complaints from the noise set were read in full. - Topical false positives: 1 clear case in 30 (a door-ajar chime described as a "noise" - audible, but not a mechanical wear noise), plus 1 borderline case, so roughly 3-7% in a sample of 30, which is a small sample. - Condition classifier: the errors run almost entirely one way. In the 30 read, 7 narratives stated a driving condition that the patterns did not match (for example "DRIVING ON HIGHWAY FROM FL TO GA", "WHEN IN REVERSE MODE", "on the highway") and 3 stated an at-rest condition the patterns did not match (for example "WHEN I WOULD START IT UP", "from engine while running"). No narrative was given a condition it did not describe. The published shares are therefore floors on both sides, and the "no condition matched" bucket is not empty of conditions - which is why Query 3 exists. EXCLUSIONS AND LIMITS - No mileage, state, VIN, city, dealer name or free text is published; the CSVs contain counts and shares only. - Complaints are unverified, self-reported, and self-selected. They are not failure rates, they are not normalized to vehicles on the road, and nothing here ranks any make or model by reliability. - The condition is the owner's own account of when the noise happened, written after the fact, often months later. It is what the owner noticed, not a measurement. - Owners who describe a frightening or expensive noise are likelier to file than owners with a quiet or cheap one, so the mix of words here is not the mix of noises on the road. - "Nobody could reproduce it" is the owner's report of what a shop said.