Skip to main content

Most common maintenance-related OBD2 diagnostic trouble codes article highlights:

  • You use an OBD2 scanner to identify what’s causing your Check Engine Light by reading off diagnostic trouble codes
  • Misfires often create diagnostic trouble codes in the P0300-P0314 range, while mass airflow sensor issues typically cause P0100-P0104 codes
  • An engine with an incorrect air-to-fuel ratio might display a code in the P0170-P0175 range, and a stuck-open thermostat can produce a P0125, P0126, or P0128 code

Compared to a knocking engine or wobbly wheel, Check Engine Lights are easy to ignore—though you shouldn’t. It’s a literally lit sign that your car needs some maintenance. And putting it off can cause anything from poor gas mileage to long-term engine damage. However, it’s rarely easy to diagnose unless you know your way around diagnostic trouble codes. But hopefully, this guide will help you understand what some of the most maintenance-related codes mean.    

How do you read and decode your Check Engine Light’s diagnostic trouble codes?

A gray-clothed car mechanic uses an OBD2 scanner to check for diagnostic trouble codes in a silver Toyota Avalon
A car mechanic uses an OBD2 scanner to check for diagnostic trouble codes | Tim Boyle/Bloomberg via Getty Images

No matter how hard you stare at a Check Engine Light, it won’t tell you what’s wrong with your car. For that, you’ll need an OBD2 scanner, aka OBD-II scanner. This device plugs into your car’s OBD2 port, usually located around the driver’s knees, and communicates with the ECU. And if finds any problems, it spits out the relevant diagnostic trouble codes (DTCs).

Although there are thousands of diagnostic trouble codes, including manufacturer-specific ones, OBD-II is a standardized system. Therefore, all DTCs are categorized using the same formula, XYZxx, where

  • X: Malfunction type
    • P: Powertrain (engine, transmission, fuel, ignition)
    • B: Body (passenger compartment items, including the A/C and airbags)
    • U: User network (wiring bus and OBDII-system-related)
    • C: Chassis (mechanical systems, including the steering, suspension, brakes, and ABS)
  • Y: If the code is manufacturer-specific
    • 0, 2: Universal or government-mandated code
    • 1: Manufacturer-specific code
  • Z: Affected car system
    • 1: Fuel or emission management
    • 2: Fuel or air injector circuit
    • 3: Ignition or misfire
    • 4: Emission control
    • 5: Vehicle speed and idle control
    • 6: Computer and output circuit
    • 7, 8, 9: Transmission
    • A, B, C: Hybrid system
    • D, E, F: Future allocation
  • xx: Specific failure code

Some OBD2 scanners merely list off whatever diagnostic trouble codes your ECU stores. For most Check Engine Lights, that means you’ll see a lot of codes starting with ‘P0.’ But sophisticated ones, including the ones professional mechanics and auto-part stores carry, also provide a short description for each DTC.

Keep in mind, though, that these codes only explain the issue the ECU sees, not the exact cause. It’s like telling your doctor you have a fever and some sniffles: it narrows down your illness, but not all the way. So, you or a trained mechanic might still need to do some extra diagnosing to repair the precise fault. But these DTCs are invaluable in sharpening the focus of your wrenching time and energy.

If you don’t feel your engine misfire, a P030X or P0310-P0314 diagnostic trouble code will confirm it

Now, if your engine has a misfire, you likely don’t need to read any diagnostic trouble codes to figure out something’s wrong. However, it’s never a bad idea to double-check. And depending on how severe the misfire or backfire was, it might trigger other DTCs.

If your engine just suffers a generic misfire, you’ll likely only see one code: P030X, where X is the cylinder # of the misfire. And if your car has 10 or more cylinders, it can flash a P0310, P0311, or P0312 code, too, for misfires in cylinders 10, 11, and 12, respectively. Also, if multiple or random cylinders are misfiring, you’ll likely see a P0300 code as well. Furthermore, if the misfire happens within the first 1000 engine revolutions, you’ll see a P0316 code.

Usually, misfires are contained within your car’s engine. But if the misfire becomes a full-on backfire, it can affect other parts of your car. And because your catalytic converter is so vital—and valuable—it has its own OBD2 code, P0314.

In addition, remember that earlier bit about diagnostic trouble codes not always narrowing down specific causes? Well, that’s not quite true with misfire-related DTCs. If your car detects that a too-lean air-to-fuel ratio caused the misfire, it will throw up a P0313 code. As we’ll cover shortly, multiple things can cause lean running. But having a P0313 in addition to other misfire DTCs does eliminate things like clogged EGR valves as well as bad spark plugs or ignition coils.

P0171 and P0174 are the most common OBD2 codes for running too lean

Speaking of your engine running lean, unless you deliberately program your ECU to do so, it triggers some diagnostic trouble codes:

  • P0171: System too lean (Bank 1)
  • P0174: System too lean (Bank 2)

If you have an inline engine, you only have one bank of cylinders, so you’ll only see P0171. But unless you have a W-shaped engine, your car has two banks of cylinders numbered according to their firing order. The odd-numbered ones are in Bank 1 while the even-numbered ones are in Bank 2. Unfortunately, only a few manufacturers list their engines’ firing orders in a manual or on the engine itself. So, you’ll have to do some digging to find that out.

As noted earlier, several things can make your engine run lean. A faulty oxygen sensor, for example, prevents your ECU from accurately monitoring the air-to-fuel ratio. So can bad fuel pumps, dirty fuel injectors, clogged fuel injectors, and damaged mass airflow sensors. And in some cases, leaky PCV valves and even brake boosters can trigger these diagnostic trouble codes, YourMechanic says.

Besides these lean-specific diagnostic trouble codes, you might see two more on the OBD2 scanner:

  • P0170: Fuel trim malfunction (Bank 1)
  • P0173: Fuel trim malfunction (Bank 2)

‘Fuel trim’ refers to how much the ECU alters the amount of fuel going into the cylinders based on the O2 sensor readings, YourMechanic explains. A decrease is called negative fuel trim while an increase is a positive fuel trim. And if the O2 sensors call for a fuel trim outside of an accepted range, your ECU will throw one of these DTCs.

If you have a P0172 or P0175 code, though, you’re running rich

The CEO of Bi-Phase Technologies replaces a pickup truck's stock fuel injectors with his company's proprietary ones
Replacing the fuel injectors in a pickup truck | DAVID BREWSTER/Star Tribune via Getty Images

We’ve talked about running lean so far, but what about the opposite problem, running rich? As in, your car is getting too much fuel and/or not enough air? Well, don’t worry, there are diagnostic trouble codes for this situation, too. In addition to the P0170 and P0173 codes mentioned earlier, a rich-running engine can throw these DTCs:

  • P0172: System too rich (Bank 1)
  • P0175: System too rich (Bank 2)

The potential causes of a rich-running DTC are like those that cause lean-running ones. In addition to bad O2 sensors, you might be dealing with faulty fuel injectors or fuel pumps, or potentially bad spark plugs or ignition coils. Damaged ECUs can also make your engine run rich, as can faulty mass airflow sensors.

Fortunately, DTCs can help diagnose that last issue, too.

Mass airflow sensor problems can trigger one of several diagnostic trouble codes

Although your car primarily uses oxygen sensors to monitor its air-to-fuel ratio (and catalytic converter), it relies on other sensors, too. And one of the most important is the mass airflow (MAF) sensor.

Found in your car’s air intake, the MAF sensor measures how much air flows past it into the engine. From that bit of info, your ECU determines how much fuel it needs to inject for maximum power and efficiency. And it can’t do that if the MAF sensor goes haywire or gets too dirty.

Because the MAF sensor is a key part of the fueling and emission systems, it’s sometimes the cause of multiple diagnostic trouble codes. But it has its own DTCs, too:

  • P0100: Mass airflow (MAF) circuit problem
  • P0101: Mass airflow (MAF) circuit operating range or performance problem
  • P0102: Mass airflow (MAF) circuit low voltage input
  • P0103: Mass airflow (MAF) circuit high air flow and high voltage output
  • P0104: Mass airflow (MAF) electrical circuit erratic and irregular output

In many cases, these diagnostic trouble codes point to damaged MAF sensor wiring. However, vacuum leaks, such as from a damaged air intake or improperly-positioned air filter, can also cause these DTCs, YourMechanic notes. And you can clear some P0102 codes just by cleaning the MAF sensor or replacing the air filter.

Check your thermostat if you get P0126, P0128, or P0125 DTCs

Overheating is bad for your engine, but so is underheating. A hot engine might boil coolant, fry oil, and even seize up entirely, but a cold engine won’t stay lubricated properly or run efficiently. And to prevent either scenario, your car uses a thermostat.

The average thermostat is basically a metal cylinder with a valve at one end connected to a rod, CarBibles explains. This rod passes through a wax-like substance inside the cylinder. When the valve, which touches the coolant circulating around the engine, starts getting warm, so does the wax. As it warms, it expands, which moves the rod and thus the valve, letting coolant flow past and into the radiator. And from there, ambient air and/or fans remove heat from the coolant, thus keeping the engine cool.

There are three diagnostic trouble codes that often indicate a bad car thermostat. The first is P0126, “Insufficient coolant temperature for stable operation.” Basically, the engine can’t get warm quickly enough for the ECU to properly track emissions and oxygen information. Thus, it won’t run efficiently. And usually, this points to a thermostat that’s stuck in the ‘fully-open’ position.

The second diagnostic trouble code worth remembering is P0128, “Coolant temperature below thermostat regulating temperature.” At first glance, this sounds identical to the P0126 code. However, unlike the P0126, the P0128 code has no time component. As a result, while an open thermostat can cause this DTC, so can a faulty coolant temperature sensor or even low coolant levels.

Finally, there’s the P0125 diagnostic trouble code, “Insufficient coolant temperature for closed-loop fuel control.” This is essentially a more severe version of the P0128 DTC and has similar causes.

Follow more updates from MotorBiscuit on our Facebook page.


How to Safely Change Your Spark Plugs and Ignition Coils