What is the difference between P, B, C, and U codes?
The four code families
OBD-II codes start with a letter that indicates the vehicle system. P = Powertrain, covering engine, transmission, and emissions controls. B = Body, covering airbags, seat belts, power windows, and climate control. C = Chassis, covering brakes, suspension, steering, and ABS. U = Network, covering communication buses like CAN, and module-to-module data transfer.
The letter is followed by four digits. The first digit (0 or 1) tells if it's a generic code (same across all makes) or manufacturer-specific. The second digit narrows the subsystem. For example, P0301 is a generic powertrain misfire on cylinder 1, while B1234 might be a body code specific to one brand.
Why the distinction matters
Knowing the letter helps you know where to look. A P code means you'll be checking engine sensors, fuel delivery, or transmission solenoids. A B code might send you to the airbag system or a window motor. A C code points to brakes or suspension. A U code means modules aren't talking—often due to a wiring issue or a failed control module.
Not all scanners can read B, C, and U codes. Many inexpensive code readers only access powertrain codes. To read body, chassis, and network codes, you often need a more advanced scan tool or a professional-grade one. Some cars also require specific software to access certain modules.
- P = Powertrain (engine, transmission, emissions)
- B = Body (airbags, windows, lights, climate)
- C = Chassis (brakes, suspension, steering)
- U = Network (communication between modules)
- Generic codes start with 0; manufacturer-specific start with 1.
- Cheap scanners may only read P codes; advanced tools read all.
Common mistakes
- Thinking all codes are engine-related—B, C, and U codes cover other systems.
- Assuming a U code means a dead battery; it often indicates a wiring or module fault.
- Using a basic scanner that can't read B, C, or U codes and missing the real issue.
