MechanicDB

Home / Statistics

Catalogue statistics · build 2026-10-11

OBD-II fault codes in numbers

Aggregate statistics computed from the full MechanicDB dataset: 15,886 diagnostic trouble codes (9,249 SAE-standard, 6,637 manufacturer-specific across 32 makes) mapped to 56,729 authored repair procedures with difficulty, parts-cost and labor estimates. These figures describe the catalogue, not how often codes are set on the road. First-listed metrics use authored procedure consideration order, not measured cause likelihood. Every figure states its denominator and is free to cite, quote and embed with a link to this page.

Fault codes by vehicle system

88.1% of the 15,886 catalogued codes are powertrain codes (P-codes): 7,354 SAE-standard and 6,637 manufacturer-specific. Network (U) holds 1,228, Chassis (C) 478 and Body (B) 189. All 6,637 manufacturer-specific codes in the catalogue are powertrain codes.

OBD-II fault codes by vehicle system15,886 codes (SAE standard + manufacturer-specific) by first letter OBD-II fault codes by vehicle system 15,886 codes (SAE standard + manufacturer-specific) by first letter Powertrain (P-codes): 13,991 (88.1%)Powertrain (P-codes)13,991 (88.1%) Chassis (C-codes): 478 (3.0%)Chassis (C-codes)478 (3.0%) Body (B-codes): 189 (1.2%)Body (B-codes)189 (1.2%) Network (U-codes): 1,228 (7.7%)Network (U-codes)1,228 (7.7%) Source: MechanicDB, mechanicdb.dataengineered.io/stats · build 2026-10-11 · CC BY 4.0
15,886 codesDownload SVG
Embed this chart

Paste the snippet into your post. It links the chart back to this page, which is the only attribution we ask for.

<a href="https://mechanicdb.dataengineered.io/stats/#fig-codes-by-system"><img src="https://mechanicdb.dataengineered.io/stats/charts/codes-by-system.svg" alt="OBD-II fault codes by vehicle system" width="720" style="max-width:100%;height:auto"></a>
<p><small>Source: <a href="https://mechanicdb.dataengineered.io/stats/">MechanicDB OBD-II fault code statistics</a> (CC BY 4.0)</small></p>
SystemLetterCodesShareSAE standardManufacturer-specificFault families
PowertrainP13,99188.1%7,3546,637592
ChassisC4783.0%478035
BodyB1891.2%189010
NetworkU1,2287.7%1,228034

One row per code definition: SAE rows are unique by code string, manufacturer rows by make and code string, so a P1xxx string defined by several makes counts once per make. The system is the code's first letter as defined by SAE J2012 / ISO 15031-6. 15,886 definitions cover 10,047 distinct code strings.

Which makes have the most manufacturer-specific codes

Volkswagen has the most manufacturer-specific codes in the catalogue with 528 (8.0% of 6,637), followed by Ford, Lincoln and Mercury with 413 each. The 32 makes range from 528 down to 2 codes (Audi).

Manufacturer-specific codes per makeTop 15 of 32 makes, 6,637 manufacturer-specific codes Manufacturer-specific codes per make Top 15 of 32 makes, 6,637 manufacturer-specific codes Volkswagen: 528 (8.0%)Volkswagen528 (8.0%) Ford: 413 (6.2%)Ford413 (6.2%) Lincoln: 413 (6.2%)Lincoln413 (6.2%) Mercury: 413 (6.2%)Mercury413 (6.2%) Buick: 402 (6.1%)Buick402 (6.1%) Cadillac: 402 (6.1%)Cadillac402 (6.1%) Chevrolet: 402 (6.1%)Chevrolet402 (6.1%) GM: 402 (6.1%)GM402 (6.1%) GMC: 402 (6.1%)GMC402 (6.1%) Saturn: 402 (6.1%)Saturn402 (6.1%) Oldsmobile: 401 (6.0%)Oldsmobile401 (6.0%) Chrysler: 282 (4.2%)Chrysler282 (4.2%) BMW: 250 (3.8%)BMW250 (3.8%) Mazda: 233 (3.5%)Mazda233 (3.5%) Jaguar: 163 (2.5%)Jaguar163 (2.5%) Source: MechanicDB, mechanicdb.dataengineered.io/stats · build 2026-10-11 · CC BY 4.0
top 15 of 32 makesDownload SVG
Embed this chart

Paste the snippet into your post. It links the chart back to this page, which is the only attribution we ask for.

<a href="https://mechanicdb.dataengineered.io/stats/#fig-oem-codes-by-make"><img src="https://mechanicdb.dataengineered.io/stats/charts/oem-codes-by-make.svg" alt="Manufacturer-specific codes per make" width="720" style="max-width:100%;height:auto"></a>
<p><small>Source: <a href="https://mechanicdb.dataengineered.io/stats/">MechanicDB OBD-II fault code statistics</a> (CC BY 4.0)</small></p>
MakeManufacturer-specific codesShare of OEM codes
Volkswagen5288.0%
Ford4136.2%
Lincoln4136.2%
Mercury4136.2%
Buick4026.1%
Cadillac4026.1%
Chevrolet4026.1%
GM4026.1%
GMC4026.1%
Saturn4026.1%
Oldsmobile4016.0%
Chrysler2824.2%
BMW2503.8%
Mazda2333.5%
Jaguar1632.5%
Pontiac1151.7%
Plymouth1131.7%
Dodge971.5%
Jeep971.5%
Acura941.4%
Honda941.4%
Infiniti941.4%
Subaru931.4%
Kia761.1%
Nissan590.9%
Lexus490.7%
Toyota450.7%
Mitsubishi330.5%
Mercedes-Benz320.5%
Geo190.3%
Suzuki170.3%
Audi20.0%

Counts describe the catalogue's coverage of each make's published code list, not how often the codes occur on the road. Sister brands that share a platform (for example the GM divisions, or Ford, Lincoln and Mercury) publish the same list and therefore show identical counts.

Code strings that mean different things per make

P1121 and P1690 are each defined by 21 of the 32 makes, with 9 and 7 distinct meanings respectively. 745 of the 798 manufacturer-specific code strings (93.4%) are defined by more than one make, and none of them reuses an SAE-standard string.

Code strings defined by the most makesTop 15 of 798 manufacturer-specific code strings Code strings defined by the most makes Top 15 of 798 manufacturer-specific code strings P1121: 21 makesP112121 makes P1690: 21 makesP169021 makes P1105: 20 makesP110520 makes P1243: 20 makesP124320 makes P1410: 20 makesP141020 makes P1500: 20 makesP150020 makes P1705: 20 makesP170520 makes P1122: 19 makesP112219 makes P1300: 19 makesP130019 makes P1450: 19 makesP145019 makes P1795: 19 makesP179519 makes P1120: 18 makesP112018 makes P1361: 18 makesP136118 makes P1362: 18 makesP136218 makes P1408: 18 makesP140818 makes Source: MechanicDB, mechanicdb.dataengineered.io/stats · build 2026-10-11 · CC BY 4.0
top 15 of 798 stringsDownload SVG
Embed this chart

Paste the snippet into your post. It links the chart back to this page, which is the only attribution we ask for.

<a href="https://mechanicdb.dataengineered.io/stats/#fig-codes-shared-across-makes"><img src="https://mechanicdb.dataengineered.io/stats/charts/codes-shared-across-makes.svg" alt="Code strings defined by the most makes" width="720" style="max-width:100%;height:auto"></a>
<p><small>Source: <a href="https://mechanicdb.dataengineered.io/stats/">MechanicDB OBD-II fault code statistics</a> (CC BY 4.0)</small></p>
CodeMakes defining itDistinct meanings
P1121219
P1690217
P1105208
P1243206
P1410208
P15002010
P1705209
P1122199
P1300198
P1450198
P1795198
P11201810
P1361188
P1362187
P1408187

The P1xxx, P3xxx and higher ranges are reserved for manufacturers, so the same string carries a different definition per make; a generic code reader that shows only the string cannot tell them apart. Distinct meanings counts distinct short descriptions in the catalogue; makes that publish the same wording count once.

Which fault families hold the most codes

ignition coil control circuit is the largest of the 647 fault families with 397 codes (2.5%), followed by throttle position sensor circuit (334) and fuel injector circuit (286). Every code carries 3 to 7 authored procedures (7,365 codes with 3, 8,083 codes with 4, 382 codes with 5, 56 codes with 7); the most frequent first-listed procedure, Inspect and reseat the ignition coil connector, appears first for 397 codes.

Fault families with the most codesTop 15 of 647 hand-authored families, 15,886 codes Fault families with the most codes Top 15 of 647 hand-authored families, 15,886 codes ignition coil control circuit: 397 (2.5%)ignition coil control circuit397 (2.5%) throttle position sensor circuit: 334 (2.1%)throttle position sensor circuit334 (2.1%) fuel injector circuit: 286 (1.8%)fuel injector circuit286 (1.8%) lost comm powertrain module: 229 (1.4%)lost comm powertrain module229 (1.4%) pressure control solenoid circuit: 221 (1.4%)pressure control solenoid circuit221 (1.4%) shift solenoid circuit: 207 (1.3%)shift solenoid circuit207 (1.3%) vvt actuator circuit: 193 (1.2%)vvt actuator circuit193 (1.2%) pcm internal processor fault: 176 (1.1%)pcm internal processor fault176 (1.1%) o2 sensor slow response: 173 (1.1%)o2 sensor slow response173 (1.1%) serial communication link fault: 153 (1.0%)serial communication link fault153 (1.0%) instrument output circuit: 150 (0.9%)instrument output circuit150 (0.9%) wheel speed sensor circuit: 145 (0.9%)wheel speed sensor circuit145 (0.9%) o2 heater circuit: 142 (0.9%)o2 heater circuit142 (0.9%) cruise control input switch circuit: 133 (0.8%)cruise control input switch circuit133 (0.8%) ect sensor circuit: 133 (0.8%)ect sensor circuit133 (0.8%) Source: MechanicDB, mechanicdb.dataengineered.io/stats · build 2026-10-11 · CC BY 4.0
top 15 of 647 familiesDownload SVG
Embed this chart

Paste the snippet into your post. It links the chart back to this page, which is the only attribution we ask for.

<a href="https://mechanicdb.dataengineered.io/stats/#fig-fault-families"><img src="https://mechanicdb.dataengineered.io/stats/charts/fault-families.svg" alt="Fault families with the most codes" width="720" style="max-width:100%;height:auto"></a>
<p><small>Source: <a href="https://mechanicdb.dataengineered.io/stats/">MechanicDB OBD-II fault code statistics</a> (CC BY 4.0)</small></p>
Fault familyCodesShareSystem
ignition coil control circuit3972.5%Powertrain
throttle position sensor circuit3342.1%Powertrain
fuel injector circuit2861.8%Powertrain
lost comm powertrain module2291.4%Network
pressure control solenoid circuit2211.4%Powertrain
shift solenoid circuit2071.3%Powertrain
vvt actuator circuit1931.2%Powertrain
pcm internal processor fault1761.1%Powertrain
o2 sensor slow response1731.1%Powertrain
serial communication link fault1531.0%Powertrain
instrument output circuit1500.9%Powertrain
wheel speed sensor circuit1450.9%Chassis
o2 heater circuit1420.9%Powertrain
cruise control input switch circuit1330.8%Powertrain
ect sensor circuit1330.8%Powertrain

Most frequent first-listed procedure

First-listed procedure titleCodes where it appears first
Inspect and reseat the ignition coil connector397
Inspect and clean throttle/pedal position sensor connector334
Inspect and clean fuel injector connector286
Check the module's dedicated fuse and battery/ground connections229
Verify fluid level and condition before solenoid diagnosis221
Check transmission fluid level and filter condition207
Inspect and reseat VVT solenoid connector193
Verify battery/charging voltage before further diagnosis176
Inspect for contamination sources (oil, coolant, silicone) reaching the exhaust173
Check transmission fluid level and condition166
Compare live three-phase current data with a scan tool161
Check network wiring for obvious damage near recent repairs153

A fault family groups codes that share a failure mechanism and repair set; every code belongs to exactly one family. Rank 1 is the first item in the family's authored consideration order, so a family's first procedure appears first for every code in that family. Execution depends on prerequisites and findings; rank is not measured cause likelihood or outcome.

How much of the repair work is DIY

Across all 56,729 repair procedures, 26.6% are Easy DIY, 39.3% Moderate DIY and 34.1% Professional Required. Looking only at the first-listed procedure of each code, 80.5% of the 15,886 first-listed procedures are Easy DIY and 3.8% need a professional. Body codes have the highest professional share among first-listed procedures; see the table.

DIY difficulty of all repair procedures56,729 authored repair procedures DIY difficulty of all repair procedures 56,729 authored repair procedures Easy DIY: 15,081 (26.6%)Easy DIY15,081 (26.6%) Moderate DIY: 22,302 (39.3%)Moderate DIY22,302 (39.3%) Professional Required: 19,346 (34.1%)Professional Required19,346 (34.1%) Source: MechanicDB, mechanicdb.dataengineered.io/stats · build 2026-10-11 · CC BY 4.0
56,729 proceduresDownload SVG
Embed this chart

Paste the snippet into your post. It links the chart back to this page, which is the only attribution we ask for.

<a href="https://mechanicdb.dataengineered.io/stats/#fig-difficulty-all-fixes"><img src="https://mechanicdb.dataengineered.io/stats/charts/difficulty-all-fixes.svg" alt="DIY difficulty of all repair procedures" width="720" style="max-width:100%;height:auto"></a>
<p><small>Source: <a href="https://mechanicdb.dataengineered.io/stats/">MechanicDB OBD-II fault code statistics</a> (CC BY 4.0)</small></p>
DIY difficulty of the first-listed procedure per code15,886 first-listed procedures DIY difficulty of the first-listed procedure per code 15,886 first-listed procedures Easy DIY: 12,794 (80.5%)Easy DIY12,794 (80.5%) Moderate DIY: 2,482 (15.6%)Moderate DIY2,482 (15.6%) Professional Required: 610 (3.8%)Professional Required610 (3.8%) Source: MechanicDB, mechanicdb.dataengineered.io/stats · build 2026-10-11 · CC BY 4.0
15,886 first-listed proceduresDownload SVG
Embed this chart

Paste the snippet into your post. It links the chart back to this page, which is the only attribution we ask for.

<a href="https://mechanicdb.dataengineered.io/stats/#fig-difficulty-first-fix"><img src="https://mechanicdb.dataengineered.io/stats/charts/difficulty-first-fix.svg" alt="DIY difficulty of the first-listed procedure per code" width="720" style="max-width:100%;height:auto"></a>
<p><small>Source: <a href="https://mechanicdb.dataengineered.io/stats/">MechanicDB OBD-II fault code statistics</a> (CC BY 4.0)</small></p>
SystemFixesEasy DIYModerate DIYProfessional Required
Powertrain49,12913,714 (27.9%)19,527 (39.7%)15,888 (32.3%)
Chassis1,900295 (15.5%)742 (39.1%)863 (45.4%)
Body75660 (7.9%)237 (31.3%)459 (60.7%)
Network4,9441,012 (20.5%)1,796 (36.3%)2,136 (43.2%)

difficulty_level is an editorial tier assigned per fix (Easy DIY, Moderate DIY, Professional Required). It is not a safety classification: some DIY-rated procedures include an SRS step or a scan-tool relearn; follow the service manual's safety procedure whatever the rating. The rank-1 procedure is the first item of each code's authored consideration order, not a measured probability.

What the repairs are estimated to cost

56,729 of the 56,729 fixes carry a parts-cost estimate or a recorded zero for procedures that need no parts (100.0%). The median range is $15 to $60 in parts; among first-listed procedures it is $8 to $25. 38.0% of those fixes top out under $50 and 2.2% (1,228) at $1,000 or more; the highest upper estimate is $5,862 (Replace the HV battery pack (or the worst-performing modules)).

Upper parts-cost estimate per fix56,729 fixes with a parts-cost value (estimate or recorded zero), by est_parts_cost_max_usd Upper parts-cost estimate per fix 56,729 fixes with a parts-cost value (estimate or recorded zero), by est_parts_cost_max_usd under $50: 21,562 (38.0%)under $5021,562 (38.0%) $50 to $99: 14,428 (25.4%)$50 to $9914,428 (25.4%) $100 to $249: 9,530 (16.8%)$100 to $2499,530 (16.8%) $250 to $499: 5,702 (10.1%)$250 to $4995,702 (10.1%) $500 to $999: 4,279 (7.5%)$500 to $9994,279 (7.5%) $1,000 and above: 1,228 (2.2%)$1,000 and above1,228 (2.2%) Source: MechanicDB, mechanicdb.dataengineered.io/stats · build 2026-10-11 · CC BY 4.0
56,729 fixesDownload SVG
Embed this chart

Paste the snippet into your post. It links the chart back to this page, which is the only attribution we ask for.

<a href="https://mechanicdb.dataengineered.io/stats/#fig-parts-cost-ranges"><img src="https://mechanicdb.dataengineered.io/stats/charts/parts-cost-ranges.svg" alt="Upper parts-cost estimate per fix" width="720" style="max-width:100%;height:auto"></a>
<p><small>Source: <a href="https://mechanicdb.dataengineered.io/stats/">MechanicDB OBD-II fault code statistics</a> (CC BY 4.0)</small></p>
GroupFixesMedian lower estimateMedian upper estimateMean upper estimateMedian labor
All procedures56,729$15$60$183.400.8 h
First-listed procedures (rank 1)15,886$8$25$34.600.4 h
Easy DIY15,081$6$25$30.200.4 h
Moderate DIY22,302$20$70$1060.8 h
Professional Required19,346$40$200$392.201.5 h

By vehicle system

SystemFixesMedian lower estimateMedian upper estimateMedian labor
Powertrain49,129$15$600.8 h
Chassis1,900$10$450.7 h
Body756$10$400.6 h
Network4,944$20$851 h

Highest upper estimates

FixUpper estimateFixes
Replace the HV battery pack (or the worst-performing modules)$5,86230
De-energize the HV pack and correct the HV battery pack system-level voltage/current monitor fault at its source$3,94216
Replace ash-restricted DPF (high reading)$3,5004
Replace ash-saturated DPF$3,5002
Replace saturated DPF$3,5004
Replace saturated DPF after failed regen$3,5002
Replace the planetary gear set (or transmission)$3,5001
De-energize the HV pack and correct the HV battery module section fault at its source$3,47724

est_parts_cost_min_usd and est_parts_cost_max_usd are the dataset's editorial aftermarket parts estimates in US dollars at build time; they are not quotes, exclude labor and vary by vehicle and region. Medians are computed over fixes, so a family with 397 codes weighs 397 times. Compare groups within this page, not against a shop invoice.

How long the repairs are estimated to take

The median fix is estimated at 0.8 h of labor across the 56,393 fixes that carry an estimate; 29.2% are 0.5 h or less and 1.1% are over 4 h, with a maximum of 10 h. By difficulty the medians are 0.4 h (Easy DIY), 0.8 h (Moderate DIY) and 1.5 h (Professional Required).

Estimated labor hours per fix56,393 fixes with a labor estimate, by est_labor_hours Estimated labor hours per fix 56,393 fixes with a labor estimate, by est_labor_hours 0.5 h or less: 16,480 (29.2%)0.5 h or less16,480 (29.2%) 0.6 to 1.0 h: 18,172 (32.2%)0.6 to 1.0 h18,172 (32.2%) 1.1 to 2.0 h: 19,070 (33.8%)1.1 to 2.0 h19,070 (33.8%) 2.1 to 4.0 h: 2,043 (3.6%)2.1 to 4.0 h2,043 (3.6%) over 4 h: 628 (1.1%)over 4 h628 (1.1%) Source: MechanicDB, mechanicdb.dataengineered.io/stats · build 2026-10-11 · CC BY 4.0
56,393 fixesDownload SVG
Embed this chart

Paste the snippet into your post. It links the chart back to this page, which is the only attribution we ask for.

<a href="https://mechanicdb.dataengineered.io/stats/#fig-labor-hours"><img src="https://mechanicdb.dataengineered.io/stats/charts/labor-hours.svg" alt="Estimated labor hours per fix" width="720" style="max-width:100%;height:auto"></a>
<p><small>Source: <a href="https://mechanicdb.dataengineered.io/stats/">MechanicDB OBD-II fault code statistics</a> (CC BY 4.0)</small></p>
Labor estimateFixesShare
0.5 h or less16,48029.2%
0.6 to 1.0 h18,17232.2%
1.1 to 2.0 h19,07033.8%
2.1 to 4.0 h2,0433.6%
over 4 h6281.1%

Median labor by difficulty

DifficultyMedian labor
Easy DIY0.4 h
Moderate DIY0.8 h
Professional Required1.5 h

est_labor_hours is the dataset's editorial estimate of hands-on time for a shop, present on 99.4% of fixes; fixes without an estimate have labor_status unknown; see parts_cost_status and labor_status.

Which parts and supplies the fixes call for

The 56,729 fixes map to 75,055 replacement-part entries, 1.32 per fix on average (0.3% with 0, 67.8% with 1, 31.3% with 2, 0.6% with 3), drawn from 1,250 distinct catalogue items. Automotive wiring repair kit (solder + heat-shrink) is mapped to the most fixes (8,090, 14.3%), ahead of Electrical contact cleaner (6,626) and Digital multimeter (3,460).

Parts and supplies mapped to the most fixesTop 12 of 1,250 catalogue items, 75,055 mappings Parts and supplies mapped to the most fixes Top 12 of 1,250 catalogue items, 75,055 mappings Automotive wiring repair kit (solder + h…: 8,090Automotive wiring repair kit (solder + h…8,090 Electrical contact cleaner: 6,626Electrical contact cleaner6,626 Digital multimeter: 3,460Digital multimeter3,460 Programming/subscription session: 1,502Programming/subscription session1,502 OBD-II / manufacturer scan tool session…: 986OBD-II / manufacturer scan tool session…986 HV connector seal kit: 951HV connector seal kit951 Automatic transmission fluid (manufactur…: 929Automatic transmission fluid (manufactur…929 Automotive fuse assortment: 918Automotive fuse assortment918 Transmission filter/pan gasket: 854Transmission filter/pan gasket854 Dielectric grease: 846Dielectric grease846 Dielectric grease pack: 734Dielectric grease pack734 Replacement control module: 702Replacement control module702 Source: MechanicDB, mechanicdb.dataengineered.io/stats · build 2026-10-11 · CC BY 4.0
top 12 of 1,250 itemsDownload SVG
Embed this chart

Paste the snippet into your post. It links the chart back to this page, which is the only attribution we ask for.

<a href="https://mechanicdb.dataengineered.io/stats/#fig-parts-most-mapped"><img src="https://mechanicdb.dataengineered.io/stats/charts/parts-most-mapped.svg" alt="Parts and supplies mapped to the most fixes" width="720" style="max-width:100%;height:auto"></a>
<p><small>Source: <a href="https://mechanicdb.dataengineered.io/stats/">MechanicDB OBD-II fault code statistics</a> (CC BY 4.0)</small></p>
Part or supplyFixes mappedShare of fixes
Automotive wiring repair kit (solder + heat-shrink)8,09014.3%
Electrical contact cleaner6,62611.7%
Digital multimeter3,4606.1%
Programming/subscription session1,5022.6%
OBD-II / manufacturer scan tool session (shop supply)9861.7%
HV connector seal kit9511.7%
Automatic transmission fluid (manufacturer-spec)9291.6%
Automotive fuse assortment9181.6%
Transmission filter/pan gasket8541.5%
Dielectric grease8461.5%
Dielectric grease pack7341.3%
Replacement control module7021.2%

Each replacement_parts row links one fix to one catalogue item with a search query, not a part number; 168 fixes have no mapping. Tools and consumables (wiring kits, contact cleaner, multimeters) are catalogue items too, which is why they lead the count.

Method, reuse and citation

Need the code-level records behind these numbers?

Every code with its authored procedures, consideration order, difficulty, parts-cost range, labor hours, step-by-step instructions and part mappings, as CSV, Parquet and SQLite.

License the dataset · from $49