A permanent code is an emissions fault that stays in the car’s memory after you clear codes, and it only disappears after the related self-test runs and passes.
You plug in a scanner, see a fault, hit “clear,” and the screen looks clean. Then the same code shows up again as “permanent,” or a smog check flags it even when the check engine light is off. That’s the moment most drivers feel stuck.
Here’s the deal: a permanent code isn’t the car being petty. It’s the car keeping a record that an emissions-related fault happened, so the system can confirm the fix with its own self-tests before it forgets. Once you get how that confirmation works, the steps turn practical and predictable.
What Is A Permanent Code On A Car In Plain Terms
A permanent code (often shown as “Permanent DTC” or “PDTC”) is a special type of emissions diagnostic trouble code that does not disappear just because you cleared codes with a scan tool or pulled the battery cable. The car hangs onto it until it completes the right self-check and sees the fault is gone.
That’s why people get surprised. A regular stored code can vanish right away when you clear it. A permanent code is different: the car itself must “vote it off the island” after it re-runs the monitor tied to that fault.
This design is tied to emissions inspections. A quick clear right before testing can hide stored codes and reset readiness checks. A permanent code helps inspection systems spot that a real fault happened and still needs verification.
Permanent Code On A Car With OBD-II Rules And Timing
Permanent codes come from the OBD-II emissions system, the same system behind the check engine light. Your scan tool reads different “code buckets,” and permanent codes live in their own bucket. That separation lets inspection gear tell the difference between “cleared a minute ago” and “fixed and verified.”
The timing matters. A permanent code can stay listed even when:
- The check engine light is off
- No stored codes remain
- The car drives fine
That can feel backwards, but it’s consistent: the car is waiting for proof from the right monitor run, not a button press.
Why Permanent Codes Exist And What They Protect Against
Permanent codes solve a simple problem. Clearing codes can erase evidence of a fault right before an emissions test. That can also reset readiness checks, which are the car’s “I ran my self-tests” flags. Permanent codes add a layer that can’t be wiped by a quick clear.
States and inspection programs lean on this. California’s Smog Check program, for one, includes pass/fail criteria tied to permanent diagnostic trouble codes on OBD inspections. You can see how their inspection reference separates permanent code standards from readiness and MIL checks on the Bureau of Automotive Repair OBD test reference.
That’s also why permanent codes can show up after repair. The system is not calling you a liar. It’s just waiting to re-check the exact condition that triggered the fault.
How A Permanent Code Gets Set In The First Place
Most of the time, a permanent code is created when an emissions fault becomes confirmed. Think misfire, catalyst efficiency, EVAP leak checks, oxygen sensor response, EGR flow, fuel trim limits, and similar emissions-related tests.
The car runs these tests under specific conditions. Some run each trip. Others run only when the fuel level, temperature, speed, and soak time land in a tight window. If the test fails and meets the criteria for confirmation, the system can store a code and also add it to the permanent list.
This is also why you’ll see different code “statuses” in scanners. If you only read one screen, you miss the story.
How To Read Code Status Without Getting Misled
Before you buy parts or chase a ghost, separate three things: what’s failing right now, what failed earlier, and what still needs verification. This is where a basic scan becomes a smart scan.
Use your tool to check:
- Stored codes (confirmed faults)
- Pending codes (faults that may confirm soon)
- Permanent codes (faults that remain until the monitor passes)
- Readiness monitors (which self-tests have completed since the last clear)
A clean approach: treat stored and pending codes as “current leads,” and treat permanent codes as “history that needs a passing retest.”
| Status Or Data Type | Where You’ll See It | What It Tells You |
|---|---|---|
| Pending code | Scanner “Pending” list | A fault was detected, not yet confirmed across required checks |
| Stored code | Scanner “Stored” list | A confirmed fault; the car may turn on the check engine light |
| Permanent code | Scanner “Permanent” list | An emissions fault recorded for inspection purposes until the related monitor passes |
| MIL status | Live data or dashboard light | Whether the system is commanding the check engine light on |
| Freeze frame | Freeze frame menu | A snapshot of conditions when a code was confirmed (RPM, load, temps) |
| Readiness monitors | Readiness menu | Which self-tests have completed since codes were cleared |
| Drive cycle history | Varies by tool and vehicle | Clues about whether the car has met the conditions needed to run a monitor |
| Mode-specific permanent list | Permanent DTC menu | A separate query used to pull permanent emissions codes for inspection equipment |
What A Permanent Code Means For Your Next Step
A permanent code is a signal to slow down and verify the basics. It does not automatically mean the fault is active today. It means the car hasn’t finished proving the fix yet.
Start with two quick checks:
- If there are stored or pending codes, treat the problem as current and fix that first.
- If only permanent codes remain, shift your focus to readiness and monitor completion.
This split saves time. It stops you from replacing parts when the car is already fixed and only needs the right conditions to re-test itself.
Common Reasons A Permanent Code Won’t Clear Yet
Most “stuck permanent code” situations boil down to one of these:
- The monitor hasn’t run. The car hasn’t met the conditions needed for that self-test.
- The monitor ran and failed again. That often creates a pending or stored code too, but some drivers miss it.
- The repair fixed the symptom, not the cause. A small exhaust leak, wiring issue, or vacuum leak can keep a test failing.
- Power was reset repeatedly. Frequent clears or battery disconnects can keep monitors from completing.
- There’s a related issue blocking the test. A thermostat stuck open can block catalyst checks by keeping temps low.
If you’re chasing an EVAP permanent code, fuel level matters. If you’re chasing catalyst efficiency, steady-speed cruise and full warm-up matter. If you’re chasing O2 response, closed-loop operation and stable conditions matter.
How Permanent Codes Clear In Real Driving
The system clears permanent codes after it runs the specific monitor tied to the fault and the results pass. That’s not a guess. EPA guidance describing inspection best practices points out that permanent DTCs can’t be erased until the responsible monitors run and confirm the faults are corrected. The same document notes permanent DTCs are retrieved through a separate scan command, which is why inspection gear can distinguish them from standard stored codes. See the EPA’s discussion in Best Practices for Addressing OBD Readiness in I/M Testing.
What does that mean in your driveway? It means you don’t “delete” a permanent code. You set up the car so it can run the monitor cleanly.
Start With A Clean Baseline Scan
Scan the car after a full warm-up. Write down:
- Stored codes, pending codes, permanent codes
- Readiness monitor status
- Freeze frame data for any stored code
If you’ve already cleared codes, don’t panic. Just treat your scan as the new baseline and focus on what the car says today.
Fix Current Faults Before You Chase Verification
If a stored or pending code is present, handle that first. Permanent codes won’t clear while the same fault keeps failing the test. Also, many cars won’t complete certain monitors if another issue is active.
Drive In A Way That Lets The Monitor Run
There isn’t one magic route that fits every model. Still, most monitors like steady conditions more than stop-and-go chaos. A practical pattern that helps many cars complete monitors looks like this:
- Cold start and idle long enough for stable idle
- Mixed city driving with smooth throttle
- Steady cruise at road speed for a stretch
- Coasting decel when safe, since some tests run during decel fuel cut
Then scan again. If readiness flags are still incomplete, the monitor may need a different set of conditions, more run time, or a longer soak between trips.
What To Do Before A Smog Or Emissions Test
If your area uses an OBD plug-in inspection, permanent codes can matter even when the check engine light is off. Plan for verification time.
Use this approach:
- Stop clearing codes right before the test.
- Confirm there are no stored codes and no pending codes.
- Check readiness monitors and confirm enough of them show complete for your local standards.
- Check the permanent code list and see what’s still logged.
If a permanent code is present and the car is not ready, you’re often better off driving a bit more and rechecking than gambling on a test fee.
| Step | What To Do | What You Should See |
|---|---|---|
| 1 | Scan for stored, pending, and permanent codes | Clear separation between active faults and verification history |
| 2 | If stored or pending codes exist, repair the active issue | Stored and pending lists return empty after repair and normal driving |
| 3 | Check readiness monitors after a full warm-up trip | More monitors show complete over time |
| 4 | Drive steady routes that allow the needed monitor to run | No new pending code for the same system |
| 5 | Re-scan and confirm the permanent list shrinks after monitor success | Permanent entry disappears once the car verifies the fix |
| 6 | If the permanent code stays and readiness is complete, look for a repeat fail | A pending or stored code may return, pointing to the real cause |
| 7 | If you’re stuck, review freeze frame and live data for that system | A pattern emerges: temps, fuel trims, sensor response, misfire counts |
Mistakes That Keep People Stuck With A Permanent Code
Most wasted weekends fall into a few traps.
Clearing Codes Over And Over
Clearing resets data the car uses to complete self-tests. It can also restart the clock on readiness. If you keep clearing, you keep the car from building proof.
Replacing Parts Without A Test Plan
A permanent code does not point to a single part. It points to a system test that failed at some point. If you replace a sensor without checking wiring, exhaust leaks, fuel trims, and power/ground, you can land right back where you started.
Ignoring Simple Conditions
EVAP tests often need a certain fuel level. Catalyst tests often need full warm-up and stable cruise. Misfire monitoring can be sensitive to worn plugs, coils, or vacuum leaks that only act up under load. If you drive only short trips, some monitors may never get their chance.
When A Permanent Code Signals A Deeper Issue
If a permanent code stays for a long stretch and readiness is completing, treat that as a clue. The monitor may be running and failing, but the car hasn’t set the stored code again yet, or your scanner is missing a pending detail.
In that situation, scan after the same style of drive each time, then compare results. If you see a pending code return right after a steady cruise, that narrows the hunt. If fuel trims drift hard positive, look for unmetered air or low fuel delivery. If O2 sensors switch slowly, check for exhaust leaks, sensor aging, or wiring issues. If catalyst efficiency keeps popping, don’t skip basics like misfires and oil consumption, since they can poison a catalyst.
If you’re not getting traction, a shop-grade scan tool with live graphs can save hours. It’s not about fancier words on a screen. It’s about seeing the test conditions and sensor behavior that line up with the monitor that must pass.
A Simple Checklist Before You Spend Money
Run this quick list in order:
- Scan all code lists: stored, pending, permanent.
- If any stored or pending code exists, fix that issue first.
- Check readiness monitors after a full warm-up drive.
- Stop clearing codes while you’re trying to complete monitors.
- Drive steady routes that allow the needed monitor to run.
- Re-scan and track what changes after each drive.
Once the car completes the monitor and it passes, the permanent code drops off on its own. That’s the finish line.
References & Sources
- California Bureau of Automotive Repair (BAR).“On-Board Diagnostic Test Reference.”Explains OBD inspection pass/fail standards, including permanent diagnostic trouble code standards.
- United States Environmental Protection Agency (EPA).“Best Practices for Addressing OBD Readiness in I/M Testing of Diesel Vehicles.”Describes how permanent DTCs are retrieved separately and cleared only after monitors run and confirm the fault is corrected.
