An OBD2 fault code — also called a Diagnostic Trouble Code, or DTC — is a standardized five-character code your car stores when it detects a problem and turns on the check engine light. For example, P0420 means the catalytic converter on bank 1 is operating below its efficiency threshold. The code points to a system, not always the exact broken part — here's how to read and act on any code.
What is OBD2?
OBD2 (On-Board Diagnostics, second generation) is a self-diagnostic system built into virtually every car sold in the United States since 1996 (and in many other markets shortly after). Dozens of sensors continuously monitor the engine, emissions, and related systems. When a reading falls outside its expected range, the computer stores a fault code and — if it affects emissions — illuminates the check engine light.
Because the standard is universal, a cheap OBD2 scanner or a phone app paired with a Bluetooth adapter can read those codes from any compliant vehicle through the same 16-pin port, usually found under the dashboard near the steering column.
How to read a DTC: the five characters
Every OBD2 code follows the same structure — one letter and four numbers, like P0420. Decoding each position tells you a lot before you even look up the description:
- 1st character (letter) — the system: P = powertrain (engine/transmission), B = body, C = chassis, U = network/communication.
- 2nd character (digit) — 0 means a generic, standardized code shared across all manufacturers; 1 means a manufacturer-specific code.
- 3rd character (digit) — the subsystem, e.g. fuel and air metering, ignition, emissions, or vehicle speed controls.
- 4th and 5th characters — the specific fault within that subsystem.
So P0420 reads as: Powertrain, 0 generic, emissions subsystem, fault number 20 — “Catalyst System Efficiency Below Threshold (Bank 1).” Once you can parse the structure, no code is a total mystery.
What does P0420 mean — and what actually causes it?
P0420 tells you the catalytic converter on bank 1 isn't cleaning the exhaust as efficiently as the computer expects. The car knows this by comparing the upstream and downstream oxygen-sensor readings. Crucially, the code names the symptom, not the guaranteed cause. A failing catalytic converter is one possibility, but the same code is frequently triggered by:
- A worn or failing downstream oxygen (O2) sensor reporting bad data.
- An exhaust leak before or around the catalytic converter.
- Unburned fuel reaching the converter from a misfire or running rich.
- Engine oil or coolant contaminating the catalyst over time.
What to do when the check engine light comes on
First, note how the light is behaving, because it changes the urgency:
- Steady light — a fault is stored, but it's generally safe to keep driving in the short term. Plan to investigate soon.
- Flashing light — an active, severe misfire that can dump raw fuel into and destroy the catalytic converter. Reduce load, drive gently, and get it looked at as soon as possible.
Next, read the code with a scanner or app and write down the exact DTC — don't rely on memory. Look up the official description and the common causes, starting with the cheapest and most likely. Inspect the obvious things first: a loose or cracked gas cap alone can trigger an evaporative-emissions code like P0455.
If your scanner shows freeze-frame data, save it. Freeze frame is a snapshot of conditions at the moment the fault triggered — engine speed, coolant temperature, load, and fuel trim — and it's often the difference between guessing and diagnosing. A code that only appears when the engine is cold, or only under hard acceleration, tells a very different story than one that's constant, and the freeze frame is where that story lives.
Why you should log every code, not just clear it
Many scanners and apps let you clear codes and reset the check engine light. Clearing a code does not fix the underlying problem — if the fault is still present, the code returns, often after a few drive cycles. Worse, clearing codes erases the freeze-frame data the computer captured at the moment of the fault, which is exactly the information that helps diagnose an intermittent issue.
The smarter habit is to log every code with the date and mileage before you clear it. A history shows you patterns — the same P0300 misfire returning every cold morning, or a code that reappears 200 miles after each “repair.” That pattern is often what cracks a stubborn intermittent fault, and it's invaluable for a mechanic or a future buyer.
Keep a running history of your fault codes
MyDIYGarage lets you log each OBD2 code with the date, mileage, and a note, building a searchable diagnostic history per vehicle — so a recurring code never slips past you. Free to start.
Common codes worth recognizing
A handful of codes show up far more often than the rest. Knowing them on sight saves time:
- P0420 / P0430 — catalytic converter efficiency below threshold (bank 1 / bank 2).
- P0300–P0308 — random or cylinder-specific misfire (the last digit is the cylinder number).
- P0171 / P0174 — system too lean (bank 1 / bank 2), often a vacuum leak or dirty mass-airflow sensor.
- P0128 — coolant temperature below thermostat regulating temperature, commonly a stuck-open thermostat.
- P0455 / P0457 — large evaporative-emissions leak, frequently a loose, missing, or failed gas cap.
The bottom line
OBD2 fault codes are a standardized language your car uses to tell you where to look. Decode the five characters to understand the system, treat the code as a starting point rather than a verdict, and diagnose the cause before replacing expensive parts. Above all, log every code with its date and mileage — a diagnostic history is the most powerful tool you have for solving the codes that keep coming back.