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
- P0068 Code: MAP, MAF and Throttle Position Correlation, the Unmetered Air Code, and Audi's Loose Oil Cap
P0068 is a cross-check failing. The throttle position says one amount of air should be entering, the manifold pressure and the airflow sensor say another, and the difference is bigger than the calibration allows. Almost always the extra or missing air has a physical entry point, and sometimes that point is the oil filler cap.
- P0766 Code: Shift Solenoid D Performance or Stuck Off, and the Three Ford Bulletins Where the Solenoid Was Not the Problem
P0766 is a performance code with a solenoid's name on it. The controller commanded solenoid D and the gear it expected never arrived, so it blamed the solenoid. Ford's own bulletins trace the same code to a blocked orifice, debris in a one-way clutch, and adaptive memory that no longer fits the hardware.
- P0090 Code: Fuel Pressure Regulator 1 Control Circuit Open, the Solenoid on the High-Pressure Pump and How It Is Tested
P0090 names a solenoid most owners have never seen: the valve on the high-pressure fuel pump that decides how much fuel the pump sends to the rail. The code means the computer tried to drive that solenoid and no current flowed. A two-wire circuit, so a multimeter settles it.
- P0451 Code: Fuel Tank Pressure Sensor Range or Performance, and the Overfill Problem Behind Many of Them
P0451 sounds like a sensor code and often is not. The sensor reads tank pressure, and on several vehicles the thing that made it read wrong was liquid fuel or water where only vapor belonged. Three manufacturers' bulletins say to look at the lines and the canister before the sensor.
- P0003 Code: Fuel Volume Regulator Control Circuit Low, the Diesel Pump Solenoid and the Short-to-Ground Test
P0003 is one of the first codes in the whole list, and one of the least understood, because the part it names sits inside the high-pressure fuel pump of a diesel or a direct-injection engine. It is a two-wire solenoid. The code says its control line is stuck low, and that is a short, not a performance problem.
- P0550 Code: Power Steering Pressure Sensor Circuit, the General Fault Code and How to Narrow It
P0550 is the code a module sets when it knows the power steering pressure circuit is wrong but not how. That vagueness is the diagnosis: the same tests that would separate a low from a high from an intermittent fault are the ones that resolve P0550, and they take a voltmeter and ten minutes.
- P0506 Code: Idle Speed Lower Than Expected, the Dirty Throttle Body, the Load It Cannot Overcome, and the Jeep 2.0 L Software Case
P0506 is the computer reporting that it ran out of idle authority in the downward direction. It opened the throttle or the idle valve as far as its calibration allows and the engine still idled slow. Restricted air, a load the engine cannot carry, or a calibration that flags a normal idle cover almost every case.
- P0442 Code: EVAP Small Leak Detected, the Gas Cap Question, and the Vacuum-Versus-Pressure Trap
P0442 is a leak the size of a pinhole, found by a monitor that only runs under specific conditions. That combination makes it the most over-diagnosed code on the list: cleared by a gas cap it never needed, chased with a smoke machine that pressurizes a system the car tests under vacuum.
- P0304 Code: Cylinder 4 Misfire Detected, the Swap Test, and Which Vehicles Have a Bulletin for It
P0304 names a cylinder, not a part. The computer counts crankshaft speed dips and blames the cylinder that was firing. Spark, fuel, compression and a vacuum leak near that cylinder all produce the same code, and the fastest way to tell them apart is to move a part and see if the code follows it.
- P0184 Code: Fuel Temperature Sensor A Circuit Intermittent, What the Sensor Is For, and Why It Is Usually a Wire
Fuel temperature changes slowly, so a sensor signal that jumps ten degrees in a tenth of a second is not reporting fuel. It is reporting a wire. P0184 is the code for that jump, and on the engines that set it the harness has usually been rubbed, pinched or wetted somewhere between the sensor and the module.
- P0917 Code: Gear Shift Position Circuit High, the Open-Circuit Version of a Sensor Most Cars Do Not Have
P0917 is the mirror of P0916. Where the low code usually means a wire grounded against the gearbox, the high code usually means a wire that is open, a ground that has been lost, or a connector that has backed off. Either way the sensor is the last suspect, because it can be measured.
- P0507 Code: Idle Speed Higher Than Expected, the Vacuum Leak Test, and Two Manufacturer Cases That Were Not Leaks
P0507 is the computer admitting it lost control of idle. It closed the throttle or the idle valve as far as its calibration allows and the engine still ran fast. Air is getting in somewhere it does not measure, or the throttle's closed position has moved, or the calibration itself is wrong. Those three cover nearly every case.