PULSCAR ANALYSIS — P0171 IN NHTSA OWNER COMPLAINTS: EVERY ONE OF THE 102 READ, WHAT A SHOP ACTUALLY FOUND, HOW OFTEN IT FOUND NOTHING, AND THE FUEL-PUMP RECALLS BEHIND THE FUEL SIDE OF THE CODE 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/p0171-code ------------------------------------------------------------------------------ 0. WHAT THIS FILE ADDS, AND WHAT IT DELIBERATELY DOES NOT RECOMPUTE ------------------------------------------------------------------------------ The PulsCar Check Engine Code Index already counts the manufacturer bulletins that name P0171 — 105 distinct bulletins from 11 manufacturer groups, at least 53% of them software updates, five naming a special coverage or emissions campaign — and publishes its own method and data: https://www.pulscar.io/blog/check-engine-code-index Those bulletin figures are reused unchanged here and in the article. Nothing in this file recounts them. This file answers the complaint side: who files a P0171 report, where the car stands on the warranty clock, what each of the 102 narratives says a shop found or did, how often a shop looked and found nothing, and how large the fuel-pump recall population behind the code's fuel half really is. ONE ARITHMETIC DIFFERENCE, STATED OPENLY. The index reports 42 odometer readings in the P0171 complaint set and a median of 85,750 miles. Our own extraction, keeping every reading above zero and below 400,000, returns 43, including one report whose odometer field reads 5 miles. Dropping that implausible entry leaves 42 readings, the same count the index uses; the mean of the two middle values is then 85,375, and the upper of the two is 85,750. The article quotes the index figure, 85,750, so that the two pages agree. The difference is a convention on an even-sized set, not a disagreement about the data. ------------------------------------------------------------------------------ 1. SOURCE FILES AND DATE RANGE ------------------------------------------------------------------------------ COMPLAINTS NHTSA ODI complaint flat files COMPLAINTS_RECEIVED_2015-2019, _2020-2024 and _2025-2026. Field layout: https://static.nhtsa.gov/odi/ffdd/cmpl/CMPL.txt 777,040 distinct vehicle complaints (product type V), de-duplicated by ODI report number, received 1 January 2015 to 8 September 2026. RECALLS NHTSA recall flat file FLAT_RCL, report dates 1 January 2010 to 9 September 2026; 15,241 distinct campaigns. Every campaign quoted in the article was re-read live at https://api.nhtsa.gov/recalls/campaignNumber?campaignNumber=... on 18 September 2026. Data pulled 14 September 2026; this analysis run 18 September 2026. No third-party data was used. ------------------------------------------------------------------------------ 2. THE COMPLAINT SET ------------------------------------------------------------------------------ Query: the owner narrative (DESCR) matched against the whole-word regular expression \bP0171\b, case-insensitive. SELECT * FROM complaints WHERE descr LIKE '%P0171%'; -- 107 rows then kept only rows matching \bP0171\b -- 102 rows FINAL SET: 102 complaints, the same set the Check Engine Code Index uses. THE 5 REJECTED ROWS WERE READ. All five are genuine P0171 reports written with a manufacturer sub-code suffix: "P017100" on four Kia vehicles (Seltos twice, Telluride, Sportage Hybrid) and "P01710" on a Nissan Pathfinder. So 102 is a floor of about five percent, and all five losses are Korean and Japanese scan tools that append a two-digit failure type. The article says so rather than quietly widening the rule. A WIDER SET, used once in the article for scale. Narratives matching \bP017[14]\b OR "too lean" OR "running lean" OR "runs lean" OR "lean condition" return 179 complaints. Severity in that wider set: crash 2 (1.12%), fire 1 (0.56%), towed 4 (2.23%); 80 odometer readings, median 80,320. It is reported only to show that the shape of the 102 does not change when the net is widened. Self-reported, no denominator, not a failure rate. 102 reports over eleven and a half years is a small set, and no model-level count in it should be read as a ranking. Sales volumes differ by an order of magnitude between these nameplates. ------------------------------------------------------------------------------ 3. WHAT THE 102 LOOK LIKE (p0171-complaints-by-make-and-model.csv, p0171-warranty-position.csv) ------------------------------------------------------------------------------ BY MAKE: Chevrolet 31, Ford 14, Toyota 11, GMC 5, Buick 5, Kia 5, Subaru 4, Mazda 4, Mercedes-Benz 3, Jeep 3, then makes with two or fewer. BY MODEL: Cruze 10, Sonic 6, Focus 5, Traverse 4, Terrain 4, Malibu 4, CX-5 4, F-150 3, RAV4 3. SEVERITY FLAGS, against the whole 777,040-complaint file as the baseline: P0171 set all complaints crash flagged 2 (1.96%) 33,940 (4.37%) fire flagged 1 (0.98%) 14,121 (1.82%) towed 3 (2.94%) 39,739 (5.11%) any injury 1 21,897 any death 0 Below the file's own average on every measure, on a set far too small to make more of that than it will bear. VEHICLE AGE AT REPORT (report year minus model year; 102 rows): 0-3 years 18 · 4-7 years 48 · 8-11 years 25 · 12+ years 11. ODOMETER AT REPORT (42 usable readings; see section 0): under 36,000 1 · 36,000-59,999 9 · 60,000-99,999 17 · 100,000+ 15. Only one of 42 is inside a 36,000-mile new-car warranty. REPORT YEAR: 2015 3 · 2016 6 · 2017 4 · 2018 8 · 2019 10 · 2020 9 · 2021 6 · 2022 8 · 2023 6 · 2024 13 · 2025 14 · 2026 15 (1 January to 8 September only). ------------------------------------------------------------------------------ 4. READING ALL 102, ONE BY ONE (p0171-102-complaints-read.csv) ------------------------------------------------------------------------------ The set is small enough to read completely, so no sampling was used: every one of the 102 narratives was read to its end and given one primary outcome — what the report says a shop found or did, not what the owner suspects. Where several things happened, the outcome is the last confirmed finding. no diagnosis reached, could not reproduce, or not repaired 45 (44.1%) fuel delivery: pump, injector, fuel rail pressure or fuel tank 13 (12.7%) unmetered air: torn duct, vacuum leak, brake booster or vacuum pump, exhaust or manifold leak 9 (8.8%) crankcase ventilation: PCV valve, cam or valve cover, manifold 9 (8.8%) internal engine: head gasket, timing, bearings, carbon, or an oil leak needing engine removal 9 (8.8%) evaporative system: purge valve, canister, fuel tank vacuum 8 (7.8%) exhaust or catalytic converter 4 (3.9%) mass airflow sensor or air box 3 (2.9%) software update named as the repair 2 (2.0%) --- 102 FIVE FLAGS, each read from the text: A shop looked and could not find or reproduce the fault 16 (15.7%) Parts were fitted before a test and the fault returned 11 (10.8%) A named recall, bulletin or coverage did NOT cover this car 13 (12.7%) An oxygen or air-fuel sensor was replaced 5 (4.9%) The report names a fuel-pump recall 6 (5.9%) THE KEYWORD CHECK, AND WHY THE ARTICLE USES THE HAND-READ FIGURE. The regular expression could not (be )?duplicat|cannot duplicat|no (problem|fault|issue|codes?) (was )? found|found nothing|unable to (duplicate|replicate|find)|nothing wrong returns 1 of the 102, against 1.51% across all 777,040 complaints. That one match was read and is genuine. Hand-reading all 102 found 16. The expression misses wordings like "dealer can not identify codes", "they don't know what the real problem is, they are guessing", "unable to do any repairs unless check engine light on", "they claim there are not any codes they can use to diagnose", "on my third dealer", "Ford Corp says it passes their tests". So the keyword figure undercounts by roughly a factor of sixteen on this set, and the article publishes the hand-read figure with its denominator, not the keyword figure. THE SENSOR COUNT WAS CORRECTED BY THIS READING. An earlier pass on this page reported two owners replacing an oxygen sensor on a P0171 car. Reading all 102 finds five: reports 12, 23, 25, 53 and 66 in the published file. In four of the five the code or the rough running came back. The fifth, a 2014 Subaru Forester, is the one case in 102 where changing the sensor was correct — and it was correct because oil leaking from the camshaft carrier covers had soaked the sensor sitting above the exhaust manifold, not because the sensor reported lean. The repair needed the engine out and cost the owner nearly $4,000. LIMITS OF THE CODING. One reader, one pass, no second coder. NHTSA truncates long narratives; the first 1,150 characters were used, which reaches the outcome in all but a few, and those few are coded "no diagnosis reached". On a set of 102 a single report moves any share by about one percentage point, and the 9-report categories are close enough together that their order should not be read as a ranking. ------------------------------------------------------------------------------ 5. THE FUEL-PUMP RECALLS (p0171-fuel-pump-impeller-recalls.csv) ------------------------------------------------------------------------------ Query: recall campaigns whose Component field names a fuel pump and whose text mentions an impeller, plus Toyota's 20V-012 and 20V-682, which describe the same Denso pump without using the word impeller. 15 campaigns. THE TWO EQUIPMENT RECALLS ARE THE HEADLINE, AND THEY ARE RARELY QUOTED. Denso International America recalled the pumps themselves, twice: 20E-026, 24 April 2020, 2,156,057 pumps 20E-085, 17 November 2020, 2,483,801 pumps Denso's words in both: "An impeller within the low pressure fuel pump may crack and deform, potentially causing the fuel pump to fail." The remedy line is the telling one: "Denso has notified the affected vehicle and aftermarket equipment manufacturers who will conduct recalls as necessary to replace the fuel pumps. The recall schedule will be decided by vehicle manufacturers." That is 4,639,858 pumps recalled at the supplier, with the vehicle-level scope left to each carmaker to draw — which is exactly the line owners keep running into. THE VEHICLE-LEVEL CAMPAIGNS, current populations as NHTSA serves them today: 20V-012 Toyota/Lexus 13 Jan 2020 1,830,752 (expanded 4 and 19 Mar 2020) 20V-682 Toyota/Lexus 4 Nov 2020 1,525,742 21V-875 Mazda 12 Nov 2021 121,038 2018 Mazda3/Mazda6, 2019 CX-3, 2018-2019 MX-5, CX-5, CX-9, 2019-2020 Mazda2 24V-864 Honda 15 Nov 2024 40,481 21V-617 Toyota 27 Sep 2021 31,307 24V-113 Honda 15 Feb 2024 29,301 21V-373 Nissan/Infiniti 20 May 2021 24,140 16V-661 Honda 14 Sep 2016 17,643 23V-855 Can-Am (BRP) 15 Dec 2023 10,969 14V-672 Honda 27 Oct 2014 10,076 21V-879 Fiat (FCA) 12 Nov 2021 1,622 22V-862 Genuine Scooters 21 Nov 2022 817 23E-068 Hyundam Industrial 18 Sep 2023 183,323 (a second pump maker, equipment recall) All fifteen figures were re-read live against the NHTSA campaign API on 18 September 2026. A NOTE ON THE POPULATION FIGURES. The article previously cited 695,541 for 20V-012 and 1,517,721 for 20V-682, which are the numbers in the original Part 573 reports. Toyota expanded 20V-012 on 4 March and again on 19 March 2020, and NHTSA's current record for the campaign is 1,830,752; 20V-682 is now 1,525,742. Both the original Part 573 report and the current campaign record are true statements about different moments, and the article now gives the current figure with the original in the same sentence. WHERE THE COMPLAINTS MEET THE RECALLS. Six of the 102 name a fuel-pump recall. Five of those six say their own car was outside it: a 2019 Tacoma ("my VIN does not show as affected"), a 2016 and a 2016 and a 2017 Mazda CX-5 (Mazda's campaign starts at 2018 — confirmed against 21V-875's own model list above), and a 2018 Corolla whose owner cites 20V-012 after EVAP parts failed to fix it. That is not a measurement of how many cars are wrongly excluded; it is what the complaint file looks like from the outside edge of a recall boundary. ------------------------------------------------------------------------------ 6. WHAT THE FILES CONTAIN ------------------------------------------------------------------------------ p0171-complaints-by-make-and-model.csv make, model, complaints, complaints_for_this_make, share_of_102_pct p0171-warranty-position.csv measure (vehicle_age_at_report | odometer_at_report | report_year), band, complaints, denominator p0171-102-complaints-read.csv n, odi_report_number, model_year, make, model, odometer_reported, what_the_report_says_was_found_or_done, shop_looked_and_found_nothing, parts_fitted_before_a_test_and_fault_returned, named_document_did_not_cover_this_car, oxygen_or_air_fuel_sensor_replaced, references_a_fuel_pump_recall p0171-fuel-pump-impeller-recalls.csv campaign, manufacturer, report_date, potentially_affected, makes, model_years, type, summary_uses_the_word_impeller No personal data is published: no VIN, no name, no city, no dealer name and no free text beyond the short description written by us. Every row can be traced by its ODI report number at nhtsa.gov/complaints. ------------------------------------------------------------------------------ 7. LIMITATIONS, IN ONE PLACE ------------------------------------------------------------------------------ * Complaints are self-reported and unaudited, with no denominator of vehicles on the road. They are not failure rates. * 102 is a small set. Model-level counts in it are not a ranking. * Only 42 of 102 state a usable odometer reading, and owners round. * The coding is one reader's judgment, single pass, on truncated narratives. * Recall populations are amended over time; every figure here is what NHTSA served on 18 September 2026 and carries that date in the article. * Coverage always depends on the VIN. Every clock in the article was computed from each document's own terms against September 2026 and will be wrong later.