OBD-II Codes Explained: A Complete Guide
Table of contents

Key Takeaway
A complete breakdown of OBD-II diagnostic trouble codes. Learn what P0, C0, B0, and U0 codes mean and how to read them.
OBD-II Diagnostic Trouble Codes (DTCs) are 5-character codes that identify which system in your vehicle reported a fault. The first character indicates the system (P = Powertrain, C = Chassis, B = Body, U = Network), the second indicates whether the code is generic (0) or manufacturer-specific (1), and the last three characters identify the specific fault. Code format and communication protocols are defined by SAE standards J2012 and J1979, both of which apply to every car sold in the US since 1996.
What Are OBD-II Codes?
On-Board Diagnostics II (OBD-II) is a standardized vehicle diagnostics system mandated by the EPA under the Clean Air Act and adopted as a federal requirement for all passenger vehicles sold in the United States since 1996. The system monitors your vehicle's engine, transmission, emissions, and increasingly the chassis and body electronics. When any monitored system detects a fault, the relevant control module stores a Diagnostic Trouble Code (DTC) that identifies the issue.
Every vehicle sold in the US since 1996 is required to have an OBD-II port, located within three feet of the steering wheel and typically under the dashboard (left of the steering column on most vehicles, near the center on some). The port itself is a standardized 16-pin connector (technically the SAE J1962 connector) that any OBD-II scanner can plug into.
The SAE Standards Behind OBD-II Codes
The reason you can take an OBD-II scanner from Year A on Make B and use it on Year C on Make D is that the entire system is defined by published standards. Two SAE standards are particularly important to understand.
SAE J2012 — Diagnostic Trouble Code Definitions. This standard defines the 5-character code structure (the P0420 format) and the meaning of each defined code in the generic ranges. When a manufacturer's ECM stores P0420, the engineering team at that manufacturer is following the J2012 definition: "Catalyst System Efficiency Below Threshold (Bank 1)." Same code, same meaning, regardless of make. J2012 is updated periodically to add new codes as new emissions monitoring requirements are added.
SAE J1979 — E/E Diagnostic Test Modes. Where J2012 defines the codes themselves, J1979 defines the communication protocol used to retrieve them. It specifies the Parameter IDs (PIDs) for every standardized data point exposed over OBD-II — engine RPM (PID 0x0C), vehicle speed (PID 0x0D), short-term fuel trim (PID 0x06), long-term fuel trim (PID 0x07), and dozens more. J1979 also defines the freeze-frame data format (Mode 02), how to read and clear stored codes (Modes 03/04), how to read pending codes (Mode 07), and how to access enhanced data (Mode 22). Any OBD-II scanner that complies with J1979 will work on any car that complies with J1979.
These two SAE standards plus the EPA emissions regulations are the reason OBD-II is universal. They are also why a $20 Bluetooth adapter from a hardware store reports the same fundamental data as a $5,000 dealer scan tool — the underlying protocol is identical. What dealer tools add are manufacturer-specific Mode 22 PIDs and proprietary code definitions that go beyond the SAE-defined generic set.
DTC Format Breakdown
| Position | Meaning | Values |
|---|---|---|
| 1st char | System | P = Powertrain, C = Chassis, B = Body, U = Network |
| 2nd char | Type | 0 = Generic (SAE J2012), 1 = Manufacturer-specific |
| 3rd char | Subsystem | Fuel, ignition, emissions, etc. |
| 4th–5th | Fault # | Specific fault within that subsystem |
Example: P0171
This code means the engine is getting too much air and not enough fuel on Bank 1. See the detailed P0171 Volkswagen diagnosis guide for the fuel-trim methodology that applies to lean codes on any make.

Freeze Frame: The Snapshot That Comes With Every Code
When the ECM logs a DTC, it also captures a "freeze frame" — a snapshot of operating conditions at the moment the fault triggered. Freeze frame is one of the most-underused features of OBD-II, and it is the single best tool for diagnosing intermittent faults. Here is what a typical freeze frame from a P0420 catalyst code looks like:
| Parameter | Value | Notes |
|---|---|---|
| Engine RPM | 2,475 RPM | Highway cruise |
| Vehicle Speed | 65 mph | Sustained highway |
| Engine Coolant Temp | 196°F (91°C) | Fully warmed up |
| Short-Term Fuel Trim B1 | +2.3% | Healthy |
| Long-Term Fuel Trim B1 | +1.1% | Healthy |
| Calculated Engine Load | 38% | Moderate load |
| Throttle Position | 18% | Light cruise |
| MAF Sensor | 12.4 g/s | Normal for conditions |
Reading this freeze frame tells you: the catalyst code did not log because the engine was cold (it was at full operating temperature), not because of high engine load (load was moderate), and not because of a fuel-trim issue (trims were near zero). This narrows the cause to the catalyst itself or the downstream O2 sensor — exactly the diagnostic direction the next steps should follow. A code without a freeze frame is half the information. Always pull both.
20 Most Common OBD-II Codes
| Code | Meaning | Severity |
|---|---|---|
| P0171 | System Too Lean (Bank 1) | Medium |
| P0174 | System Too Lean (Bank 2) | Medium |
| P0300 | Random/Multiple Cylinder Misfire | High |
| P0301 | Cylinder 1 Misfire | High |
| P0420 | Catalyst System Below Threshold (Bank 1) | Medium |
| P0430 | Catalyst System Below Threshold (Bank 2) | Medium |
| P0440 | EVAP System General Malfunction | Low |
| P0442 | EVAP System Small Leak | Low |
| P0455 | EVAP System Large Leak | Low |
| P0128 | Coolant Thermostat Below Temp | Medium |
| P0135 | O2 Sensor Heater Circuit (Bank 1 Sensor 1) | Medium |
| P0401 | EGR Insufficient Flow | Medium |
| P0411 | Secondary Air Injection Incorrect Flow | Low |
| P0500 | Vehicle Speed Sensor | Medium |
| P0505 | Idle Air Control System | Medium |
| P0700 | Transmission Control System | High |
| P0715 | Input/Turbine Speed Sensor | High |
| C0035 | Left Front Wheel Speed Sensor | Medium |
| B0100 | Driver Frontal Stage 1 Deployment Control | High |
| U0100 | Lost Communication with ECM/PCM | High |
Generic vs. Manufacturer-Specific Codes
Generic codes (starting with P0, C0, B0, U0) are standardized across all manufacturers under SAE J2012. Any OBD-II scanner can read and interpret them. Manufacturer-specific codes (starting with P1, C1, B1, U1) are unique to each brand and often require specialized knowledge or tools. For example, Volkswagen's 18044 throttle adaptation code, Toyota's P1130 air-fuel ratio sensor code, and Ford's P1131 lean-condition code are all manufacturer-specific and may not be defined by SAE.
In practice, generic codes cover most of what an everyday driver needs. Manufacturer-specific codes become important on European cars (BMW, VW, Mercedes) and for complex transmission or chassis diagnoses on any make.
How STEER helps with this on your car
Code numbers alone tell you the symptom, not the root cause. STEER reads the DTC, pulls the freeze frame snapshot, identifies your vehicle by VIN, and translates everything into plain English with a clear severity rating. Same SAE-standard PIDs every other scanner reads — surfaced in a workflow that does not require you to memorize the code list or look up freeze frame interpretation.
What to Do After Reading a Code
1. Do not just clear it. Understand the root cause first. Clearing a code without fixing the problem means it will come back within 1-3 drive cycles.
2. Check severity. Some codes are informational (gas cap), others require immediate attention (flashing misfire). The safe-to-drive decision tree covers each scenario.
3. Look for related codes. Multiple codes often share a single root cause. A P0171 plus a P0420 plus an O2 sensor code usually all trace back to the same upstream fault.
4. Pull the freeze frame. Operating conditions at the moment the code logged are the single best diagnostic clue.
5. Check open recalls. Run your VIN through the NHTSA recall lookup before paying for any emissions or powertrain repair.
Frequently Asked Questions
What is the difference between a P0 code and a P1 code?
P0 codes are generic, defined by SAE J2012, and have the same meaning across all manufacturers. Any OBD-II scanner can interpret them. P1 codes are manufacturer-specific — Toyota, Volkswagen, Ford, GM, and other manufacturers each define their own P1 code library. P1 codes often require manufacturer-specific scan tools (VCDS for VW, Forscan for Ford, Techstream for Toyota) to interpret accurately, though many code databases catalog the most common P1 codes for major brands.
How do I clear an OBD-II code?
Any OBD-II scanner can clear codes using SAE J1979 Mode 04 (Clear Diagnostic Information). Connect the scanner, select "Clear Codes" or "Erase DTCs," and confirm. The codes clear from ECM memory and the check engine light extinguishes. Important: clearing the code does not fix the underlying issue, and the code will return within 1-3 drive cycles if the fault persists. Clearing also resets all OBD-II readiness monitors to "Not Ready," which causes automatic failure of OBD-II-based emissions inspections until monitors complete naturally (typically 100-200 miles of varied driving).
What is a pending code vs a confirmed code?
A pending DTC is a fault the ECM has detected once but has not yet confirmed across multiple drive cycles. The check engine light typically does not illuminate for pending codes — they are stored as warnings. A confirmed DTC has occurred across two or more consecutive drive cycles (the exact number varies by code) and triggers the check engine light. Both types are readable; pending codes are accessed via SAE J1979 Mode 07. Pending codes are a useful early-warning signal for intermittent faults that have not yet triggered the light.
Can I read OBD-II codes without a scanner?
Some older vehicles (pre-2000) supported "key dance" or "paperclip" methods to flash check engine light codes via the OBD-II port pins or the gauge cluster. For OBD-II compliant vehicles (1996+) using the standard J1979 protocol, a scanner is required to retrieve codes from the ECM memory. Inexpensive options: Bluetooth adapters paired with a smartphone app ($20-$60), basic handheld scanners ($30-$80), or free code scans at AutoZone, O'Reilly, and similar parts stores.
What does "readiness monitor" mean?
OBD-II readiness monitors are internal self-tests the ECM runs to verify that emissions-related systems are functioning correctly. There are typically 8-11 monitors per vehicle (catalyst, EVAP, O2 sensor, O2 heater, EGR, secondary air, A/C system, misfire, comprehensive component, fuel system, plus a few others depending on configuration). Each monitor is either "Ready" (test has run and passed) or "Not Ready" (test has not yet run or failed). OBD-II emissions inspections require all monitors to be Ready and no stored DTCs to pass. Monitors reset to Not Ready any time codes are cleared or the battery is disconnected.
Are all OBD-II codes safety-critical?
No. Many codes (gas cap codes, slow-developing catalyst efficiency codes, idle control codes) are informational and the vehicle is safe to drive in normal conditions. Other codes (flashing misfire, transmission failure, ABS module fault) indicate active mechanical or safety system problems and require immediate attention. The check engine light alone does not distinguish between these — the code itself does. The safe-to-drive decision tree gives scenario-by-scenario guidance by code.
Get plain-English answers on your iPhone
STEER reads your car's codes the moment they trigger and translates them into something you can act on.
Related reads
Keep going. These pair well with what you just read.
- OBD-II
Where Is the OBD-II Port in My Car?
Can't find the OBD-II port? Here's exactly where to look, what it looks like, and what you can do with it.
5 min read - OBD-II
Best OBD-II Scanners 2026: Buyer's Guide
The complete buyer's guide to OBD-II scanners in 2026. Compare types, features, and prices to find the right one for you.
10 min read - OBD-II
Bluetooth OBD2 Scanner — Authoritative Buyer's Guide (2026)
BLE vs Classic Bluetooth, iPhone vs Android, $10 dongle vs $100 premium. Here is the honest buyer's guide that explains every tradeoff before you click "Add to Cart."
13 min read - OBD-II
What Is an OBD2 Scanner and How Does It Work?
OBD2 scanners demystified. Here's what they are, how they work, and why every car owner should have one.
8 min read
