VEHICLE CONDITION · DIAGNOSTICS

OBD2 codes: the lamp tells you the severity, the code tells you the subject

Every list of OBD2 codes on the internet answers the same question — what does P0420 mean? — and none of them answer the question you actually have, which is whether you need to pull over now, book a shop this week, or note it and carry on. The regulations do answer it. They put the severity signal in the lamp rather than the code, they make one specific lamp behavior a legal emergency signal, and they state plainly that a car with stored codes can still pass an emissions test. This page is about that machinery, and about which parts of the code chart everybody prints without being able to cite.

CheckerVIN research deskUpdated August 2026Sources cited throughout

Check the record before you trust the dashboard

Decode the factory build, specifications and open safety recalls for that exact car.

100% freeNo sign-upResults in secondsView sample report

Decoded from official manufacturer and NHTSA records

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

A close view of a car tachometer with a small amber tire pressure warning lamp lit beside the needle.
The lit lamp here is the tire pressure warning, not the check engine light — which is the first thing worth getting right. A cluster tells you two things at once: which lamp is on, and how it is on. The regulation defines the second, and almost nobody reads it.

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.

  1. 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.
  2. 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.
  3. 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.
  4. 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 rangeWhat the regulation says about it
P0xxxSAE-defined — the same meaning on every manufacturer, named explicitly in 1968.2(f)(4.4.3)
P2xxxAlso SAE-defined and named in the same sentence — routinely and wrongly described as manufacturer-specific
P1xxxManufacturer-defined, permitted only with regulator approval and only per the J2012 specification
P3xxxMixed — 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 stateWhat it means, and what it does not
OffNo confirmed emissions malfunction is currently commanding the lamp on. Codes may still be stored, and a fault may still be pending
SteadyA 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 secondMisfire 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.

  1. 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.
  2. 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.
  3. 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.
  4. 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.
  5. 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.

A bar chart comparing the number of vehicles that passed an emissions test first time with the number that failed, in one month.
One month, one state, 948,066 initial tests. The failure column is drawn to the same scale as the pass column, which is the point: an illuminated lamp is a minority event even among cars turning up for a test.

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

100% freeNo sign-upResults in seconds

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

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