Español

Diagnostics

OBD2 Codes Explained: P0, P1, C, B and U Codes

· 5 min read

What do OBD2 codes mean?

An OBD2 code is a five-character label, like P0420, stored when a self-test on a car or light truck fails. The first letter says which system (P powertrain, B body, C chassis, U network), the second digit says whether it is a generic SAE code (0) or a manufacturer-specific one (1), and the last three digits point to the subsystem and the exact fault. The code tells you where the computer saw a problem, not which part to replace.

Anatomy of the five characters

Take P0171.

  • P = powertrain (engine, transmission, emissions). B = body (airbags, HVAC). C = chassis (ABS, steering). U = network (modules not talking to each other).
  • 0 = generic, defined by SAE J2012 and the same on every brand. A 1 means manufacturer-specific: P1xxx on a Ford means something different than P1xxx on a Toyota.
  • 1 = the subsystem. For P0 codes: 1 and 2 are fuel and air metering, 3 is ignition or misfire, 4 is auxiliary emissions (EGR, EVAP, catalyst), 5 is speed and idle control, 6 is computer and output circuits, 7 and 8 are transmission.
  • 71 = the specific fault within that subsystem. P0171 is "system too lean, bank 1."

Only P codes are tied to the check engine light, because OBD2 is an emissions program. B, C and U codes light their own lamp (ABS, airbag) or none, and a basic $30 reader may not show them.

Seeing a light on the dash? Snap it with DERATE and know if you can keep driving

The five most common P codes

The usual suspects in repair-shop and inspection data:

  1. P0420 Catalyst efficiency below threshold, bank 1. The downstream oxygen sensor reads too much like the upstream one. Usually a worn converter, sometimes a lazy O2 sensor or an exhaust leak. A converter typically runs about $400 to $2,400 installed.
  2. P0300 Random or multiple cylinder misfire. Plugs, coils, injectors, vacuum leaks, low fuel pressure. A flashing check engine light with this code means raw fuel is hitting the converter; stop driving.
  3. P0171 System too lean, bank 1. Too much air or too little fuel: dirty MAF sensor, vacuum leak, weak fuel pump. P0174 is the same on bank 2.
  4. P0455 EVAP large leak. The most common cause is a loose or missing gas cap. Tighten it, drive a few days, see if the light clears.
  5. P0442 EVAP small leak. Cracked vapor hose, purge or vent valve, canister. Often needs a smoke machine to find.

Freeze frame, pending, stored and permanent

When a code sets, the computer saves a freeze frame: RPM, coolant temperature, load, speed and fuel trims at the moment of the fault. It tells a tech whether a P0300 happened at idle on a cold morning or at 70 mph under load, which changes the diagnosis. Photograph it before anyone clears anything.

Not every code is equal.

  • Pending: the test failed once. The light is off. If the fault does not repeat on the next drive cycle, the code clears itself. If it repeats, it matures.
  • Stored (confirmed): the test failed on enough consecutive trips. The check engine light is on. This is what most people mean by "the code."
  • Permanent: a confirmed emissions code that a scan tool cannot erase and that survives a battery disconnect. It clears only after the repair is done and the monitor runs again and passes.

Why clearing codes before an inspection backfires

Clearing the code also clears the readiness monitors, the self-tests the car runs for catalyst, EVAP, O2 sensors and more. An inspection checks two things: no stored codes and monitors complete. A freshly cleared car shows "not ready" and fails, or is sent home to drive more. Completing the monitors takes days of mixed driving, sometimes a specific highway-and-city drive cycle. Some states also check permanent codes, which a clear does not remove. Fix the cause, then drive it, then test it.

How this differs from heavy-truck codes

A Class 8 truck does not use P codes for most faults. It uses SAE J1939: an SPN that names the component, an FMI from 0 to 31 that names the failure type, an occurrence count and a source address for the module that reported it. SPN 3251 FMI 0 is DPF pressure too high; SPN 100 FMI 1 is oil pressure too low. The port is a 9-pin Deutsch, not 16-pin. Full breakdown in SPN and FMI codes explained, and why car dongles fail on trucks in OBD2 scanners for semi trucks.

What to do with a code, step by step

  1. Write down the full code and the freeze frame, or photograph the scanner screen.
  2. Note the light: solid amber means plan a visit; flashing means misfire, stop soon.
  3. Look up the generic meaning, then the known causes for your exact make, year and engine.
  4. Check the cheap stuff first: gas cap, air filter box clips, disconnected vacuum hose, corroded sensor plug.
  5. If you drive a truck and the dash shows SPN/FMI instead, a photo of the lamps or the screen with DERATE gives a free keep-driving, caution or stop verdict; the causes, steps and cost range come with a plan.
  6. Do not clear the code until the repair is done and you have recorded it.

FAQ

Is a P1 code worse than a P0 code?

No. P1 means manufacturer-specific, not more severe. You just need that brand's definition instead of the generic SAE list.

Will disconnecting the battery erase my codes?

It clears stored and pending codes and resets readiness monitors, but it does not erase permanent codes. The light comes back if the fault is still there.

How many drive cycles until the monitors are ready again?

It varies by car and monitor. Many complete in 50 to 100 miles of mixed driving; EVAP monitors take longer and need specific fuel level and temperature conditions.

More guides

Sources

Snap a photo of your dash — DERATE tells you if you can keep driving, the likely part and cost. Free on the App Store.

Available on the
App Store
Get it on
Google Play
Coming soon

DERATE assists. It does not replace inspection by a qualified technician.