Check Engine Light: What the Ten Most Common Codes Actually Mean
A generic scan tool costs about the price of a tank of fuel and turns a warning light into a starting point. What it will not do is tell you which part to buy. Every code below names a condition the computer observed, and each has several possible causes.
Read the code first
Plug the reader into the OBD-II port — under the dash, driver’s side, on everything sold in the US since 1996. Note the code and whether the light is steady or flashing.
A flashing light means stop driving. It signals a misfire severe enough to dump unburnt fuel into the catalytic converter, and a converter is one of the most expensive parts on the car.
The codes you will actually see
P0420 / P0430 — Catalyst efficiency below threshold. The most misdiagnosed code there is. The computer compares two oxygen sensors and concludes the converter is not working. Before spending on a converter, rule out a lazy downstream O2 sensor and any exhaust leak ahead of it — a small leak lets in air and mimics a dead cat exactly.
P0300–P0308 — Random or cylinder-specific misfire. P0300 is random; P0301 through P0308 name the cylinder. Start with the cheap consumables: plugs, coil packs, injectors, in that order. Swapping the coil from the named cylinder with its neighbour and re-reading tells you in ten minutes whether the coil is at fault.
P0171 / P0174 — System too lean. The engine is getting more air than the computer expects. Usually an unmetered vacuum leak: a cracked intake hose, a failed PCV valve, a leaking intake gasket. A dirty mass airflow sensor is second. Fuel pressure is third.
P0128 — Coolant thermostat below regulating temperature. Almost always a thermostat stuck open. Cheap part, and worth doing — an engine that never reaches temperature runs rich and wears faster.
P0442 / P0455 — EVAP system leak. Fuel vapour is escaping. Check the fuel cap seal first, genuinely. If that is fine, the purge valve and the vent valve are next, and a smoke test finds the rest.
P0401 — EGR insufficient flow. Carbon has blocked the EGR passage. Often cleanable rather than replaceable, though on some engines the passage is buried and it becomes a labour job.
P0135 — O2 sensor heater circuit. The sensor’s internal heater has failed. This one genuinely is the sensor.
P0562 — System voltage low. Not an engine fault. Charging system: alternator, belt, or battery.
What to do with a code you cannot place
Two habits save real money:
- Check for freeze-frame data. Most readers show the conditions when the code set — RPM, coolant temp, load. A misfire that only sets under load at operating temperature is a different fault from one that sets at idle cold.
- Clear the code and see if it returns. A single event from a bad tank of fuel or a loose connector may never come back. A code that returns within a drive cycle is real.
When to stop guessing
Codes for internal engine or transmission conditions — timing correlation, cam/crank position mismatch, transmission slip ratio — are not parts-cannon territory. Neither is anything involving airbags or ABS. Get those diagnosed properly; the tooling to see live data on those systems is what you are paying for.
Understanding what a code number means
The five characters are structured, and reading them saves looking things up.
- First letter — the system. P powertrain, B body, C chassis, U network.
- First digit — 0 for a generic code standardised across manufacturers, 1 for a manufacturer-specific code.
- Second digit — the subsystem: 1 and 2 fuel and air metering, 3 ignition or misfire, 4 emissions controls, 5 speed and idle control, 6 computer and output circuits, 7 and 8 transmission.
- Last two digits — the specific fault.
So P0301 decodes as powertrain, generic, ignition/misfire, cylinder 1 — before you search for it at all. A P1xxx code means you need manufacturer-specific data rather than a generic list.
Pending codes and readiness monitors
Two things on a scan tool that most people ignore and shouldn’t.
Pending codes are faults the computer has seen once but not yet confirmed. A fault must usually occur on two consecutive drive cycles before the light comes on. Reading pending codes catches a problem before it becomes a warning light, and it is the single most useful habit with a cheap reader.
Readiness monitors show which self-tests the computer has completed since the last reset. This matters practically: an emissions test will fail if monitors are “not ready”, even with no codes stored. Clearing codes resets them all, and some monitors need a specific drive pattern over several days to complete. So do not clear codes the day before a test.
Live data beats guessing
Any reader that shows live data is worth more than one that only reads codes. Three values solve most driveability complaints:
- Fuel trims (short and long term). These show how much the computer is correcting the mixture. Positive numbers above about 10% mean it is adding fuel to compensate for unmetered air — a vacuum leak. Compare at idle and at 2,500 rpm: a leak that shows at idle but disappears under load is a small one downstream of the throttle.
- Oxygen sensor voltages. An upstream sensor should oscillate rapidly between roughly 0.1 and 0.9 V. A lazy or flat trace means the sensor is failing, and that is the most common cause of a wrongly condemned catalytic converter.
- Coolant temperature. If it never reaches around 90 °C, you have a thermostat problem, and every other reading is being made on a cold engine.
The parts cannon problem
The reason a code is a starting point and not a diagnosis is that the computer reports what it observed, and several faults produce identical observations. P0420 is the clearest example: the code names the converter, and the cause is more often a sensor, an exhaust leak, or an engine running rich enough to have damaged the converter — in which case fitting a new converter without fixing the mixture destroys the new one too.
The habit that saves money is asking what would have to be true for the computer to see this, and then testing which of those things is actually true.
When to just go to a shop
A code you cannot place after checking freeze-frame data and fuel trims, anything in the transmission or ABS systems, and any code accompanied by a flashing light or a drivability problem. A diagnostic hour costs far less than a wrongly replaced converter, and a shop with a factory-level tool sees data your reader cannot access.