The short answer
- How do I know if a code is serious?
- Look at the lamp, not the code. Steady means a confirmed malfunction that needs diagnosis. Blinking means a misfire severe enough that the regulation requires the car to warn you differently, because the catalytic converter is being damaged while you drive.
- Will a stored code fail an emissions test?
- Not by itself. Under 40 CFR 85.2222(d)(2) a vehicle passes the OBD inspection if the lamp is not commanded on, even if codes are present.
- Where does the code numbering come from?
- SAE J2012, which is a document you have to buy. The California regulation the federal rule incorporates names the standard but does not reproduce its tables, which is why the letter and subsystem charts everywhere online have no free authoritative source.
31 years
Of mandated OBD2
Gasoline cars, model year 1996 onward
1 per second
The blink rate, by regulation
Not a convention — a written requirement
91.6%
Passed first time
California Smog Check, April 2026
$776.16
Average repair cost
When a test did lead to repair work

What a diagnostic trouble code actually is
A diagnostic trouble code is not a diagnosis. It is a record that a specific monitoring routine inside the engine computer ran, compared something it measured against a threshold it was given, and found the measurement outside that threshold. The code names the test that failed. It does not name the part that caused it, and it very often does not name the part you will end up replacing.
That distinction is the source of nearly every wasted repair dollar in this subject. A code reading catalyst system efficiency below threshold is a statement about the relationship between two oxygen sensor signals, one before the converter and one after. It is consistent with a failed converter. It is equally consistent with a failing sensor, an exhaust leak upstream of the sensor, a misfire that has been dumping unburned fuel into the converter for months, or a fuel trim problem that never set a code of its own. The computer cannot distinguish among those, because it is not measuring the converter. It is measuring two voltages and applying a rule.
The federal requirement describes the system in exactly those terms. Under 40 CFR 86.1806-17, OBD systems must generally detect malfunctions in the emission control system, store trouble codes corresponding to detected malfunctions, and alert operators appropriately. Detect, store, alert. Three verbs, none of which is diagnose.
Who actually writes the rule, which is not who you think
Here is a structural fact about American vehicle diagnostics that almost no consumer page mentions: the federal OBD regulation contains very little operative detail, because it hands the job to California.
Section 86.1806-17(a) of Title 40 states that vehicles must comply with the 2013 OBD requirements adopted for California ... Title 13, § 1968.2 of the California Code of Regulations, incorporated by reference. The successor section for the 2027 model year and later does the same thing with a later version of the same California rule. The substantive engineering requirements — what has to be monitored, how sensitively, how the lamp behaves, which fault code sets — live in a state regulation that the Environmental Protection Agency adopts wholesale.
This matters practically for two reasons. First, when you want to know what your car is legally required to do, the document to read is a California Air Resources Board regulation, not an EPA one, and it is freely published. Second, it explains why OBD2 behaves identically on a car sold in Vermont and a car sold in Arizona: there is only one technical rule, and every state inherits it through the federal adoption.
The model-year boundary is federal, though, and it is stated bluntly in the inspection rules. 40 CFR 85.2207(a) provides that a vehicle shall fail the OBD test if it is a 1996 or newer vehicle and the vehicle connector is missing. CARB states the coverage for consumers in plain terms: all 1996 and newer model year gasoline and alternate fuel passenger cars and trucks are required to have OBD II systems, and all 1997 and newer diesel passenger cars and trucks are also required to. That is 31 model years — long enough that the question of whether a used car has the system has stopped being interesting.
The five characters, and what can be said about each
Every OBD2 code is one letter followed by four digits. The convention is universal and the reading order is fixed.
- 1The letter names the system familyP, B, C or U. P codes are the powertrain family and are the only ones an emissions inspection is concerned with. The other three cover systems outside the powertrain. The specific mapping of each letter is defined in the SAE standard rather than in any freely published regulation, which is covered below.
- 2The second character separates standardized from manufacturer-specificA zero marks a code whose meaning is fixed by the standard, so that it means the same thing on every make. A one marks a code the manufacturer defined for itself. Two and three also appear, and the common shorthand that only zero is standardized is wrong.
- 3The third character narrows the subsystemWithin powertrain codes, this digit groups the fault by area — fuel and air metering, ignition, emission controls, speed and idle control, computer outputs, transmission. The specific mapping comes from SAE J2012 and is not reproduced in any freely published regulatory text.
- 4The last two characters identify the specific faultThese are the sequence within the subsystem, and they are what distinguishes a misfire on cylinder one from a misfire on cylinder four. This is where the code stops being a category and starts being a specific test result.
Read that way, a code is a path from general to specific, and the useful habit is to read it from the left rather than to look up all five characters at once. The letter tells you whether an emissions inspector will care. The second character tells you whether a generic scan tool can even interpret it. Only then does the specific fault matter.
Generic does not mean only P0, and this is not a quibble
Search for an explanation of the second character and you will be told, consistently, that P0 codes are generic and P1 codes are manufacturer-specific. That is half right, and the missing half changes what a scan tool can do for you.
The California regulation that federal law incorporates says it precisely. Section 1968.2(f)(4.4.3) requires that manufacturers shall use appropriate SAE-defined fault codes of SAE J2012 (e.g., P0xxx, P2xxx) whenever possible, and permits manufacturer-defined codes, with regulator approval, in accordance with SAE J2012 specifications (e.g., P1xxx).
The regulation names two standardized ranges, not one. P2xxx codes are just as standardized as P0xxx codes, and there is a further standardized block in the P34xx to P39xx range. The practical consequence is that a twenty-dollar code reader can tell you what a P2xxx code means on any car, and a great many people conclude the opposite because the shorthand they were taught says only P0 is generic.
| Code range | What the regulation says about it |
|---|---|
| P0xxx | SAE-defined — the same meaning on every manufacturer, named explicitly in 1968.2(f)(4.4.3) |
| P2xxx | Also SAE-defined and named in the same sentence — routinely and wrongly described as manufacturer-specific |
| P1xxx | Manufacturer-defined, permitted only with regulator approval and only per the J2012 specification |
| P3xxx | Mixed — part of the range is standardized, part is manufacturer-defined |
Why does the second character need approval at all? Because a manufacturer-specific code is invisible to the rest of the world. It cannot be looked up in a public table, an independent shop may need a factory-level tool to interpret it, and the owner is that much more dependent on the dealer network. The regulation permits it, but grudgingly, and only when the standardized catalog has nothing that fits.
The part of the code chart nobody can actually source
Every OBD2 page prints the same two tables: the letters, and the third-character subsystem groups. This page is not going to, and the reason is worth explaining because it says something about the whole genre.
The numbering scheme lives in SAE J2012. The California regulation identifies it at section 1968.2(d)(1.6) as Diagnostic Trouble Code Definitions – Equivalent to ISO/DIS 15031-6, incorporates it by reference, and requires manufacturers to follow it. What the regulation does not do is reproduce it. J2012 is sold by SAE International. ISO 15031-6 is sold by ISO. Neither document is published free of charge, and no government text we could find sets out the letter meanings or the subsystem digit map.
So the tables you see everywhere are, at best, accurate transcriptions of a paid standard that the transcriber may or may not have read, propagated across thousands of pages by copying. They are very probably right. We cannot verify them against a source you can open, and this site does not print things it cannot source. What is verifiable — that P codes are the powertrain family, that P0xxx and P2xxx are standardized, that the standard is J2012 — is stated above with the regulation that says it.
The lamp, not the code, is where severity is encoded
The single most useful thing to understand about this system is that the regulation does not grade codes by severity at all. There is no urgent list and no routine list. Severity is communicated through the malfunction indicator lamp, and it has exactly three states.
| Lamp state | What it means, and what it does not |
|---|---|
| Off | No confirmed emissions malfunction is currently commanding the lamp on. Codes may still be stored, and a fault may still be pending |
| Steady | A malfunction has been confirmed and the lamp has been commanded on. It needs diagnosis. The regulation attaches no time pressure to this state |
| Blinking, once per second | Misfire is occurring at a level associated with catalyst damage. This is a separate, specifically written requirement, not a convention |
Notice what is absent from that table: any mention of which code is stored. A P0301 and a P0442 can both sit behind a steady lamp, and the lamp is telling you the same thing about both — confirmed, needs attention, not an emergency. Meanwhile a misfire code behind a blinking lamp and the identical misfire code behind a steady lamp mean genuinely different things about what is happening to your exhaust system right now.
This is why “which OBD2 codes are serious” is the wrong question, and why every page that answers it with a ranked list is inventing the ranking. The system already contains a severity signal. It is on your dashboard.
The one lamp behavior that is genuinely urgent
A blinking check engine light is the only part of this subject with a written, regulated, time-sensitive meaning, and it is worth quoting the requirement rather than paraphrasing it.
Section 1968.2(e)(3.4.1)(A)(ii) of the California regulation — which is federal law by incorporation — provides that immediately after a pending fault code is stored, the MIL shall blink once per second at all times while misfire is occurring during the driving cycle. Subparagraph (B)(iii) adds that upon storage of a confirmed fault code the lamp shall blink as long as misfire is occurring, and shall remain continuously illuminated if the misfiring ceases.
Two things follow from that wording, and both are useful in the moment. The blink is happening while the misfire is happening — it is a live signal, not a stored state. And if the blinking stops and the lamp goes steady, that does not mean the problem is fixed; the regulation says the lamp stays lit precisely because the fault is still recorded.
The regulation also tells you why the blink exists. Subparagraph (D) exempts vehicles that provide fuel shutoff and default fuel control to prevent over fueling during catalyst damage misfire conditions — the lamp need not blink on those cars, because they protect the converter themselves. The blink, in other words, is a warning that raw fuel is reaching the catalytic converter. CARB puts it to consumers directly: a blinking warning light indicates a malfunction that could be damaging your catalytic converter.
Pending and confirmed, and why the lamp waits
The regulation’s own vocabulary distinguishes a pending fault code from a confirmed one, and the distinction explains a behavior that frustrates a lot of owners: the light that comes on days after the symptom, or never comes on despite an obvious problem.
A pending code is stored when a monitor fails once. It is a suspicion. For most monitored faults the computer will not command the lamp on until the same test fails again on a subsequent driving cycle, which is what turns a pending code into a confirmed one. That two-strike design exists to keep the lamp from illuminating for a single anomalous reading — a tank of bad fuel, a freak sensor glitch, a cold start in unusual conditions.
Misfire is the exception that proves the design, and you can see it in the text quoted above: the blink requirement attaches immediately after a pending fault code is stored, without waiting for confirmation. When the failure mode can destroy a component in minutes, the regulation does not wait for a second opinion.
The practical consequence for anyone reading codes is that a scan tool showing pending codes and no lamp is showing you something real but unconfirmed. It is early information, not a false alarm, and it is often the most valuable thing on the screen — particularly on a car you are considering buying.
A stored code is not a failed emissions test
This is the single most commonly misunderstood point in the subject, and the federal rule resolves it in one sentence. 40 CFR 85.2222(d)(2) provides that if the MIL bit is not commanded to be illuminated, the vehicle shall pass the OBD inspection, even if DTCs are present.
Read that again, because it inverts the common assumption. The inspection is not a search of the code memory. It asks the computer one question — are you commanding the lamp on? — and a car carrying historical codes behind a dark lamp passes. Codes accumulate. They persist. They are not, by themselves, a test result.
There is a separate part of the same inspection rule dealing with monitors that have not finished running, which is a different problem with a different consequence and is covered in detail on our page about a check engine light that was cleared. The two get conflated constantly. Keep them apart: the lamp determines pass or fail, and monitor status determines whether the car can be tested at all.
Triaging a code you have just read, without a severity table
Put the pieces together and a workable order of operations falls out. It does not require knowing which codes are “serious,” because that question has no sourced answer.
- 1Look at the lamp before the scan toolBlinking changes everything and is the only state with a regulated urgency. Steady means confirmed and needs diagnosis. Off, with codes stored, means history rather than a current commanded fault.
- 2Separate pending from confirmedA decent scan tool reports both. Pending codes are single failures awaiting a second occurrence. They tell you what is about to become a problem, which is more useful than it sounds.
- 3Read the letter, then the second characterA P code is powertrain and is what an emissions inspection looks at. A second character of 0 or 2 means a generic tool can interpret it; a 1 means you may need manufacturer-level information to get anywhere.
- 4Treat the code as the failed test, not the failed partAsk what measurement the monitor was making and what else could move that measurement. This is the step that prevents replacing a catalytic converter to fix an exhaust leak.
- 5Check whether the fault is one that damages other thingsMisfire and overheating are in that category. Most emissions faults are not, which is why the regulation only made the lamp blink for one of them.
Notice that nothing in that sequence requires a table ranking codes by severity, and that is deliberate. Such a table would be an opinion. The lamp behavior is a regulation.
What a real month of emissions testing actually looks like
Because no agency publishes code frequency, the honest way to get a sense of scale is to look at a state that publishes its inspection results. California’s Bureau of Automotive Repair does, monthly.
In April 2026, the program recorded 948,066 initial tests and 79,649 initial failures — a failure rate of 8.40%. Counting every test performed, including retests, the figures were 1,026,118 tests and 91,385 failures, or 8.91%. The average repair cost recorded in that month was $776.16.

Two things are worth taking from those numbers. The first is proportion: 91.6% of vehicles presented for testing passed on the first attempt. Whatever is stored in the code memory of the American vehicle fleet, it is mostly not commanding a lamp on. The second is the cost figure, which is a useful counterweight to the instinct to ignore a steady light indefinitely: when a car does fail, the repair is not typically trivial.
CARB frames the reason the whole system exists in similarly blunt terms, estimating that approximately half of the total emissions from late-model vehicles are excess emissions resulting from emission-related malfunctions. A small share of malfunctioning cars accounts for a large share of the pollution, which is exactly the situation a diagnostic system is built to find.
Reading a code on a car you do not own yet
For a buyer, the code memory is one of very few places where a used car reports on itself rather than on what its seller says about it. A twenty-dollar reader plugged in during a test drive will tell you more than any conversation.
- Whether the lamp is commanded on right now, which is the only thing an emissions test asks
- Which confirmed codes are stored, and therefore which subsystems have already failed a monitor twice
- Which pending codes are present — the faults that have failed once and are on their way to becoming lamps
- Whether the code set is consistent with the car's age, mileage and the seller's account of its history
- Whether the codes cluster in one subsystem, which usually points at one cause rather than several
None of that tells you what the car has been through. Codes describe the present state of a computer that can be reset; a history record describes events that were reported to third parties and cannot be. The two are complementary, and a buyer wants both. Our pages on the pre-purchase inspection and what “damage reported” means cover the second half of that picture.
One connection is worth making explicitly. A code memory that is completely empty on an older, higher-mileage car is not the clean result it appears to be. Codes clear when the battery is disconnected or when someone clears them deliberately, and either way the monitors have to run again before the car is fully testable. That is the subject of our page on cleared lights, and it is the one scenario where finding nothing should raise rather than lower your eyebrow.
Check any VIN free
Decoded from official manufacturer and NHTSA records
What this page cannot tell you
Three honest gaps, stated rather than papered over.
We cannot tell you which code is most common. No public agency publishes diagnostic trouble code frequency. Every ranked list of common codes traces to a commercial repair-data company working from its own customer base, which is a sample of cars that came in for repair rather than of cars on the road. Those figures may be perfectly sound. They are not public data and this page will not present them as though they were.
We cannot print the letter and subsystem tables with a citation. They live in SAE J2012 and ISO 15031-6, which are sold rather than published. We have said what the regulation itself says about the standard, named the standard, and stopped there.
We cannot tell you what your specific code is caused by. Neither can the code. It names a test that failed. What failed the test is a diagnostic question that requires the vehicle, and any page claiming otherwise is guessing on your behalf.
Where this information comes from
- 40 CFR 86.1806-17 — onboard diagnostics, model year 2017 and laterRequires OBD systems to detect, store and alert, and incorporates California's Title 13 § 1968.2 by reference
- 40 CFR 85.2207 — OBD test proceduresStates the 1996 model year boundary and the connector requirement
- 40 CFR 85.2222 — inspection and maintenance program requirementsParagraph (d)(2): a vehicle passes if the lamp is not commanded on, even with codes present
- Title 13 CCR § 1968.2 — California OBD II regulationThe blink-once-per-second misfire requirement, the SAE J2012 code ranges, and the standard's identification
- California Bureau of Automotive Repair — Smog Check executive summaryTest and failure counts and average repair cost for April 2026
- EPA — improving inspection and maintenance program performanceEPA's own guidance on how OBD-based inspection programs are meant to operate
Keep reading
Frequently asked questions
Can I keep driving with the check engine light on?
It depends entirely on whether the lamp is steady or blinking. A steady lamp means a malfunction was confirmed and needs diagnosis, but the regulation attaches no urgency to it. A blinking lamp is a specific, regulated signal for misfire severe enough to damage the catalytic converter. CARB's consumer guidance is that continuing to drive could lead to damage to other components.
Does a stored code mean the car will fail an emissions test?
No, and the federal rule says so directly. 40 CFR 85.2222(d)(2) provides that if the malfunction indicator lamp is not commanded on, the vehicle passes the OBD inspection even if diagnostic trouble codes are present. The lamp is the pass-fail signal, not the code list.
What does the second character in a code mean?
A zero generally marks a code defined by the SAE standard rather than by the manufacturer, and a one generally marks a manufacturer-defined code. The common claim that all generic codes begin P0 is wrong: the California regulation names both P0xxx and P2xxx as SAE-defined, and reserves P1xxx for manufacturer-defined codes used with regulator approval.
Which OBD2 code is the most common?
No government agency publishes diagnostic trouble code frequency, so any ranking you find comes from a commercial repair-data company rather than a public dataset. Those rankings may be reasonable, but they are not verifiable, and this page will not present them as though they were.
Which cars have OBD2?
Gasoline and alternate-fuel passenger cars and trucks from the 1996 model year onward, and diesel passenger cars and trucks from 1997 onward. That is 31 model years of coverage, which means essentially every used car on a dealer lot today has the system.
Is the check engine light the same as a service reminder?
No. The malfunction indicator lamp is an emissions-system warning defined by regulation. A maintenance or service light is set by a mileage or time counter the manufacturer chose, carries no regulatory meaning, and does not store a diagnostic trouble code.
The code is the present tense. The record is the past
Decode any VIN free for the build, the open recalls and where to check the damage history. No account, no card.
Run a free VIN check