Trouble codes
How to read an OBD-II trouble code.
A trouble code has five characters, such as P0301. Each position tells you something about the fault.
An example: P0301
- P
- Powertrain
- 0
- Generic code, defined by SAE
- 3
- Ignition system or misfire
- 01
- The specific fault
Put together, P0301 is a generic powertrain code: “Cylinder 1 Misfire Detected”.
The first letter: which system
- P: powertrain
- B: body
- C: chassis
- U: network
The second character: who defined it
A 0 means a generic code, defined by SAE. A 1 means a manufacturer-specific code.
The third character: which group
For generic powertrain codes (P0), DeepDiag groups the fault by the third character:
- 0, 1, 2: fuel and air metering
- 3: ignition system or misfire
- 4: auxiliary emissions controls
- 5: vehicle speed and idle control
- 6: computer and output circuit
- 7, 8: transmission
The last two characters identify the specific fault.
Stored, pending and permanent
- Stored codes: confirmed faults that turned the check engine light on.
- Pending codes: faults that are not confirmed yet. They become stored if the fault repeats.
- Permanent codes: recorded by the car's computer. A scan tool cannot clear them.
- Freeze frame: the sensor snapshot from the moment the fault was recorded.
Clearing codes erases stored and pending codes and resets the emissions readiness checks. Read what to do before you clear them.
Guides to individual codes
What DeepDiag reads
DeepDiag reads stored, pending and permanent codes from the engine and emissions controllers, and from ABS, airbag and body modules where the vehicle allows it. It shows each code with a plain-language description and a severity rating, then explains the codes with AI.
DeepDiag does not claim every manufacturer-specific module or enhanced code. It reads the standard services the vehicle exposes. See what it works with.
Coming soon