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

Related