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.
Three codes read aloud
- P0300: P for powertrain, 0 for a generic code, 3 for the ignition system and misfires, and 00 for the exact fault: misfires detected on several cylinders at random. P0301 to P0304 are the same fault pinned to cylinder 1, 2, 3 or 4.
- P0420: powertrain, generic, 4 for emission controls, and 20 for the catalytic converter on bank 1 working below the level the computer expects.
- U0100: U for network, generic, and a number that means the other computers in the car have lost contact with the engine computer.
What the code does not tell you
The five characters say where the computer saw a problem and what kind of reading upset it. They do not say why. A code for an oxygen sensor circuit may be the sensor, its wiring, a blown fuse or an exhaust leak near it. That is why a workshop reads the code first and then tests, and why replacing the part named in a code without testing often fails to cure the fault.