Diagnostic Trouble Codes
Every code on this site is the SAE J2012 generic definition — the wording the standard itself uses, not a paraphrase. Where a code is defined by the manufacturer rather than by SAE, the page says so, because a definition found for the wrong marque is worse than no definition at all.
Where these definitions come from
Every generic code on this site carries the SAE J2012 definition, cross-checked against two independent public code tables before publication. Where those tables disagreed, the code was left out rather than guessed at.
That sounds like a small thing until you see what the widely-copied lists actually contain. The dataset that ranks first for "OBD trouble codes" on GitHub — and which has been forked into commercial products — has its descriptions shifted against their code numbers: it gives P0420 as a secondary air injection relay fault and P0300 as a cylinder 12 contribution fault. Both are wrong, and both would send someone to replace a part that is working.
How to read a code number
The first character gives the area: P powertrain, B body, C chassis, U network. The second says who defined it — 0 and 2 are SAE definitions, identical on every vehicle; 1 and 3 are the manufacturer's own, and the same number can mean unrelated things on two marques.
The third character narrows the system, and the last two identify the specific fault. So P0301 is a powertrain code, SAE-defined, in the ignition and misfire group, for cylinder 1.
91 articles
Every OBD-II Code Is Five Characters, and Each One Means SomethingP0301 is a powertrain code, defined by SAE, in the ignition group, for cylinder 1. All of that is readable from the number before you look anything up.
P0171 Means the Module Ran Out of Room to Add FuelP0171 is not a sensor complaining. It is the module reporting that it has added as much fuel as it is allowed to and the mixture is still lean.
P0300 Means the Engine Could Not Blame One CylinderP0301 names a cylinder and points at that cylinder. P0300 names none, and points at something all of them share.
P0420 Is Measured by Two Sensors, Not by the ConverterThe module never measures the converter. It compares two oxygen sensor traces, and five different faults can make that comparison fail.
A Pending Code Is a Warning You Get Before the Light Comes OnMost people only ever look at stored codes. The pending list is where a fault shows up first, and the permanent list is the one that fails an emissions test.
A U-Code Means One Module Stopped Hearing From AnotherU0100 does not mean the engine module has failed. It means something else on the network stopped receiving from it, and the wire between them is the more common culprit.
A Trouble Code Names a Circuit, Not a Broken PartP0135 says the oxygen sensor heater circuit is out of range. It does not say the oxygen sensor is bad, and the difference costs people money every day.