MechanicDB

MechanicDB › OBD-II DTC database

The OBD-II trouble code database, as a file you can query.

15,886 diagnostic trouble codes joined to 56,729 ranked repair procedures, delivered as pipe-delimited CSV, Apache Parquet or a SQLite database. Built for OBD apps, scan-tool firmware, AI mechanic co-pilots and shop software — not a website you have to scrape.

See the tiers — $49 / $149 Download the free 90-code sample

What you get in the download

15,886 trouble codes9,249 SAE-standard (P0, P2, P34–P39, C0, B0, U0, U3) + 6,637 manufacturer-specific across 32 makes
56,729 ordered procedures3–5 per code in authored consideration order (up to 8 in reviewed families, where diagnostic steps list no parts), conditional on prerequisites and findings, with difficulty tier, parts-cost range and labor hours where estimated
75,055 parts mappingsAftermarket part names per fix, with catalog search URLs
647 fault familiesAuthored groupings that make the corpus navigable rather than a flat code list

Formats

Every tier ships all three. Pipe-delimited CSV (UTF-8 BOM, Excel-safe). Apache Parquet with Snappy compression — a measured 92.5% smaller. A SQLite database carrying all four tables with the join chain intact.

Schema

Four relational tables, normalized for databases and pre-joined for notebooks.

TableRowsHolds
dtc_codes15,886Definition, system category, OEM flag and make, fault family, technical explanation
diagnostic_fixes56,729Authored procedures with consideration order, difficulty tier, parts cost min/max, labor hours, steps
replacement_parts75,055Aftermarket part names per fix, with catalog search URLs
dtc_fixes_joined56,729The flat analytical view — all 21 columns, one read_csv / read_parquet

Join chain: dtc_codes.code_id → diagnostic_fixes.code_id → replacement_parts.fix_id

probability_rank is the supported legacy name for authored procedure consideration order within a code (1 = first). It is not measured cause likelihood, repair success, severity, urgency or minimum cost. Follow each procedure's prerequisites and diagnostic findings. See ordering metadata.

From edition 2026.10, IDs are stable: code_id, fault_id, fix_id and part_id keep their numbers when the dataset grows, so your joins and annotations survive updates. IDs are scoped by domain and table, and repairs are still listed in rank order. Numbers from earlier editions map through the identity and migration contract.

Coverage, stated honestly

The 9,249 SAE-universal codes apply to every vehicle regardless of make. OEM coverage is not even — it is strongest on US-market brands and some marques are thin. The full per-make breakdown is published on the homepage so you can check the makes you care about before buying rather than after. Every published code traces to a committed source; a build gate rejects fabricated codes.

Licensing

The 90-code sample is free under ODbL v1.0. The full dataset ships under a commercial license — $49 for the 9,249 SAE codes, $149 for SAE plus all 6,637 OEM codes. Full terms and the per-make breakdown are on the homepage.

Looking up one specific code instead? Browse the fault-family directory.

Working on trucks, buses or off-highway diesels? The J1939 fault code database covers SAE J1939 SPN/FMI fault pairs from published OEM documents.