The complete, open, machine-readable list of every generic OBD-II diagnostic trouble code — with bilingual descriptions, common causes, symptoms, and repair estimates.
If you are looking up a P-, B-, C- or U-code from your scan tool, this is a single source you can read, fork, and embed without paywalls or per-API fees.
✅ 9,533 / 9,533 codes fully described — 100 % across all seven families (P0, P2, P3, U0, U3, B0, C0). Plus ~24,000 causes, ~24,000 symptoms, ~25,000 cross-references and ~17,000 source links. No stubs left.
| 🚗 Live search app | https://obd.signalwelt.de/ — full DE/EN UI, PWA, deep-linkable, PDF export. Try P0420, oxygen sensor, Lambdasonde. |
| 📊 Data browser | https://foerbsnavi.github.io/obdex/ — search the raw database, download JSON bundles. |
- All 9,533 generic codes of the SAE J2012 / ISO 15031-6 standard in one repository, every one with the full schema.
- Bilingual (English + German) title, description, affected components, common causes with likelihood, symptoms, repair difficulty + cost + hours, MIL / emissions / limp-mode flags, related codes, and at least one public source — for every code.
- 132 OBD-II PIDs (Mode 01 + Mode 09) with formulas, units, and ranges.
- CC0 data, MIT tooling. Use it in your scan-tool app, garage software, training material — no attribution required, no licence fee.
- Static JSON over CDN. No API key, no rate limit, no account.
Manufacturer-specific codes (P1xxx, B1xxx, etc.) are deliberately out of scope — those are vendor IP. obdex covers only the generic layer that every OBD-II tool already speaks.
Look up a single code in three lines of JavaScript:
const r = await fetch("https://foerbsnavi.github.io/obdex/generic.min.json");
const codes = await r.json();
const p0420 = codes.find(c => c.code === "P0420");
console.log(p0420.title.en); // "Catalyst System Efficiency Below Threshold (Bank 1)"Or via curl + jq:
curl -s https://foerbsnavi.github.io/obdex/generic.min.json | jq '.[] | select(.code=="P0420")'Direct JSON over GitHub Pages — no auth, no rate limit. Each file also exists as a minified .min.json variant for production.
https://foerbsnavi.github.io/obdex/all.json # codes + PIDs combined
https://foerbsnavi.github.io/obdex/generic.json # DTCs only (9,533 entries)
https://foerbsnavi.github.io/obdex/pids/mode01.json # live data PIDs
https://foerbsnavi.github.io/obdex/pids/mode09.json # vehicle info PIDs
https://foerbsnavi.github.io/obdex/meta.json # counts, build time
- code: P0420
category: powertrain
title:
en: Catalyst System Efficiency Below Threshold (Bank 1)
de: Katalysatorwirkungsgrad unter Schwellwert (Bank 1)
description:
en: The oxygen storage capacity of the main catalytic converter on bank 1
has degraded below the OBD threshold. The downstream oxygen sensor signal
increasingly mirrors the upstream sensor, indicating reduced conversion
efficiency.
de: Die Sauerstoffspeicherfähigkeit des Hauptkatalysators auf Bank 1 liegt
unter dem OBD-Grenzwert. …
affected_components:
- catalytic_converter
- oxygen_sensor_upstream
- oxygen_sensor_downstream
common_causes:
- id: catalyst_aged
likelihood: high
label: { en: Catalyst aged or contaminated, de: Katalysator gealtert oder vergiftet }
- id: o2_sensor_downstream_drift
likelihood: medium
label: { en: Downstream oxygen sensor drift, de: Nachgeschaltete Lambdasonde driftet }
symptoms:
- { en: Check engine light on, de: Motorkontrollleuchte an }
- { en: Failed emissions inspection, de: Abgasuntersuchung fehlgeschlagen }
- { en: Sulfur (rotten egg) smell from exhaust under load, de: Schwefliger Geruch aus dem Auspuff unter Last }
repair:
difficulty: hard
diy_possible: false
estimated_cost_eur: [600, 2500]
estimated_hours: [1.5, 5.0]
flags:
mil: true
emissions_relevant: true
related_codes: [P0430]
sources:
- https://en.wikipedia.org/wiki/Catalytic_converter
- https://en.wikipedia.org/wiki/On-board_diagnostics- Garage / shop apps — bilingual code lookup that doesn't depend on a vendor cloud
- Scan-tool front-ends — pretty-print codes from a Bluetooth ELM327 dongle with cause hints
- Driver / DIY apps — show repair difficulty and rough cost before the workshop visit
- Education and training material — every code with explanation and references
- Research and dataset analysis — 9,533 codes × ~10 fields, all in one JSON
git clone https://github.com/foerbsnavi/obdex.git
cd obdex
npm install
npm run check # validate + duplicate detection
npm run build # generate dist/Requires Node.js ≥ 20.
data/
├── generic/ SAE J2012 codes, valid for all OBD-II vehicles
│ └── <family>xxx_enriched.yaml full schema, one file per family (P0/P2/P3/U0/U3/B0/C0)
└── pids/ Live data parameter IDs (Mode 01, 09, …)
schema/ JSON Schema (Draft 2020-12)
tools/ Node.js validation + build scripts
Each generic-DTC family lives in a single _enriched.yaml file. The build reads them all and emits one merged dataset in dist/.
| Family | Codes | Enriched |
|---|---|---|
| P0 — Powertrain | 3,705 | 100 % |
| P2 — Powertrain (SAE) | 3,495 | 100 % |
| P3 — Powertrain (mixed) | 155 | 100 % |
| B0 — Body | 323 | 100 % |
| C0 — Chassis | 626 | 100 % |
| U0 — Network | 1,055 | 100 % |
| U3 — Network (HV / FCEV) | 174 | 100 % |
| Total | 9,533 | 100 % |
Every code carries the full schema: English + German title and description, affected components, common causes with likelihood, repair difficulty / cost / hours, MIL / emissions / limp-mode flags, and at least one public source.
The 132 PIDs (Mode 01 + Mode 09) are all complete with formula, unit, and range where applicable.
Live counts are also in meta.json and visualised on the landing page.
GitHub Pages must be configured with Source: GitHub Actions in the repository settings before the first push to main for the release workflow to succeed.
schema/code.schema.json— DTC entriesschema/pid.schema.json— PID entries
JSON Schema Draft 2020-12. CI rejects any pull request that fails validation or introduces duplicate codes.
See CONTRIBUTING.md. Short version: one PR per code or coherent batch, sources required, schema-validated automatically.
SAE J2012 itself remains copyrighted. This repository contains independently authored descriptions referencing the publicly known code identifiers, not the SAE document text. Contributors must write their own descriptions in their own words — identifiers and bit-level facts are not copyrightable, but verbatim text from any service document is.
The data in this repository is provided as is, without warranty of any kind, express or implied. Diagnostic trouble codes describe symptoms, not definitive faults — incorrect interpretation can lead to wrong repairs and damage. Always cross-check with the vehicle's service documentation and qualified diagnostic tools before acting on any information from this database. Contributors and maintainers accept no liability for decisions made based on this data.