These are the 50 diesel OBD-II codes fleet shops meet most often, grouped by system: fuel and injection, air and boost, EGR, DPF and exhaust, SCR with DEF and NOx, and the engine and electrical faults that sit behind them. A P-code tells you which circuit or system reported a problem and roughly how, but not which part failed — so each code below is paired with where to start looking. One caution before you scan: P-codes come from the SAE J2012 standard used on light- and medium-duty vehicles, while most Class 7 and 8 trucks report faults as J1939 SPN and FMI numbers instead, so the tool and connector matter as much as the list. Book a demo to see codes turned into scheduled work orders, or create a free account and start logging faults per truck.
Diagnostics reference · Diesel fault codes
Fifty Codes Cover Most of What Rolls Into the Shop. Here They Are, Grouped by System.
For fleet mechanics, shop leads and maintenance managers: a working reference of the diesel OBD-II codes you'll see most, what each one really means and where to begin diagnosing it.
P-Codes or J1939 Codes? Know Which Language Your Truck Speaks
P-codes are part of the SAE J2012 standard written for passenger cars, light-duty and medium-duty trucks, and they're read through the 16-pin OBD-II connector; Mitchell 1 notes that technicians now see them in medium-duty and even a few heavy-duty trucks. Most Class 7 and 8 trucks, though, report faults in J1939 format as an SPN (suspect parameter number) with an FMI (failure mode identifier), usually through a 9-pin Deutsch connector — and a basic OBD-II scanner generally can't read them. You can keep both code types on one truck record with a free account.
P-codes, the OBD-II format
- Five characters, such as P0401
- Standard meaning across makes under SAE J2012
- Read on the 16-pin OBD-II connector
- Common on light and medium-duty trucks and vans
SPN and FMI, the J1939 format
- A parameter number plus a failure mode, such as SPN 157 FMI 18
- Used across engine, transmission, brakes and aftertreatment modules
- Usually read on a 9-pin Deutsch connector
- Standard on Class 7 and 8 trucks
Sources: Mitchell 1 on P-codes in commercial vehicles; SAE J1939 protocol summaries. Code text below follows the generic SAE definitions — your engine maker's wording may differ slightly.
The Fifty Diesel OBD-II Codes Fleet Mechanics See Most, Grouped by System
Work down from the code to the system, then to the first check. Nothing here replaces the engine maker's service information, but it tells you where a code belongs and what usually causes it. We can map your own most frequent codes to this list in a demo. Swipe the tables on mobile.
Fuel and injection codes
10 codes| Code | What it means | Where to start |
|---|---|---|
| P0087 | Fuel rail or system pressure too low | Filters, supply restriction, air in fuel, then pump and valves |
| P0088 | Fuel rail or system pressure too high | Pressure control valve, return circuit, rail sensor |
| P0089 | Fuel pressure regulator performance | Regulator response versus commanded pressure; check supply first |
| P0090 | Fuel pressure regulator control circuit | Connector, wiring and coil at the regulator |
| P0093 | Fuel system large leak detected | Visible leaks, injector return lines, high-pressure fittings |
| P0148 | Fuel delivery error | Delivered versus commanded fuel; supply, pump and injectors |
| P0191 | Fuel rail pressure sensor range or performance | Sensor reading against a known-good gauge |
| P0192 | Fuel rail pressure sensor circuit low | Sensor wiring, connector corrosion, sensor itself |
| P0201 | Injector circuit open, cylinder 1 | Injector connector and harness for that cylinder |
| P0263 | Cylinder 1 contribution or balance fault | Injector performance, compression, fuel supply to that cylinder |
Air, boost and intake codes
8 codes| Code | What it means | Where to start |
|---|---|---|
| P0101 | Mass air flow sensor range or performance | Intake leaks, dirty sensor, restricted air filter |
| P0102 | Mass air flow sensor circuit low | Sensor wiring and connector, then the sensor |
| P0103 | Mass air flow sensor circuit high | Sensor wiring short, then the sensor |
| P0107 | Manifold or barometric pressure sensor circuit low | Sensor, connector and vacuum or pressure line |
| P0108 | Manifold or barometric pressure sensor circuit high | Sensor wiring, then the sensor |
| P0234 | Turbocharger overboost condition | Stuck variable geometry vanes, wastegate, boost control |
| P0299 | Turbocharger underboost condition | Charge air leaks, clamps, turbo actuator, restricted intake |
| P0045 | Turbocharger boost control solenoid circuit | Actuator wiring, connector and solenoid |
EGR system codes
7 codes| Code | What it means | Where to start |
|---|---|---|
| P0401 | Insufficient EGR flow | Carbon buildup in the valve or passages, cooler restriction |
| P0402 | Excessive EGR flow | Valve stuck open, position sensor, control fault |
| P0403 | EGR control circuit | Actuator wiring, connector and control module output |
| P0404 | EGR control circuit range or performance | Valve movement versus command; clean or replace the valve |
| P0405 | EGR position sensor circuit low | Sensor and wiring at the valve |
| P0409 | EGR sensor circuit | Sensor, connector and harness |
| P0490 | EGR control circuit high | Shorted wiring or failed actuator |
DPF and exhaust aftertreatment codes
9 codes| Code | What it means | Where to start |
|---|---|---|
| P2002 | Particulate filter efficiency below threshold | Soot loading, pressure sensor lines, failed regenerations |
| P2003 | Particulate filter efficiency below threshold, bank 2 | Same checks on the second bank where fitted |
| P242F | Particulate filter restriction, ash accumulation | Filter is due for a cleaning service, not a sensor fault |
| P2452 | Particulate filter pressure sensor circuit | Sensor, connector and pressure tubes |
| P2453 | Particulate filter pressure sensor range or performance | Plugged or cracked pressure tubes are common |
| P2454 | Particulate filter pressure sensor circuit low | Wiring and connector at the sensor |
| P2459 | Particulate filter regeneration frequency | Duty cycle, short trips, idling, upstream faults |
| P0420 | Catalyst system efficiency below threshold | Oxidation catalyst condition, exhaust leaks, sensors |
| P0544 | Exhaust gas temperature sensor circuit | Sensor, harness routing and connector at the exhaust |
SCR, DEF and NOx codes
9 codes| Code | What it means | Where to start |
|---|---|---|
| P203F | Reductant level too low | DEF level, level sensor, quality of the fluid added |
| P204F | Reductant system performance | Dosing, DEF quality, injector, NOx sensors, exhaust leaks |
| P205B | Reductant tank temperature sensor range | Sensor and tank heater circuit |
| P207F | Reductant quality performance | Test the DEF; off-spec or diluted fluid is common |
| P20E8 | Reductant pressure too low | Pump, filter, lines, injector restriction |
| P20E9 | Reductant pressure too high | Blocked return, injector stuck closed, pump control |
| P20EE | SCR NOx catalyst efficiency below threshold | Dosing, DEF quality, NOx sensors, catalyst condition |
| P2200 | NOx sensor circuit | Sensor wiring, connector and module |
| P2201 | NOx sensor circuit range or performance | Sensor readings against expected values; check for exhaust leaks |
Engine, electrical and sensor codes
7 codes| Code | What it means | Where to start |
|---|---|---|
| P0016 | Crankshaft and camshaft position correlation | Timing components, sensor mounting, tone wheels |
| P0117 | Engine coolant temperature sensor circuit low | Sensor and wiring; check actual coolant temperature |
| P0128 | Coolant thermostat below regulating temperature | Stuck-open thermostat, sensor reading |
| P0300 | Random or multiple cylinder misfire | Fuel supply, injectors, compression, air leaks |
| P0335 | Crankshaft position sensor circuit | Sensor, air gap, tone wheel damage, wiring |
| P0380 | Glow plug or heater circuit | Glow plug relay, wiring, individual plugs |
| P0562 | System voltage low | Charging system, batteries, cables and grounds |
What a Diesel Fault Code Does and Doesn't Tell You About the Repair
A code names the circuit or system that failed a test, along with a failure type — too high, too low, no signal, out of range. It doesn't name the broken part, and codes that mention a sensor often come from what the sensor is measuring rather than the sensor itself. That distinction is where most wasted parts spending starts. Log the confirmed cause with every code for free.
What the code tells you
- Which system or circuit reported the fault
- The failure type: high, low, open, out of range
- Whether it is active now or stored from earlier
- Freeze-frame conditions when it set
What it doesn't tell you
- Which component actually failed
- Whether wiring or the part is at fault
- Whether an upstream problem caused it
- Whether the truck is safe to keep driving
Turn the codes your trucks send into scheduled repairs
In 30 minutes we'll show how FleetRabbit takes fault codes from your telematics, opens a work order with the code and history attached, and flags the codes that keep coming back on the same unit.
What to Do After You Pull a Code, Before Anyone Orders a Part
The same five steps work for any code on the list, and they keep a repeat fault from starting the diagnosis over. Record each result on the work order, and pull codes automatically where you have OEM telematics connected. See this sequence inside a work order in a demo.
The Codes You Can Stop Seeing With Better Preventive Maintenance
A large share of the list traces back to a handful of maintenance items: fuel filters, air filters and charge-air leaks, DEF quality, EGR soot and battery and ground condition. Schedule those in preventive maintenance and have drivers report smoke, warning lamps and low power on the DVIR. Build that schedule free on 3 vehicles.
Diesel OBD-II Code Questions Fleet Mechanics Ask Most Often
Do heavy-duty diesel trucks use OBD-II P-codes?
Some medium-duty and a few heavy-duty trucks report P-codes, but most Class 7 and 8 trucks use J1939 SPN and FMI codes read through a 9-pin connector. Check which connector and protocol your truck uses before buying a scanner. See both code types on one record.
What is the difference between a P-code and an SPN/FMI code?
A P-code is a five-character SAE J2012 code with a standard meaning across makes. An SPN identifies the parameter and the FMI describes how it failed, which is the J1939 format used across heavy-duty modules. Track both formats per truck free.
Does a code tell me which part to replace?
No. It names the system and failure type. Wiring, connectors and upstream faults set the same codes as failed components, so verify before ordering parts. Review your repeat codes with us.
Which diesel codes mean stop driving?
Any code with a red stop lamp, plus oil pressure, coolant temperature and severe fuel pressure faults. Emissions codes usually allow limited driving but can lead to a derate. Set severity rules on your units free.
Can I clear a code without fixing it?
You can, but the fault will return once the system retests, and you lose the freeze-frame data a technician needs. Record the code, repair the cause, then clear and verify. See code history tracking in a demo.
How do I stop the same codes coming back every month?
Track codes by truck, look for repeats on the same unit, and fix the maintenance item behind them — filters, leaks, DEF quality or grounds — rather than the part the code names. Start tracking repeats free.
Stop Looking Codes Up Twice: Keep Every Fault on the Truck's Record
FleetRabbit pulls fault codes from your telematics, opens a work order with the code, conditions and repair history attached, and flags the ones that keep returning — so your mechanics spend their time diagnosing instead of searching.