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 codes15,886
- SAE standard9,249
- Manufacturer-specific6,637
- Makes32
- Repair procedures56,729
- Fault families647
- Parts mappings75,055
- Build2026-10-11
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.
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>| System | Letter | Codes | Share | SAE standard | Manufacturer-specific | Fault families |
|---|---|---|---|---|---|---|
| Powertrain | P | 13,991 | 88.1% | 7,354 | 6,637 | 592 |
| Chassis | C | 478 | 3.0% | 478 | 0 | 35 |
| Body | B | 189 | 1.2% | 189 | 0 | 10 |
| Network | U | 1,228 | 7.7% | 1,228 | 0 | 34 |
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).
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>| Make | Manufacturer-specific codes | Share of OEM codes |
|---|---|---|
| Volkswagen | 528 | 8.0% |
| Ford | 413 | 6.2% |
| Lincoln | 413 | 6.2% |
| Mercury | 413 | 6.2% |
| Buick | 402 | 6.1% |
| Cadillac | 402 | 6.1% |
| Chevrolet | 402 | 6.1% |
| GM | 402 | 6.1% |
| GMC | 402 | 6.1% |
| Saturn | 402 | 6.1% |
| Oldsmobile | 401 | 6.0% |
| Chrysler | 282 | 4.2% |
| BMW | 250 | 3.8% |
| Mazda | 233 | 3.5% |
| Jaguar | 163 | 2.5% |
| Pontiac | 115 | 1.7% |
| Plymouth | 113 | 1.7% |
| Dodge | 97 | 1.5% |
| Jeep | 97 | 1.5% |
| Acura | 94 | 1.4% |
| Honda | 94 | 1.4% |
| Infiniti | 94 | 1.4% |
| Subaru | 93 | 1.4% |
| Kia | 76 | 1.1% |
| Nissan | 59 | 0.9% |
| Lexus | 49 | 0.7% |
| Toyota | 45 | 0.7% |
| Mitsubishi | 33 | 0.5% |
| Mercedes-Benz | 32 | 0.5% |
| Geo | 19 | 0.3% |
| Suzuki | 17 | 0.3% |
| Audi | 2 | 0.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.
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.
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 family | Codes | Share | System |
|---|---|---|---|
| ignition coil control circuit | 397 | 2.5% | Powertrain |
| throttle position sensor circuit | 334 | 2.1% | Powertrain |
| fuel injector circuit | 286 | 1.8% | Powertrain |
| lost comm powertrain module | 229 | 1.4% | Network |
| pressure control solenoid circuit | 221 | 1.4% | Powertrain |
| shift solenoid circuit | 207 | 1.3% | Powertrain |
| vvt actuator circuit | 193 | 1.2% | Powertrain |
| pcm internal processor fault | 176 | 1.1% | Powertrain |
| o2 sensor slow response | 173 | 1.1% | Powertrain |
| serial communication link fault | 153 | 1.0% | Powertrain |
| instrument output circuit | 150 | 0.9% | Powertrain |
| wheel speed sensor circuit | 145 | 0.9% | Chassis |
| o2 heater circuit | 142 | 0.9% | Powertrain |
| cruise control input switch circuit | 133 | 0.8% | Powertrain |
| ect sensor circuit | 133 | 0.8% | Powertrain |
Most frequent first-listed procedure
| First-listed procedure title | Codes where it appears first |
|---|---|
| Inspect and reseat the ignition coil connector | 397 |
| Inspect and clean throttle/pedal position sensor connector | 334 |
| Inspect and clean fuel injector connector | 286 |
| Check the module's dedicated fuse and battery/ground connections | 229 |
| Verify fluid level and condition before solenoid diagnosis | 221 |
| Check transmission fluid level and filter condition | 207 |
| Inspect and reseat VVT solenoid connector | 193 |
| Verify battery/charging voltage before further diagnosis | 176 |
| Inspect for contamination sources (oil, coolant, silicone) reaching the exhaust | 173 |
| Check transmission fluid level and condition | 166 |
| Compare live three-phase current data with a scan tool | 161 |
| Check network wiring for obvious damage near recent repairs | 153 |
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.
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>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>| System | Fixes | Easy DIY | Moderate DIY | Professional Required |
|---|---|---|---|---|
| Powertrain | 49,129 | 13,714 (27.9%) | 19,527 (39.7%) | 15,888 (32.3%) |
| Chassis | 1,900 | 295 (15.5%) | 742 (39.1%) | 863 (45.4%) |
| Body | 756 | 60 (7.9%) | 237 (31.3%) | 459 (60.7%) |
| Network | 4,944 | 1,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)).
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>| Group | Fixes | Median lower estimate | Median upper estimate | Mean upper estimate | Median labor |
|---|---|---|---|---|---|
| All procedures | 56,729 | $15 | $60 | $183.40 | 0.8 h |
| First-listed procedures (rank 1) | 15,886 | $8 | $25 | $34.60 | 0.4 h |
| Easy DIY | 15,081 | $6 | $25 | $30.20 | 0.4 h |
| Moderate DIY | 22,302 | $20 | $70 | $106 | 0.8 h |
| Professional Required | 19,346 | $40 | $200 | $392.20 | 1.5 h |
By vehicle system
| System | Fixes | Median lower estimate | Median upper estimate | Median labor |
|---|---|---|---|---|
| Powertrain | 49,129 | $15 | $60 | 0.8 h |
| Chassis | 1,900 | $10 | $45 | 0.7 h |
| Body | 756 | $10 | $40 | 0.6 h |
| Network | 4,944 | $20 | $85 | 1 h |
Highest upper estimates
| Fix | Upper estimate | Fixes |
|---|---|---|
| Replace the HV battery pack (or the worst-performing modules) | $5,862 | 30 |
| De-energize the HV pack and correct the HV battery pack system-level voltage/current monitor fault at its source | $3,942 | 16 |
| Replace ash-restricted DPF (high reading) | $3,500 | 4 |
| Replace ash-saturated DPF | $3,500 | 2 |
| Replace saturated DPF | $3,500 | 4 |
| Replace saturated DPF after failed regen | $3,500 | 2 |
| Replace the planetary gear set (or transmission) | $3,500 | 1 |
| De-energize the HV pack and correct the HV battery module section fault at its source | $3,477 | 24 |
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).
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 estimate | Fixes | Share |
|---|---|---|
| 0.5 h or less | 16,480 | 29.2% |
| 0.6 to 1.0 h | 18,172 | 32.2% |
| 1.1 to 2.0 h | 19,070 | 33.8% |
| 2.1 to 4.0 h | 2,043 | 3.6% |
| over 4 h | 628 | 1.1% |
Median labor by difficulty
| Difficulty | Median labor |
|---|---|
| Easy DIY | 0.4 h |
| Moderate DIY | 0.8 h |
| Professional Required | 1.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).
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 supply | Fixes mapped | Share of fixes |
|---|---|---|
| Automotive wiring repair kit (solder + heat-shrink) | 8,090 | 14.3% |
| Electrical contact cleaner | 6,626 | 11.7% |
| Digital multimeter | 3,460 | 6.1% |
| Programming/subscription session | 1,502 | 2.6% |
| OBD-II / manufacturer scan tool session (shop supply) | 986 | 1.7% |
| HV connector seal kit | 951 | 1.7% |
| Automatic transmission fluid (manufacturer-spec) | 929 | 1.6% |
| Automotive fuse assortment | 918 | 1.6% |
| Transmission filter/pan gasket | 854 | 1.5% |
| Dielectric grease | 846 | 1.5% |
| Dielectric grease pack | 734 | 1.3% |
| Replacement control module | 702 | 1.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
- Source. The full MechanicDB build of 2026-10-11: 15,886 code definitions, 56,729 authored procedures and 75,055 part mappings in 647 hand-authored fault families. Code definitions originate in SAE J2012 / ISO 15031-6 via an MIT-licensed upstream compilation; the repair content is original editorial material from a deterministic, test-gated pipeline. Procedure order is conditional on prerequisites and findings and is not measured likelihood, success, severity, urgency or minimum cost; see ordering metadata, Sources and the data dictionary.
- Catalogue, not incidence. MechanicDB records what each code means and how it is repaired. No figure on this page measures how often a code appears on real vehicles; "most common" here always means most common within the catalogue, and each section says which denominator it uses.
- Estimates are estimates. Parts costs (USD) and labor hours are the dataset's editorial values at build time, useful for comparison between fixes, not quotes. Difficulty is an editorial tier. Repair steps are educational reference material, not professional repair advice; high-voltage and SRS/airbag work requires qualified technicians.
- Refresh. MechanicDB is curated; this page and its charts are regenerated with each new build, so figures move. Cite the build date.
- Reuse. The figures and charts on this page are published under CC BY 4.0: use them in forum posts, articles, slides and videos with a link to https://mechanicdb.dataengineered.io/stats/. The machine-readable version is data.json. The row-level dataset is a separate commercial product; a free 90-code sample is in the public repository.
- Suggested citation. MechanicDB (2026). OBD-II fault codes in numbers, build 2026-10-11. DataEngineered. https://mechanicdb.dataengineered.io/stats/
- Questions or corrections: contact form or mechanicdb@dataengineered.io.
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