Do OBD2 Codes Have a History? Stored vs Permanent

Quick Answer

Yes, in a limited sense. A vehicle can keep a record of a fault after the check engine light goes out, and a scanner may label that record as stored or history. That is not a lifetime log: ordinary codes can be cleared and age out, while only permanent emissions codes survive a scanner clear or battery disconnect until the vehicle verifies a repair.

Drivers usually mean one of three things: can I see a fault that is no longer active, will it still be there after clearing, or can someone look back weeks later? The answer depends on which kind of history you mean, because the same word is used for a scanner label, a stage in a code’s life, and a separate permanent record.

What “History” Actually Means on a Scan

First, “history” can simply be a display label. Some scanners and manufacturer systems divide results into current or active codes and history codes. A current code reflects a fault the system still considers present or confirmed. A history code reflects a fault that failed at least once since the last clear but is not currently confirmed.

Second, “history” can describe what happens after a fault stops. A confirmed code may stop commanding the check engine light when the fault is not detected again over several drive cycles, yet the code can remain stored for a while. In that state, the light is off, but the past event has not yet been forgotten.

Third, “history” can mean your scanner or app’s saved scans, rather than the car’s memory. That list can survive a vehicle clear, but deleting it does not change the car.

Check the label, not just the code number. The same code can mean active now, pending, stored after the light went out, or permanent and awaiting verified repair.

How a Code Moves From Pending to History

Process flowchart showing how a pending fault code becomes confirmed.

Most emissions-related faults do not jump straight to a confirmed code and a light. The sequence below avoids a warning for a one-off glitch, while still catching a repeated problem.

Stage What it means Light usually
Pending A fault was detected once, but not yet confirmed. Off
Confirmed or stored The fault was detected again under the required conditions. On, or was on
History or stored after the light goes out The fault is no longer detected, but the past code has not aged out yet. Off
Permanent An emissions-related confirmed code kept in protected memory until the vehicle verifies a repair. Off after a clear, but the record remains

A pending fault code is therefore an early warning, not a verdict. If the fault does not recur, the pending code can disappear on its own. If it recurs in the next relevant drive cycle, it can become confirmed, and the system can then turn on the malfunction indicator lamp, commonly called the check engine light.

That explains a light off today with a code still stored: the fault may have been intermittent, or a repair may have fixed it before the record aged out. A stored code proves something failed, not that it is failing now.

History, Stored, and Permanent Are Not the Same Thing

Stored is the broadest term. It usually means a confirmed code held in memory. Some tools use “stored” for a code that is still active, and others use it for a code left over from an earlier event. That is why the status next to the code, and whether the light is on, matters more than the word alone.

History usually means past rather than current: an intermittent fault, or one from before the most recent clear. Manufacturer-enhanced systems can show more module history than generic OBD2, but the label still does not mean “forever.”

Permanent has a narrower, technical meaning for emissions-related codes. A permanent OBD2 code is a confirmed emissions code stored in non-volatile memory, so it survives a scanner clear and a battery disconnect. It is read through diagnostic Mode $0A, rather than through the usual stored-code request, Mode $03, under the federal onboard diagnostics requirements. Only the vehicle’s own system can erase it, after the related monitor runs and passes.

Permanent codes were phased in for 2010 model-year US vehicles, with full implementation by 2012. An older vehicle may lack that system, while a newer one can show a clean stored-code list and still carry a permanent code an inspection system can see.

Key Insight

A history code says “this failed before.” A permanent code says “this confirmed emissions fault has not yet been verified as fixed.” Treating those two records as the same thing is the most common source of confusion before an inspection.

What Survives Clearing, and What Does Not

Clearing codes with a scanner sends a clear command, often described as Mode $04. For ordinary pending and confirmed codes, that command normally erases the stored codes, turns off the light, erases the associated freeze frame snapshot, and resets readiness monitors to “not ready.” Freeze frame is the snapshot of conditions such as speed, coolant temperature, load, and fuel trim at the moment the code set, so losing it can make an intermittent fault much harder to diagnose.

Clearing does not erase everything. A permanent emissions code remains in protected memory, monitors become “not ready” rather than “passed,” and that alone can tell an inspector a recent clear happened. A scanner app that saved an earlier scan also keeps its own copy unless you delete it.

Battery disconnect works similarly for ordinary codes, but does not remove a permanent code and can reset learned values, so a scanner clear is generally cleaner after a repair. If the fault remains, a code can come back after clearing once its monitor runs and fails again.

The California Air Resources Board describes the same rule: permanent codes cannot be reset by battery disconnect or a scan device, and clear only after the repair is fixed and the monitor passes. That stops a quick clear hiding an unrepaired fault before a test.

How Long Does Code History Stay?

There is no single lifetime for every code, because retention depends on the code type, the manufacturer, and whether the fault recurs. A pending code is the shortest-lived: if the fault does not recur, it can be dropped after the next relevant drive cycle.

For a confirmed code whose fault stops, a widely described pattern is that the light can go out after several fault-free drive cycles, while the code can remain stored for at least 40 warm-up cycles. A warm-up cycle requires defined warming, so this is not 40 short trips, and it is a common pattern, not a guarantee for every make. Misfire and fuel-system faults can follow different rules.

Permanent codes do not age out with time alone. They remain until the related monitor passes, under manufacturer and regulatory trip conditions. If the repair was incomplete, they can persist indefinitely, even with the light off.

How to Check Code History on Your Scanner

Person operating an OBD2 scan tool to check vehicle code history.

Not every basic reader shows history in the same place, so check the menus before assuming “no codes” means “no history.” A useful sequence is:

  1. Record every code, its status, and any freeze frame data. Do not clear anything yet.
  2. Look for separate menus or tabs labelled stored, pending, permanent, history, or Mode $0A, rather than reading only the first code list.
  3. Note whether the light is on, and whether monitors show “ready” or “not ready.”
  4. Compare the code with recent symptoms and repairs. An old code after a known repair differs from a new one with no recent work.
  5. Only then decide whether to clear, repair, or monitor. Clearing first destroys the freeze frame and the stored record you may need.

If your tool shows only “stored” and “pending,” history may be inside the stored list, or the tool may not support Mode $0A at all. For a pre-purchase or pre-inspection check, a permanent-code and readiness check is more useful than a quick “no stored codes” result.

Warning

Do not clear codes before you have saved the code numbers, status, and freeze frame. Once cleared, ordinary stored codes and their freeze frame are gone from the vehicle, and an intermittent fault may take days to set again.

What History Cannot Tell You

Generic OBD2 usually gives no reliable date and time for a fault, no full repair history, and no proof of who cleared codes. Freeze frame shows conditions at failure, but it is a snapshot, not a continuous log. Not every code has freeze frame data in the same way, and one generic frame can be replaced by a later fault.

History also does not prove cause. A stored oxygen-sensor code can reflect the sensor, wiring, an exhaust leak, or upstream fueling. The code identifies a failed test, not a guaranteed failed part, so treat it as a lead for inspection, not a diagnosis alone.

Dealer-level tools can sometimes see more enhanced and module-specific history, but that varies by make and tool, and does not mean a dealer can always recover an ordinary code you erased. Once you clear ordinary stored codes, assume that vehicle-side record is gone, even if “not ready” monitors remain.

When the light is off but a code remains, read the status and check readiness before clearing, as explained in our guide to why the check engine light can be off while a code is stored. A code after a completed repair often needs monitoring; one with no repair behind it deserves investigation.

Related Product

OBD2 Scanner With Stored, Pending, and Permanent Code Reading

A scanner that separates stored, pending, and permanent codes, and shows readiness, makes it much easier to tell a past fault from a current one before an inspection.

Check on Amazon

As an Amazon Associate, we earn from qualifying purchases.

Frequently Asked Questions

Do OBD2 codes stay in history after you clear them?

Ordinary stored and pending codes normally do not. A scanner clear erases them, along with their freeze frame. Permanent emissions codes are the exception: they stay until the vehicle runs the related monitor and passes it.

Can a scanner show codes from months ago?

Sometimes, but not reliably. A stored code can remain for many warm-up cycles, and an app may keep saved scans longer, but generic OBD2 is not a lifetime log.

Does a history code mean the car still has a problem?

Not necessarily. A history code means a fault failed at least once since the last clear. It may be intermittent, already repaired, or caused by a temporary condition. Check whether it is pending, confirmed, or permanent, and whether the fault recurs.

Can a dealer see codes I already cleared?

A dealer tool may see more module data and “not ready” monitors, but it cannot reliably restore an erased ordinary code. Permanent codes remain visible through Mode $0A until verified.

Why does my scanner show a code when the check engine light is off?

The fault may be pending and unconfirmed, stored after the light went out, or permanent with the light off after a clear. The status label and readiness result explain which case applies, and they point to different next steps.

Does OBD2 record when a code was set?

Normally, no. Freeze frame can show conditions at failure, but it is not a timestamped log, and manufacturer systems vary.

Conclusion

OBD2 codes do have a history, but it is short and status-based, not a complete lifetime record. Pending codes warn early, confirmed codes record a repeated fault, history codes show a past event that has not aged out, and permanent codes protect an emissions repair until the vehicle proves it worked. Read the status, save freeze frame before you clear, and check permanent codes and readiness before an inspection.