Pending, stored and permanent codes
Quick answer
A pending code has been detected once but not yet confirmed across enough drive cycles to turn on the check engine light, a stored code has been confirmed and has triggered the light, and a permanent code is a special category that cannot be erased by a scan tool or battery disconnect, clearing only once the related monitor passes on its own during normal driving.
Autel AL319 Professional OBD2 Scanner, Enhanced Check Engine Code Reader
An enhanced code reader that separates pending, stored and permanent codes into distinct screens is what lets you actually see which status a fault is in, rather than only a single list that hides that distinction.
Coverage varies by tool and by model year, so check a specific tool against a specific vehicle before buying.
Pending codes: the early warning stage
A pending code appears the first time the powertrain control module detects a fault, before it has been confirmed across the number of consecutive drive cycles the manufacturer requires to consider it real rather than a one time anomaly. A pending code does not turn on the check engine light. It exists purely as an internal flag, visible only if you check with a scan tool.
Pending codes are useful precisely because they give you a warning before the dashboard light appears. If a fault clears itself before it repeats enough times, the pending code disappears on its own with no lasting record and the light never comes on.
Stored codes: the fault has been confirmed
A stored code, sometimes called a confirmed or active code, means the fault has repeated across enough drive cycles under the required test conditions that the module considers it real. This is the point where the check engine light turns on in most cases, and the stored code stays in memory along with its freeze frame data until it is either cleared with a scan tool, cleared by a battery disconnect, or in some cases automatically cleared after a defined number of consecutive trips pass without the fault recurring.
Permanent codes: the category most people misunderstand
A permanent code is a distinct category introduced specifically to prevent drivers from clearing a code right before an emissions test to fool the readiness monitors. Once a fault has been confirmed and set a permanent code, that code cannot be erased by a scan tool's clear function, nor by disconnecting the battery. It only clears once the vehicle completes enough successful drive cycles for the related monitor to pass on its own, confirming the actual repair worked rather than just erasing the record of the problem.
This is the mechanism behind a common frustration: a driver fixes a problem, clears the code, and the check engine light stays off, but the vehicle still fails an emissions test because a permanent code from that same fault is still present and has not yet had the chance to clear itself through normal driving.
Why this distinction changes how you should react to a scan result
Seeing a pending code calls for watching and rechecking rather than immediate repair panic, since the fault has not yet been confirmed and may resolve on its own. Seeing a stored code calls for actual diagnosis, since the module has confirmed the fault is real and repeatable. Seeing a permanent code after a repair calls for patience rather than repeated clearing attempts, since no amount of clearing will remove it before the monitor itself passes.
Confusing these three categories is a common source of wasted diagnostic time, such as replacing a part based on a pending code that would have cleared itself, or repeatedly clearing a permanent code expecting it to finally stick.
How to actually check which status a code is in
Most scan tools that read generic OBD2 data present these as separate menu items or separate labeled sections on the same screen, commonly titled something like pending codes, stored codes or confirmed codes, and permanent codes. A very basic code reader may only expose stored codes, in which case a pending or permanent code will not be visible even though it exists in the module's memory. Confirming which category a fault falls into before deciding on a next step avoids most of the confusion this distinction causes.
| Status | Turns on the light | Can be cleared with a scan tool | How it actually clears |
|---|---|---|---|
| Pending | No | Yes | Clears if the fault does not repeat, or is cleared manually |
| Stored (confirmed) | Yes, in most cases | Yes | Cleared manually, or automatically after enough passing trips |
| Permanent | Already reflected in the stored code | No | Only clears once the related monitor completes and passes |
Equipment mentioned here
- AUTOPHIX
AUTOPHIX OM126P OBD2 Scanner, Check Engine Light Code Reader for OBD2 Cars
$49.99 Check pricePrices change often
Common questions
Why does my scanner show a pending code but the check engine light is off?
This is expected behavior. A pending code has been detected once but has not yet repeated across enough drive cycles to be confirmed, so the light stays off until, and unless, the module confirms the fault as a stored code.
Can I clear a permanent code by disconnecting the battery?
No. Permanent codes were specifically designed to survive both a scan tool clear command and a battery disconnect. They exist to prevent exactly that workaround before an emissions test. The only way to clear one is for the related monitor to run and pass during normal driving.
I fixed the problem and the check engine light is off, so why did my car fail the emissions test?
A permanent code from the original fault may still be present even though the visible light is off. Since a permanent code will not clear until its monitor completes a passing run, the vehicle needs additional normal driving after the repair before the permanent code clears and the test can pass.
Do pending codes show up on every scan tool?
Most scan tools that read generic OBD2 data will show pending codes in a separate menu or screen from stored codes, but very basic code readers sometimes only display stored codes. Check your specific tool's documentation for how it separates these statuses.
How long does it take for a permanent code to clear?
It depends entirely on how quickly the vehicle can complete the specific drive cycle conditions required for that monitor to run and pass, which varies by manufacturer, monitor type and driving pattern. There is no fixed universal timeframe.
Does a stored code always mean the fault is currently happening?
Not necessarily. A stored code means the fault was confirmed at some point and has not yet cleared through the automatic pass criteria some manufacturers use, which can require a defined number of consecutive trips without the fault recurring. The fault may or may not still be actively present.
