What Is an OBD2 Fault Code? (And Why It Isn’t a Diagnosis)
An OBD2 fault code tells you which circuit or reading the engine control unit is unhappy about. It does not tell you which part has failed.
The clearest example is P0171, “system too lean, bank 1”. It is read by a great many people as “replace the oxygen sensor”. In practice it usually means a vacuum leak, a dirty air flow meter or weak fuel pressure — and the oxygen sensor reporting the problem is doing its job correctly. Replacing it changes nothing and costs £150.
The code is where a diagnosis starts. On its own it is roughly the first ten per cent of the answer.
How to read the code itself
Every code is a letter and four digits.
- P — powertrain (engine and gearbox). B — body. C — chassis. U — network and communication between modules.
- The first digit says whether it is generic or manufacturer-specific. P0 codes are standardised and mean the same thing on any make. P1 codes are the manufacturer’s own, and you need their data to interpret them properly.
- The remaining digits identify the system and the specific fault within it.
So a generic reader plugged into any car will give you sensible P0 codes. Ask it about a P1 code, or a fault in a module the manufacturer treats as proprietary, and it will either say nothing useful or nothing at all.
Three common codes and what they really mean
P0171 — system too lean
The engine is getting more air, or less fuel, than the ECU expects. Genuine causes, roughly in order of how often we find them: an air leak downstream of the air flow meter (a split intake hose, a perished breather pipe, a leaking inlet manifold gasket), a contaminated MAF sensor, weak fuel pressure from a tired pump or blocked filter, a partly blocked injector, and an exhaust leak upstream of the sensor drawing in air. The oxygen sensor itself is somewhere near the bottom of that list.
P0420 — catalyst efficiency below threshold
This is the most expensive wrong answer in motoring, because the code appears to name the catalytic converter and catalytic converters are expensive. Often the real cause is the rear lambda sensor, an exhaust leak letting air in before it, or an engine running rich and steadily poisoning the cat.
The important part: if the cat has genuinely failed, something killed it. Fitting a new one without finding out what will kill the new one too, on the same timescale.
P0300 — random or multiple cylinder misfire
Coils, plugs, injectors, low compression, a vacuum leak or cam timing. What matters more than the code is the light: a misfire code with a flashing engine management light is the one to stop driving for, because raw fuel is reaching the catalytic converter.
Why free code reading is worth what you pay for it
A £15 reader or a shop counter service will tell you the code. That is genuinely useful — it is a starting point, and knowing it before you ring a garage is a good idea. But it is worth understanding what it leaves out.
It usually only sees the engine. Generic tools read powertrain codes. ABS, airbag, gearbox, body and chassis modules are frequently invisible to them, which is why a car can show “no faults found” on a cheap reader while the ABS light is lit on the dashboard.
It rarely shows freeze frame data properly. Freeze frame is the snapshot the ECU takes of engine speed, load, coolant temperature, fuel trims and vehicle speed at the exact moment the code set. It is the single most valuable thing in the ECU’s memory, because it tells you the conditions the fault happens in. A fault that only sets at 70mph on a cold engine is a very different fault from one that sets at idle when warm.
It cannot test anything. Reading is passive. A diagnosis needs the ability to command components to move and watch what happens.
What a proper diagnosis actually involves
- Read every module, not just the engine. Faults cross over constantly — low system voltage alone will set unrelated codes across the engine, gearbox, ABS and airbag systems at once, and chasing those individually is expensive and pointless. Where the charging system is at fault, that comes first.
- Record freeze frame and clear nothing yet.
- Watch live data. Short and long-term fuel trims, actual MAF airflow against what the engine should be drawing, lambda sensor switching, rail pressure against commanded pressure. This is where a lean code turns into “there is an unmetered air leak” rather than “it might be the sensor”.
- Actuator testing. Command the EGR valve to open and watch whether it does. Command the injector, the throttle body, the turbo actuator.
- Physical testing. A smoke test finds a vacuum leak in minutes that no amount of code reading will locate. Pressure and compression tests answer questions electronics cannot.
- Reproduce the fault where it is intermittent, rather than guessing at it.
Not everything sets a code
Worth saying plainly, because it catches people out. The ECU only knows what its sensors measure. There is no sensor for a worn clutch, a failing wheel bearing, a tired shock absorber, a slipping auxiliary belt or a mechanical knock from the bottom end.
“I plugged it in and there are no faults” is not the same statement as “there is nothing wrong with the car”. Some of the most serious things that go wrong with an engine are entirely invisible to OBD2.
Should I just clear the code?
Clearing a code without fixing the cause has three problems. The light returns, usually within a few driving cycles. You lose the freeze frame data that would have made the diagnosis quicker and cheaper. And if you are clearing it before an MOT, an illuminated light is a failure and the fault will not stay away long enough to help.
Clearing after a genuine repair is different — that is how you confirm the fix held.
What does diagnosis cost?
| Item | Typical cost |
|---|---|
| Code read only | Often free, and worth what it costs |
| Full diagnostic — all modules, live data, actuator tests | £39–£79 |
| Extended diagnosis on an intermittent fault | Charged by time, agreed in advance |
| Smoke test for vacuum or intake leaks | Usually within the diagnostic |
The way to think about it: a diagnostic fee is what stops you buying parts you did not need. On a P0420 the difference between a correct diagnosis and a guess can be the entire price of a catalytic converter.
When should you call a garage?
Call as soon as you have a code and either the car is behaving oddly, the light is flashing, or the fault has come back after being cleared once. A fault that returns has told you it is real.
If you have already had it read somewhere, bring the code with you — it saves time and we will still test rather than assume. We do engine diagnostics in Birmingham seven days a week, and we will tell you what we tested and what we found, not just which part we want to sell you. If the car has dropped into limp mode or will not start at all, say so when you ring — both change what we check first.
Frequently asked questions
Does a fault code tell you which part has failed?
No. It names the circuit or the reading the ECU is unhappy about. P0171, system too lean, is usually a vacuum leak, a contaminated air flow meter or weak fuel pressure — while the oxygen sensor that reported it is working correctly. Replacing the sensor because the code mentions it is the classic expensive mistake. The code is roughly the first ten per cent of a diagnosis.
What does P0420 mean, and do I need a new catalytic converter?
It means catalyst efficiency is below threshold, and it is the most expensive wrong answer in motoring because it appears to name the cat. It is often the rear lambda sensor, an exhaust leak drawing air in before it, or an engine running rich. And if the cat genuinely has failed, something killed it — fitting a new one without finding what will kill the new one on the same timescale.
Why can't my cheap code reader see the ABS fault?
Because generic readers mostly see powertrain codes. ABS, airbag, gearbox, body and chassis modules are often invisible to them, and manufacturer-specific P1 codes need the manufacturer's own data to interpret. That is why a car can report no faults found on a cheap reader while a warning light is clearly lit on the dashboard.
What is freeze frame data and why does it matter?
It is the snapshot the ECU takes at the exact moment a code sets — engine speed, load, coolant temperature, fuel trims and vehicle speed. It is the most valuable thing in the ECU's memory, because it tells you the conditions the fault occurs in. A fault that only sets at 70mph on a cold engine is a completely different fault from one that sets at warm idle. Clearing codes destroys it.
If the scan shows no faults, is my car fine?
Not necessarily. The ECU only knows what its sensors measure, and there is no sensor for a worn clutch, a failing wheel bearing, a tired shock absorber, a slipping auxiliary belt or a knock from the bottom end. Some of the most serious mechanical faults are entirely invisible to OBD2. No faults found and nothing wrong are two different statements.
Want us to take a look?
Ring us and describe what the car is doing. We’ll tell you what it’s likely to be and roughly what it will cost before you bring it in.