PULSCAR ANALYSIS OF NHTSA PUBLIC DATA — BLACK SMOKE FROM THE EXHAUST 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 Communications FLAT_TSBS.txt manufacturer communications, counted DISTINCT on the NHTSA document id. Complaints are unverified owner reports with no denominator of vehicles on the road. Nothing here is a failure rate and nothing here ranks a brand. -------------------------------------------------------------------------- 2. THE QUERY, AND THE FALSE POSITIVE THAT ALMOST RUINED IT -------------------------------------------------------------------------- This set is small, and the reason it is small is the most important thing in this file. Step 1 - FTS5 prefilter (case-insensitive by construction) for "black smoke", "dark smoke", "soot", "sooty" -> 826 complaints. Step 2 - regex over the narrative with re.IGNORECASE: black smoke|dark(?:er)? smoke|black exhaust|smoke (?:is |was |came out )? (?:black|dark)|sooty (?:exhaust|smoke|residue)|black soot -> 699, and 692 after dropping motorcycles, RVs and heavy trucks by make. At that point 393 of the 692 - 56.8 percent - carried NHTSA's FIRE flag, against a 1.82 percent baseline across all 777,040 complaints. That is not a finding about exhaust smoke. It is the query catching black smoke pouring from under the hood of a burning car. A page that published "57 percent of black smoke complaints involve fire" would have been publishing an artifact of its own keyword list. Step 3 - the fix. Each "black smoke" match must sit within 90 characters of an exhaust word (exhaust / tailpipe / tail pipe / muffler / out the back / from the rear) AND must NOT sit within the same window of a fire word (fire, flame, caught fire, burst into, burning up, under the hood, engine compartment, smoke from the hood or engine). -> 157. Step 4 - drop any report NHTSA itself flagged as a fire -> 136 complaints. Every figure on the page uses that set of 136. SAMPLE READING. 30 of the 136 were drawn at random (random.seed(5)) and read in full. 27 of 30 described black smoke or black soot at the exhaust as the subject. 3 did not: a camshaft-wear complaint, an emissions-certification complaint and a start-stop driveability complaint that each mentioned soot in passing. Observed false-positive rate about 10 percent (3/30). 136 IS A SMALL SET. Every percentage in the context file is a count out of 136, which means one complaint moves a share by 0.7 points. The shares are published with their counts for exactly that reason, and nothing on the page is stated as a rate. CASE SENSITIVITY. NHTSA narratives are ALL CAPS through 2020 and mixed case from 2021 onward, so an uppercase regex or an uppercase SQLite GLOB silently drops most of the modern file. Every query here is case-insensitive: FTS5 folds case, SQLite LIKE folds ASCII case, and every Python regex carries re.IGNORECASE. On a neighboring query over this same database we measured the size of the trap directly: an uppercase-only search for a quoted trouble code returns 7,358 complaints where the case-insensitive version returns 10,476, a 29.8 percent loss concentrated entirely in 2021-2026. -------------------------------------------------------------------------- 3. THE FILES -------------------------------------------------------------------------- black-smoke-by-context.csv - case-insensitive category searches over the whole narrative of the 136. A complaint can appear in several rows; shares are of 136, not parts of a whole. Mileage: values <= 0 and >= 400,000 dropped; 79 of 136 carry a usable figure, median 90,000, Q1 65,000, Q3 124,000. black-smoke-by-make-and-model.csv - makes and the 30 most-reported models. With 136 complaints, a model with nine of them is not a pattern you should price a car by. It is published for completeness. smoke-color-vs-oil-consumption.csv - the comparison that surprised us. The three color sets are NOT built the same way: the black set is the tightly filtered 136 above, while the blue/gray and white sets are every complaint whose narrative contains that color phrase, unfiltered. The comparison is therefore indicative, not like-for-like, and the black set - the one with the fire complaints already removed - is the conservative side of it. Same oil-consumption regex applied to all three: oil consumption|burning oil|consum\w+ oil|using oil|quart of oil -------------------------------------------------------------------------- 4. MANUFACTURER COMMUNICATIONS -------------------------------------------------------------------------- 39 distinct documents in FLAT_TSBS.txt mention black smoke or excessive smoke. The ones quoted on the page were read either as PDFs on static.nhtsa.gov (BMW SI B01 02 19, GM PIP5180C, GM service update 17309 - all three fetched and read 18 September 2026) or as their summary text in NHTSA's own flat file, which is stated on the page wherever that is the case because the PDF for those documents no longer resolves. -------------------------------------------------------------------------- 5. LIMITATIONS -------------------------------------------------------------------------- * Small set. 136 complaints. Treat every share as indicative. * Owner color vocabulary is the whole subject here and it is unreliable by construction: people call oil smoke black and rich-mixture smoke gray. The page uses that unreliability as the finding rather than pretending it away. * Self-selection. A $20 air filter does not become a federal complaint. The cheap causes that dominate this repair in real life are nearly absent from this file, which is a fact about the file, not about cars. * No denominator, no failure rates, no brand ranking. Questions, corrections, or a figure that does not reproduce: support@pulscar.io