How to read an OBD-II code
A fault code looks like a random jumble, but it is built to a pattern. Take P0171 as the example.
First character: which part of the car
| Letter | Area | Examples |
|---|---|---|
| P | Powertrain | Engine, fuel, ignition, emissions, gearbox |
| C | Chassis | Brakes and ABS, steering, suspension |
| B | Body | Airbags, seats, windows, climate control |
| U | Network | Communication between the car's computers |
Simple scan tools read only P codes. Reading C, B and U codes usually needs a better tool.
Second character: who defined the code
- 0: a generic code, defined by the standard. It means the same on every make.
- 1: a maker-specific code. Each car maker chooses its meaning.
- 2: generic for P codes (P2xxx). For C and B codes it is maker-specific.
- 3: for P codes, P3000 to P3399 are maker-specific and P3400 to P3999 are generic.
So P0171 is generic, and this site can explain it. P1171 would be maker-specific: look it up for your make.
Third character: which system
For generic P codes, the third character gives the system:
| Third character | System |
|---|---|
| 0, 1, 2 | Fuel and air metering (2 covers the injector circuits) |
| 3 | Ignition system and misfire |
| 4 | Auxiliary emission controls |
| 5 | Vehicle speed, idle control and auxiliary inputs |
| 6 | Computer and its output circuits |
| 7, 8, 9 | Transmission |
| A | Hybrid propulsion |
In P0171 the 1 says fuel and air metering.
Last two characters: the exact fault
The last two characters pick out the particular fault inside that system. In P0171, 71 is "mixture too lean, bank 1". These can be digits or the letters A to F, as in P20EE.
Patterns worth knowing
- Within a group of five codes for one sensor, the endings often run: circuit fault, out of range, signal low, signal high, signal cuts in and out. Compare P0100 to P0104.
- Misfire codes carry the cylinder number: P0301 is cylinder 1, P0304 is cylinder 4.
- "Bank 1" is the side of the engine that holds cylinder 1. Four-cylinder engines in a line have only bank 1.
Try the decoder: it breaks any code down this way.