PULSCAR ANALYSIS — THE AIR CONDITIONER THAT DOES NOTHING, IN NHTSA PUBLIC DATA 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://pulscar.io/blog/car-ac-not-working ------------------------------------------------------------------------------ 1. SOURCE FILES ------------------------------------------------------------------------------ All inputs are NHTSA's own published flat files, downloaded from static.nhtsa.gov and loaded into a local SQLite database. No third-party data was used. COMPLAINTS — 777,040 owner complaints received 1 January 2015 to 8 September 2026. Field definitions: https://static.nhtsa.gov/odi/ffdd/cmpl/CMPL.txt RECALLS — one row per make/model/year per campaign; campaigns counted DISTINCT. Field definitions: https://static.nhtsa.gov/odi/ffdd/rcl/RCL.txt TSBs — manufacturer communications (service bulletins, dealer messages, special coverage and warranty-extension bulletins). Field definitions: https://static.nhtsa.gov/odi/ffdd/tsbs/FLAT_TSBS.txt Complaints are self-reported. They are not failure rates and they have no denominator: nobody publishes how many of each model are on the road, and reporting volume rises with publicity. Nothing here should be read as "make X is more or less reliable than make Y". The counts describe what owners wrote to the federal government, and nothing more. ------------------------------------------------------------------------------ 2. BUILDING THE SET ------------------------------------------------------------------------------ Step 1 — full-text search of the narrative field: SELECT c.* FROM complaints c JOIN complaints_fts f ON f.rowid = c.rowid WHERE complaints_fts MATCH '"air conditioning" OR "air conditioner" OR "a/c" OR blower OR hvac OR refrigerant OR freon OR "climate control" OR defroster'; -> 12,435 complaints. Step 2 — narratives upper-cased and whitespace-normalized, then classified into three buckets that are NOT exclusive. A complaint enters a bucket only when an HVAC subject word sits within 50 characters BEFORE the symptom phrase with no competing subject noun in between (screen, radio, camera, display, navigation, engine, transmission, brake, steering, headlight, wiper, window, door, seat, battery, alternator, fuel, airbag, suspension, tire, lights, radiator). DEAD ("it does nothing") — any of: no-air phrases: (DOES NOT|DID NOT|WILL NOT|WON'T|NOT|STOPPED|QUIT|NEVER|NO LONGER) BLOW* | NO AIR (not followed by CONDITION) | NO AIR ?FLOW | BLOWS NOTHING | NOTHING (COMES|BLOWS) OUT | NO VENTILATION | BLOWS NO AIR | NO FAN | (DOES NOT|WILL NOT|WON'T|NEVER) (WORK|OPERATE|COME ON|TURN ON|RUN) with the last alternative requiring a BLOWER/FAN/VENT subject specifically no-engagement phrases: (WILL NOT|WON'T|DOES NOT|DID NOT|NEVER|FAILS TO) (TURN ON|COME ON|KICK ON| KICK IN|ENGAGE|CYCLE ON) | NOT ENGAGING | NO CLICK with AIR CONDITION*/A/C/AC/COMPRESSOR/CLUTCH/HVAC/CLIMATE CONTROL within 45 characters before blower-failure phrases: BLOWER (MOTOR|FAN|RESISTOR|ASSEMBLY|SWITCH)? (FAILED|WENT OUT|STOPPED|QUIT| DIED|DOES NOT WORK|NOT WORKING|BAD|INOPERABLE|BURNED|MELTED|SEIZED|REPLACED| GONE OUT|GAVE OUT) | (BLOWER|FAN) RESISTOR -> 389 complaints. This is the set used on the page. NOT COLD ("air moves, it is warm") — BLOW* (up to two words) COLD/COOL/WARM/HOT, NO COLD AIR, NOT COLD, STOPPED COOLING, NOT COOLING, WON'T COOL, LOST COOLING, NOT GETTING COLD, with an air-conditioning word within 100 characters before. -> 1,072 complaints. That set belongs to the sibling page https://pulscar.io/blog/car-ac-not-blowing-cold and is published there. UNSPECIFIED — (AIR CONDITION*|A/C|AC|HVAC|CLIMATE CONTROL) within 14 characters of STOPPED WORKING | QUIT WORKING | DOES NOT WORK | NOT WORKING | FAILED | WENT OUT | DIED | INOPERABLE | MALFUNCTIONED | NO LONGER WORKS, and neither of the above. -> 652 complaints. Union of the three: 2,092 complaints, received 1 January 2015 - 8 September 2026. Overlaps: 21 complaints describe both a dead AC and warm air, 18 a dead AC and an unspecified failure, 108 warm air and an unspecified failure, 0 all three. Exclusions built into the query, each added after reading misclassified matches: - "NO AIR CONDITIONING" is not a no-airflow phrase (it means the car has none). - "does not blow cold/cool/warm/hot" is the NOT COLD bucket, not the DEAD bucket; up to three intervening words are allowed ("will not blow any cold air"). - Rear window and rear glass defrosters (heated grids) are excluded: they are not the cabin HVAC system. - Radiator, cooling, engine and condenser fans are excluded where "fan" is the subject; they are engine cooling, not cabin airflow. ------------------------------------------------------------------------------ 3. SAMPLE READING AND FALSE POSITIVES (done before publishing any count) ------------------------------------------------------------------------------ Round 1. The first version of the query allowed any "not blowing" phrase and any air-conditioning word within 120 characters. It returned 545 DEAD complaints. We drew 30 at random (Python random.seed(77), random.sample) and read each in full. 12 of 30 were wrong: 6 were warm-air complaints caught by "not blowing cold", 5 were unrelated failures where the AC was mentioned in passing (a reversing camera, a Tesla menu layout, a battery cable, a hybrid drivetrain error, an engine failure), and 1 was a heater complaint. Observed error rate 40%. Round 2. We added the subject-proximity rule, the cold-phrase lookahead, the rear defroster exclusion and the fan exclusions described in section 2, and drew a fresh random sample of 30 (seed 9090) from the resulting 389, read in full. 3 of 30 were wrong: a Jeep whose blower switched itself ON as part of an electrical gremlin, a complaint where the blower reference could not be tied to a failure, and one car-wide electrical failure in which the AC stopping was a side effect rather than the subject. Observed error rate 10%. We publish the 389 figure with that 10% in mind: the honest reading is "roughly 350 to 390 complaints", and every share quoted from the set carries the same uncertainty. No attempt was made to estimate how many dead-AC complaints the query MISSED; keyword sets under-count by their nature, because owners describe the same failure in words nobody anticipated. ------------------------------------------------------------------------------ 4. FILES ------------------------------------------------------------------------------ dead-ac-complaints-by-context.csv What owners name, as a share of the 389 dead-AC complaints, with the same share of the 1,072 not-cold complaints beside it for contrast. Categories are keyword matches on the narrative and are NOT exclusive. "Blower named" means the word appears, not that a blower was proven faulty. dead-ac-by-make.csv / dead-ac-top-models.csv Counts by make and by make+model, with median failure mileage, the number of complaints carrying a usable odometer reading, the NHTSA fire flag count, and how many narratives mention a blower or melted/burned wiring. Rows with a single complaint are omitted. Mileage statistics drop odometer values at or below 0 and at or above 400,000; 249 of the 389 complaints carry a usable figure. These are raw counts with no denominator. A make that sells more vehicles, or whose owners have been told to file, will appear higher. blower-motor-recalls.csv Every distinct recall campaign in the file whose component, defect, consequence or remedy text contains the word BLOWER: 35 campaigns covering 1,003,944 vehicles. Two flags say whether the consequence field names fire or burning (32 of 35) and whether it names visibility, defrosting or defogging (3 of 35). Campaign counts are DISTINCT on the campaign number; the flat file carries one row per make/model/year. Heavy trucks and buses are included, because the same wiring failure appears there; four of the 35 campaigns are commercial vehicles. ------------------------------------------------------------------------------ 5. BASELINES USED FOR COMPARISON ------------------------------------------------------------------------------ Computed over all 777,040 complaints in the same file: towed 5.11% crash 4.37% fire 1.82% median miles 70,000 These are the shares against which the dead-AC set's 0.77% towed, 0.51% crash and 6.68% fire are read. ------------------------------------------------------------------------------ 6. LIMITATIONS ------------------------------------------------------------------------------ - Self-reported, unverified, no denominator, no failure rate. - A keyword set, not an NHTSA component code. NHTSA's air-conditioner component tag appears on only 272 complaints in the whole file, so it cannot build this set. - The NHTSA fire flag records that the owner reported a fire; it does not establish that the blower circuit caused it. In this set, 26 of 389 complaints carry it. - Model-year concentrations reflect both real defect clusters and publicity around recalls and warranty extensions. - Categories overlap; shares do not sum to 100%. ------------------------------------------------------------------------------ CASE SENSITIVITY — SECTION ADDED 19 SEPTEMBER 2026 ------------------------------------------------------------------------------ NHTSA stores complaint narratives in ALL CAPS for records filed through roughly 2020 and in mixed case for records filed from 2021 on. A case-SENSITIVE search of the narrative field loses about 92% of the complaints filed after 2020, so this is the single largest way an analysis of this database can go wrong while still looking finished. Every query behind this file is case-insensitive, in two layers: * the complaint set is built with an FTS5 MATCH full-text search, which folds case before matching, so it cannot miss a mixed-case record; and * where the narrative is then tested with patterns, the narrative is upper-cased and whitespace-normalized first, so the patterns compare upper against upper. No query in this work uses GLOB or any case-sensitive comparison. This was not taken on trust. On 19 September 2026 every published folder was re-checked against the same database. Re-run here: the step-1 search returns 12,435 complaints today, exactly the figure published above.