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
- P0098 Code: Intake Air Temperature Sensor 2 Circuit High, the Second IAT Sensor and the Harness That Carries It
P0098 names a sensor most owners did not know their engine had. Sensor 1 is in the airbox; sensor 2 sits after the turbocharger or in the manifold to tell the computer how hot the air really is when it reaches the cylinders. A high reading on a thermistor means open, and open means a wire or a connector before it means a sensor.
- P0553 Code: Power Steering Pressure Sensor Circuit High, the Open-Circuit Twin of P0552
P0553 is P0552 with the fault in the other direction. Where the low code points at a grounded wire or a switch stuck closed, the high code points at a circuit that is open: a connector that fell off, a wire broken by a belt, or a switch whose contacts never close. The sensor is last on the list because it can be measured.
- P0731 Code: Gear 1 Incorrect Ratio, What the Transmission Measured, and GM's Misaligned Coupler Case
P0731 is arithmetic. The transmission divides input speed by output speed and expects the first-gear ratio. When the answer is wrong for long enough, it stores this code and blames first gear. A slipping clutch, low fluid, a stuck valve or a wrong speed reading all produce the same wrong number.
- P0578 Code: Cruise Control Multi-Function Input A Stuck, the Held Button and the Grounded Wire
P0578 is the code for a button that never lets go, real or apparent. The cruise switch feeds one wire with a different resistance per button, and when that wire sits at a valid button value for longer than any person presses, the module declares the input stuck. Half the time the button really is stuck.
- U0301 Code: Software Incompatibility With ECM or PCM, Set by the Module That Was Not Updated
U0301 is a version mismatch. Two modules that must agree on their software builds no longer do, and it almost always happens because one of them was updated or replaced and the other was left alone. Honda's own bulletins say so in a single sentence.
- U0214 Code: Lost Communication With Remote Function Actuation, the Keyless Module That Went Quiet
U0214 names a module most owners do not know exists: the receiver that turns key fob presses into door locks, remote start and, on many cars, the permission to start the engine. When it goes quiet the symptoms are a fob that does nothing and sometimes a car that will not start, and the causes are mostly power and connectors.
- P0727 Code: Engine Speed Input Circuit No Signal, the Transmission's View of the Crankshaft Sensor
P0727 is set by the transmission, not the engine. The transmission controller needs engine rpm to time its shifts, and it gets that number either from the crankshaft sensor directly or from the engine computer over the network. When the number stops arriving, the transmission protects itself with a fixed gear.
- P0513 Code: Incorrect Immobilizer Key, the No-Start After a Flash, a Jump Start or a New Battery
P0513 is the code behind a great many no-starts that follow a repair. The key is fine and so is the engine. What is missing is the agreement between the engine computer, the body computer and the key receiver about a security code, and that agreement is lost by a reflash, a low-voltage event or a well-meant immobilizer repair.
- P0524 Code: Engine Oil Pressure Too Low, and the Mazda Skyactiv Case Where a Chip of Debris Held the Relief Valve Open
P0524 is the code that means it: oil pressure, as measured, was too low. Unlike the sensor circuit codes beside it, this one reports a value, not a wiring fault. Mazda found one cause nobody would guess from the number: a fleck of debris propping the oil pump's relief valve open, dropping pressure just enough to retard the exhaust cam.
- P0571 Code: Cruise Control Brake Switch A Circuit, the Brake Light Switch That Kills Cruise, and GM's Circuit 6311 Tip
P0571 is not a cruise control code so much as a brake switch code that the cruise system happens to report. Cruise cancels the instant it believes the brake is pressed, so a switch that says "pressed" while the pedal is up makes cruise refuse to engage, and the scan tool shows exactly that.
- P0566 Code: Cruise Control Off Signal, the Button Nobody Presses and the Circuit That Fails Anyway
P0566 is the twin of P0565 for the other half of the on/off circuit. Most steering wheel cruise switches share one signal wire for every button, so a fault on the off signal is a fault on the whole ladder, and the usual culprits are a sticking button, a frayed clockspring and a chafed column harness.
- P0051 Code: Oxygen Sensor Heater Control Circuit Low, Bank 2 Sensor 1, and the Fuse That Gets Missed
P0051 is about the heater inside the oxygen sensor, not the sensor's reading. The heater is a resistor the computer switches to ground, and when the circuit reads low the heater is open, its fuse is gone, or its wire is grounded. The sensor's oxygen reading may be perfect and still set this code.