
Published: March 25, 2026 · Last updated: June 28, 2026
Clearing a fault code takes two clicks on any scanner. The part nobody explains is why the code comes straight back, and what to do when it won’t leave no matter how many times you erase it.
First step is always reading the codes so you know what you’re dealing with. If you haven’t done that yet, start there and come back to clear them.
Quick answer
Ignition ON, engine OFF, connect the scanner, hit erase. The stored code clears and the dashboard light goes out, as long as the fault isn’t still active. If the code comes back within a drive or two, that’s not a broken scanner. It means the problem is still there and the ECU is storing the same fault again.
Clearing a code is a reset, not a repair. If it comes back, the fault is still live. Fix the cause, not the code.
This content is for members only.
The right way to clear codes
You don’t need the engine running. Ignition ON, engine OFF is the standard method and the one I use on every car. Some scanners let you erase with the engine running, but there’s no reason to.
One thing most people miss: a basic engine reader or ELM327 only clears the engine. If you have a light in ABS, airbag or another module, you need a full-system scanner to reach and clear those.
- Ignition state: ON, engine OFF
- Engine-only tool: clears engine codes + check engine light only
- Full-system tool: clears codes across all modules (ABS, airbag, transmission, body)
- What it does: removes the stored entry, not the underlying fault
Why the code comes back
This is the whole lesson. Clearing a code wipes the stored entry. If the condition that triggered it is still present, the ECU detects it again and stores it right back.
Say you have broken wiring to an oxygen sensor. The ECU can’t talk to the sensor, so the fault condition is already met. You clear the code, the ECU re-checks on the next cycle, sees the same dead connection, and stores it again. The scanner did its job. The car is telling you the truth.
So a returning code is useful information. Clears and stays gone means historic. Back by the next drive means active problem.
When the code won’t clear even after you fixed it
Sometimes you’ve genuinely repaired the fault and the code still sits there. That’s usually a permanent or emission code (mode $0A). These resist clearing on purpose and only clear once the ECU re-verifies the system as healthy across several drive cycles.
So don’t assume your repair failed. Give it a few proper drive cycles before you judge.
After a real repair, let emission codes run a few full drive cycles before deciding anything. Cold start, normal driving, mixed speeds. If the code self-clears, the fix held. If it comes back hard, it isn’t actually solved yet.
When a scanner can’t win (the stubborn code)
There’s a third situation, the one this guide adds. Sometimes no amount of clearing works, and the fix isn’t another erase.
The classic is a fault that’s permanent by design. An EGR blocked off years ago throws an EGR flow code every drive cycle, because from the ECU’s view the EGR genuinely isn’t flowing. The code is correct.
The only way to silence it for good is to disable the diagnostic check inside the ECU firmware. That’s a DTC delete, a completely different operation. You modify the ECU binary so it stops looking for that fault at all. It survives drive cycles, battery disconnects, everything.

A 2005 BMW E46 318d (M47TU2, Bosch EDC16) came in with P0401 (EGR flow) and a lambda code that would not stay cleared. The EGR had been blocked off years earlier, so the codes were structurally permanent. A scanner clear did nothing, both were back by the next drive. What finally silenced them was disabling the checks in the ECU firmware with KESS V2, then correcting the checksum. After the flash: no active codes, light out, adaptive values untouched.
→ Read the full BMW E46 318d DTC delete case study
The other kind of stubborn code lives inside a module, not the engine. Airbag crash codes are the obvious one: after a deployment the airbag module locks the fault and a normal OBD clear won’t shift it.
Other module faults behave the same way. Sometimes the right tool resets these over OBD, but more often the fault is stored deep in the module’s EEPROM, and clearing it means pinning wires straight onto the unit, reading the chip, and rewriting the software. That’s module programming, not diagnostics, and a different skill set again.
Never DTC-delete a car you’re about to sell, and never learn firmware or EEPROM work on your daily driver. A failed flash can brick the module, and selling a car with hidden emission deletes you didn’t disclose is fraud, not a shortcut. Want to practice? Get a cheap junk module off eBay and brick that instead.
What you need to clear codes

You don’t need much. Clearing codes is the most basic thing a scanner does. The only real decision is engine-only versus full-system. An ELM327 clears the engine light fine. The moment you want ABS, airbag, transmission or body, you need a full-system tool.
For most home setups a cheap full-system scanner is plenty. Save the expensive tablets for coding and key work, not for clearing a light.
Most common questions about clearing DTCs
Can a fault code be removed permanently so it never comes back?
Only by modifying the module that stores it, either a DTC delete in the ECU firmware or an EEPROM rewrite on another module. Both are different and riskier than clearing with a scanner, both are used for faults whose cause won't be fixed, and a failed write can brick the unit. Never do it on emission systems of a car you intend to sell.
Can you clear airbag crash codes with a scanner?
Usually not. After a deployment the airbag module locks the crash data, and a normal OBD clear won't remove it. Some cars allow a crash-data reset over OBD with the right tool, but on many the data is held in the module's EEPROM and clearing it means reading the chip directly and rewriting it. That's module programming, not a standard code clear.
Why won't a code clear even though I already fixed the issue?
Emission and permanent codes (mode $0A) resist clearing on purpose. They only clear after the ECU re-verifies the system across several drive cycles. After a genuine repair, drive the car normally for a few cold-start cycles and let the readiness monitor confirm the fix.
Can I clear codes by disconnecting the battery?
Sometimes it kills the light for a moment, but if the fault is active the code comes straight back, same as a scanner clear. It also resets your radio, clock and some learned adaptations, so it's a worse method, not a clever one. Use a scanner.
Does clearing fault codes fix the problem?
No. Clearing is a reset, not a repair. It turns off the light and wipes the stored code, but does nothing to the underlying fault. If the root cause is still there, the code returns. Diagnose and fix the cause first, then clear to confirm the repair held.
Why does my fault code come back after I clear it?
Because the fault is still active. Clearing only removes the stored entry. If the condition that triggered it is still present, the ECU detects it again on the next drive cycle and stores the same code. A code that returns immediately is a sign of a real problem, not a faulty scanner.
How do you clear a car fault code?
Turn the ignition on with the engine off, connect an OBD2 scanner, open the module with the fault, and select erase. The stored code is removed and the warning light goes out, as long as no active fault is still present. An engine-only adapter clears just the engine; a full-system scanner clears every module.
Most popular OBD2 guides
Hi, I am Juraj Lukacko. I got frustrated by unhelpful and scammy mechanics, so I decided to learn everything about car diagnostics myself. I test dozens of new car diagnostic tools every month along with learning new strategies to fix and customize cars.
