← Back to site
🔎 Technical reference

Complete List of OBD2 Fault Codes — P, B, C, U Codes Explained

By Diag-OBD2® · 5 min read · Updated July 2026

Is your OBD2 scanner showing a code you don't understand? This complete list explains what each fault code means, the most likely causes, and what to do about it.

Contents

  1. How do you read an OBD2 code?
  2. P Codes — Engine & Transmission (the most common)
  3. P1 Codes — Common manufacturer codes
  4. B Codes — Body & Comfort
  5. U Codes — Network & Communication
  6. C Codes — Chassis, ABS & Braking
  7. Generic codes vs manufacturer codes: what's the difference?
  8. Understanding "monitors" and freeze frame data
  9. What to do once you've found the code

How do you read an OBD2 code?

Diag-OBD2 Bluetooth showing an engine fault code
The Diag-OBD2 Bluetooth displays the code and its meaning directly

Every OBD2 code is made up of 5 characters:

P Codes — Engine & Transmission (the most common)

P0300
Random/multiple cylinder misfire
The engine misfires irregularly across several cylinders. Can cause vibrations and higher fuel consumption.
🔍 Common causes: worn spark plugs, faulty ignition coils, clogged injectors, a vacuum leak.
P0171
System too lean — Bank 1
The air/fuel mixture is too lean (too much air, not enough fuel).
🔍 Common causes: faulty oxygen sensor, air leak, clogged air filter, dirty injector.
P0420
Catalyst system efficiency below threshold — Bank 1
The catalytic converter is no longer filtering exhaust gases properly.
🔍 Common causes: worn catalytic converter, faulty downstream oxygen sensor, burnt oil, an ignition problem.
P0442
Small leak detected in EVAP system
A small leak has been detected in the fuel vapour recovery system.
🔍 Common causes: fuel cap not properly closed or damaged, cracked EVAP hoses.
P0128
Coolant temperature below threshold
The engine isn't warming up fast enough.
🔍 Common causes: thermostat stuck open (needs replacing — an inexpensive part).
P0340
Camshaft position sensor circuit malfunction
The camshaft sensor signal is missing or incorrect.
🔍 Common causes: faulty sensor, damaged timing wheel, wiring harness.

🔧 OBD2 scanner for reading engine codes

Read and clear engine (P) codes yourself in under 5 minutes

View scanners →

P1 Codes — Common manufacturer codes

P1176
Fuel trim — Limit reached (VAG)
Specific to VW/Audi/Seat/Skoda. Fuel correction is too large.
🔍 Common causes: oxygen sensor, mass air flow sensor, intake leak.
P1351
Ignition coil primary circuit (GM/Opel)
A problem in the ignition coil supply circuit.
🔍 Common causes: faulty coil, damaged wiring harness, ECU.

B Codes — Body & Comfort

ℹ️ B codes (airbag, body) generally aren't accessible with a generic OBD2 scanner like ours — they require a dedicated multi-system diagnostic tool.
B0001
Driver airbag — Open circuit
An electrical fault in the driver airbag circuit.
🔍 Must be checked by a professional — this is a critical safety system.

U Codes — Network & Communication

U0100
Lost communication with ECM/PCM
The CAN-Bus network is no longer communicating with the engine control unit.
🔍 Common causes: weak battery, damaged wiring harness, faulty ECU.

C Codes — Chassis, ABS & Braking

ℹ️ As with B codes, reading C codes (ABS, braking) requires a multi-system diagnostic tool — our scanners read engine (P) codes only.

Codes starting with C relate to chassis systems: ABS, traction control, power steering, adaptive suspension. They're less common than P codes but often more sensitive, since they're linked to the vehicle's active safety.

C0035
Left front wheel speed sensor — Circuit
The ABS control unit isn't receiving the signal from this wheel sensor (or it's faulty).
🔍 Common causes: dirty or damaged sensor, damaged toothed ring, cut wiring.
C0110
ABS pump motor — Malfunction
The ABS hydraulic unit isn't working properly.
🔍 Must be checked quickly — a faulty ABS system reduces braking effectiveness in an emergency.

Generic codes vs manufacturer codes: what's the difference?

A generic code (2nd character = 0, e.g. P0300) is standardised by the SAE standard and means the same thing across every make. A manufacturer code (2nd character = 1, e.g. P1176) is only documented by the vehicle's manufacturer — its meaning can vary from one make to another, or even from one model to another within the same manufacturer. A basic OBD2 scanner generally reads generic P0 codes well, but some very specific P1 codes sometimes need a more complete manufacturer database to be translated into plain text rather than a simple numeric reference.

Understanding "monitors" and freeze frame data

When a code appears, the control unit also records a freeze frame — a snapshot of the engine parameters (RPM, temperature, load, speed) at the exact moment the fault was detected. This data, accessible from the scanner's menu, helps you understand the conditions under which the fault occurs (cold start, acceleration, idling...).

OBD monitors (or "readiness tests") are self-checks the control unit continuously runs on emissions-related systems (catalytic converter, oxygen sensor, EVAP...). After clearing a code, these monitors reset to "incomplete" and need to be revalidated through several kilometres of varied driving before the next roadworthiness test — otherwise the test can be refused for incomplete monitors, even if no fault is present.

What to do once you've found the code

Whatever the case, note down the exact code before clearing it — it becomes harder to identify with certainty if the light goes off and the symptom doesn't reappear straight away.

🛒 Your engine code scanner

€24.99 — reads engine (P) codes — free delivery — compatible with all makes from 2001

Order →