Symptom guide
On this page
- Is it safe to drive?
- The first step is always the same: read the code
- What the code numbers mean at a glance
- The most common codes by category
- Emissions and catalyst
- Fuel and air metering
- Misfire
- O2 sensor circuits
- Sensor failures
- Charging system
- EGR and EVAP
- How to triage the situation
- What about resetting the code yourself?
- Common misdiagnoses
- Frequently asked questions
Check Engine Light On: What It Really Means
Is it safe to drive?
It depends on whether the light is solid or flashing.
A solid (steady) CEL means a fault has been logged but no immediate damage is in progress. The car will run; emissions may be high, fuel economy may drop slightly, and one or more systems are operating in a limp-mode fallback. Drive normally to a scan tool location, then to a shop.
A flashing CEL means active engine damage is occurring right now. The almost-universal cause is a severe cylinder misfire. Unburned fuel is being dumped into the catalytic converter where it ignites and overheats the substrate. Continued driving on a flashing CEL routinely costs owners $1,500-$3,000 in catalyst replacement on top of whatever caused the original misfire. Stop driving.
The first step is always the same: read the code
The CEL on its own tells you essentially nothing. The OBD-II diagnostic code stored alongside it tells you everything. Without the code you are guessing; with the code you can be targeted.
Free option (5 minutes). Drive to any auto parts store. AutoZone, O'Reilly, Advance Auto Parts, NAPA, and Pep Boys all read codes free of charge as a customer-acquisition service. Ask them to "pull the codes and print them out." They will plug a handheld scanner into the OBD-II port (under the dash, driver side) and hand you a slip with the codes.
Home option ($25-$50). Bluetooth OBD-II adapters like the BlueDriver or OBDLink MX+ pair with a phone app and read codes anywhere. Worth buying if you own more than one car or if your local parts store is inconvenient.
Mechanic option ($80-$150). A shop reads codes as part of any diagnostic visit. Worth it only if you also want them to interpret and quote the repair; the code reading itself is overpriced this way.
What the code numbers mean at a glance
OBD-II codes follow a 5-character format like P0420 or P0171.
The first letter is the system:
- P = Powertrain (engine, transmission, emissions)
- B = Body (airbags, seatbelts, HVAC)
- C = Chassis (ABS, traction control, suspension)
- U = Network communication
The first digit is the standard category:
- 0 = Generic SAE J2012 code, same across all makes
- 1 = Manufacturer-specific code, meaning varies by make
For example, P0420 is a generic Powertrain code with the same meaning on every brand. P1457 is a Honda-specific code that means something different on Toyota.
The remaining three digits identify the specific subsystem and fault.
Roughly 80% of all check engine light cases trace to one of about 20 common codes. P0420, P0171, and the P0300 misfire series alone account for nearly half of all CEL events on US passenger cars.
The most common codes by category
Knowing roughly what category a code falls into often tells you how worried to be before you research further.
Emissions and catalyst
These are the most-seen codes and usually the least urgent.
P0420andP0430: catalyst efficiency below threshold (Bank 1 and Bank 2). Common at 100k+ miles. Drivable for weeks while you diagnose.P0440-P0457: EVAP system leak detected. Sometimes a loose gas cap; sometimes a torn purge hose. Very rarely an urgent problem.
Fuel and air metering
These point to how the engine is being fed.
P0171andP0174: system too lean (Bank 1 / Bank 2). Usually a vacuum leak or dirty MAF sensor. Fix within a few weeks before the catalyst is damaged.P0172andP0175: system too rich. Less common, usually a leaking injector or saturated fuel-pressure regulator.P0101toP0104: MAF sensor circuit. Often resolved by cleaning the sensor with CRC MAF cleaner.
Misfire
Take these seriously.
P0300: random or multiple cylinder misfire. The CEL often flashes if severe enough.P0301-P0306: specific cylinder misfire (the last digit is the cylinder number). AP0303means cylinder 3 is misfiring.
O2 sensor circuits
Mostly low-severity but they often trigger downstream catalyst codes if ignored.
P0131-P0167: oxygen sensor circuit faults. Sensor switching too slowly, stuck at a fixed voltage, or heater circuit problems.
Sensor failures
Specific sensor circuit faults rather than performance issues.
P0113: intake air temperature sensor high.P0118: coolant temperature sensor high.P0335: crankshaft position sensor. Often causes a no-start.P0340: camshaft position sensor.
Charging system
P0562: system voltage low. Almost always paired with the battery warning light.P0620-P0625: generator (alternator) control circuit.
EGR and EVAP
P0401-P0408: EGR flow problems. Common on older cars.P0440-P0457: EVAP leak detected. The most common cause is a loose or cracked gas cap.
How to triage the situation
Once you have the code in hand, the next step depends on what category it falls into:
Low urgency (emissions, EVAP, mature catalyst): drive normally for a few weeks while you diagnose or schedule repair. You will fail emissions testing but the car is not deteriorating fast.
Medium urgency (fuel trim, sensor circuit): drive for a few weeks maximum. Lean conditions damage the catalyst over time; sensor failures can compound into worse codes if neglected.
High urgency (misfire, no-start sensor, severe lean): diagnose this week. A misfire that has not yet earned a flashing light is still heating the catalyst above design temperature.
Stop driving (flashing CEL, no-start codes, severe oil pressure warning): tow to a shop. Continued driving creates major secondary damage.
What about resetting the code yourself?
Disconnecting the battery for 10-15 minutes clears all stored codes on most vehicles. This is rarely the right move. Clearing a code without fixing the underlying problem just means the code returns in hours or days, and now you have lost the freeze-frame data that would have told a mechanic what conditions existed when the fault occurred.
The two cases where battery-disconnect clearing makes sense:
- You fixed the underlying problem. A vacuum leak was repaired, the MAF was cleaned, a sensor was replaced. Now you want to verify the code does not return.
- A one-time code from a loose gas cap or a single missed shift. Tighten the cap or drive normally and the code clears on its own after a few drive cycles anyway; a battery disconnect just speeds the process.
For everything else, leave the code in place. Diagnose, repair, then clear.
Common misdiagnoses
- "It's just the gas cap." Sometimes true (EVAP-family codes), but reading the code takes five minutes and removes the guessing. Do not assume.
- "I'll just put tape over the light." This is the single most expensive choice an owner can make. A taped-over flashing CEL routinely turns into a $2,000+ catalyst replacement.
- "The light went off, so it's fine now." OBD-II clears the MIL after several consecutive successful drive cycles, even if the underlying problem is intermittent. The code may still be stored as "pending" or "history" and will return.