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
- P054C Code: Cold Start Exhaust Camshaft Timing Over-Advanced, Bank 2, and the Two Fixes Audi Documented
P054C is a cold-start phaser code on the far bank of a V6 or V8. The module asks the exhaust cam to retard while the engine is cold to warm the catalyst, and the cam stays advanced. Sometimes the phaser really cannot move because oil has not reached it. Sometimes the module simply expected too much, and the fix was a calibration.
- P0533 Code: A/C Refrigerant Pressure Sensor Circuit High, the Sensor on the Line and the Harness at the Vacuum Pump Pulley
P0533 is a three-wire sensor reading open. The A/C pressure sensor on the high-side line tells the computer when to run the compressor and the fans; a signal pinned high means the computer cannot see pressure and usually shuts the compressor down. On GM's 5.3 and 6.2 trucks the reason was a pulley eating the harness.
- P0093 Code: Fuel System Leak Detected, Large Leak, What a Diesel Computer Calls a Leak, and the Duramax Injector Return Test
P0093 says leak, and on a diesel there is often no fuel on the ground. The computer compares the fuel it commanded with the pressure it lost and concludes fuel is going somewhere it did not send it. On the engines that set this code most, that somewhere is the injector return line.
- B0001 Code: Driver Frontal Stage 1 Deployment Control, the Airbag Loop Behind the Wheel and Why It Is Almost Always the Clockspring
B0001 is the airbag module talking about one wire loop: the circuit that fires the first stage of the driver's airbag. The module measures that loop's resistance constantly, and the loop runs through the clockspring behind the wheel. A clockspring that has fatigued, or a connector that has corroded, is what this code reports nearly every time.
- B0125 Code: A Body Code the Standard Leaves Reserved, and How to Find What It Means on Your Vehicle
B0125 is a number without a fixed meaning. The SAE table that gives most codes their definition leaves this one reserved, and a scan tool that shows a definition for it is guessing from one manufacturer's list. That is not a reason to ignore it. It is a reason to read it again with the right tool.
- P0002 Code: Fuel Volume Regulator Control Circuit Performance, the Metering Valve That Responds Late, and the Alfa Romeo Giulia Flash
P0002 sits between the open and short codes for the same solenoid. The circuit is intact; the valve did not do what the computer asked, or did it late. That points at the valve sticking, at fuel that is starving it, or at a calibration that expected a faster response than the hardware gives.
- P0175 Code: System Too Rich, Bank 2, and the Three Ford and GM Bulletins That Say Why
P0175 is a fuel trim number that ran out of room in the negative direction, on one bank only. The computer kept shortening injector pulses on bank 2 and the oxygen sensor still said rich. One bank is the clue: whatever is wrong is on that side, or is being reported wrongly by that side's sensor.
- P0192 Code: Fuel Rail Pressure Sensor Circuit Low, the 0.2 V Floor, and the Mazda Case Where the Pump Was the Cause
P0192 is a sensor floor code with one trap. A signal near zero volts is what a shorted wire, a lost reference or a failed sensor produces, and on most engines that is the diagnosis. But a rail that genuinely has no pressure reads near the floor too, and Mazda found a pump behind this code on its Skyactiv engines.
- P0505 Code: Idle Control System Malfunction, the General Idle Code and the Three Manufacturer Cases Behind It
P0505 is the idle code the computer sets when it knows idle is wrong but not which way, or when the idle actuator itself is misbehaving. Its more specific siblings, P0506 and P0507, get most of the attention. P0505 gets the cases where a valve sticks, a membrane fails, or the timing is a tooth off.
- P052B Code: Cold Start Intake Camshaft Timing Over-Retarded, Bank 1, and Why Oil Pressure Sets a Timing Code
P052B is a cold-start timing code. The module asks the intake phaser for a specific position while the engine is cold, to speed up catalyst warm-up, and the phaser lags behind. Phasers run on oil pressure, and on a cold engine oil pressure arrives late when the oil is wrong, low, or the pickup is restricted.
- U0420 Code: Invalid Data From the Power Steering Control Module, and the GM Case Where the Instruction Is "No Repair"
U0420 is a message that arrived but did not make sense. The steering module was on the bus and talking; the brake module or a driver-assist module rejected what it said. Sometimes that is a wiring or voltage problem. On some GM cars it is simply what happens during a remote start, and GM says to leave it alone.
- P0087 Code: Fuel Rail Pressure Too Low, and the Three Places the Pressure Went
P0087 is a measurement, not a circuit fault. The rail pressure sensor said pressure was too low and the computer believed it. Where the pressure went is one of three places: it never arrived from the tank, the high-pressure pump could not raise it, or the fuel got hot enough to boil in the rail.