How to read car fault codes

Check how to read car fault codes as a beginner and find out why is your check engine or other dashboard light illuminated. There is no need for an expensive tool, you can read your car’s faults with a $20 tool and information from this article.

Even if you don’t plan to fix your vehicle yourself, you still want to know what is going on before leaving the car at the shop. I don’t want to turn this article into thoughts about mechanics’ integrity, so let’s dive into reading fault codes.

Let’s start with how you read the codes…

1. Connect the scanner to OBD port

Your car’s OBD port is in most cases either under the dashboard on the driver’s side or in your interior fuse box.

2. Turn on the ignition

Ignition ON is recommended to read vehicle DTCs (diagnostic trouble codes), but it also works when the engine is running. Just don’t have both engine and ignition off, because the scanner won’t be able to communicate with your car.

3. Read codes

Reading codes is a basic feature of all scanners and you will be able to see either the “read codes” or “scan” option right away. Code readers will show you codes instantly, but Bluetooth adapters can take a few minutes to scan the vehicle.

Understand 5-digit Codes

You can get basic information from each code without knowing its meaning. Just follow the digits in the code, which can tell you valuable information.

The digits in the car scanner codes are not random! Every letter or digit in the code can give you extra information about your car’s malfunction.

First DigitSecond DigitThird DigitLast Digits
P = Powertrain0 = Generic Code0, 1 = Fuel / Air MixtureDescription
B = Body1 = Manufacturer Specific2 = Fuel (Injector circuit)Description
C = Chassis2 = Manufacturer Specific3 = IgnitionDescription
U = Network 4 = Exhaust / EmissionsDescription
5 = Vehicle speed control / IdleDescription
6 = Electronic control unitDescription
7 = TransmissionDescription
8 = TransmissionDescription
9 = TransmissionDescription
A, B, C = HybridDescription

7-digits codes

Sometimes your code reader will show extra two zeros at the end. So the code P0420 is the same as code P042000. However, the last 2 digits in the 7-digit code can further specify the problem.

  • 00 = Not specified
  • 04 = Open
  • 11 = Short to ground
  • 12 = Short to B+
  • 13 = Open
  • 14 = Short to the ground or open
  • 15 = Short to B+
  • 16 = Circuit voltage below the threshold
  • 17 = Circuit voltage above the threshold
  • 18 = Current below the threshold
  • 31 = No signal
  • 44 = Data memory failure
  • 47 = Controller failure
  • 49 = Internal electronic failure
  • 51 = Not programmed
  • 62 = Signal comparison failure
  • 64 = Plausibility failure
  • 72 = Actuator stuck closed
  • 74 = Actuator slipping
  • 77 = Commanded position not achievable
  • 7E = Actuator stuck on
  • 1A = Circuit resistance below the threshold
  • 1C = Voltage out of range
  • 1D = Current out of range
  • 23 = Signal stuck low
  • 24 = Signal stuck high
  • 27 = Single rate of change above a threshold
  • 29 = Performance signal invalid
  • 2A = Stuck in range
  • 2B = Signal cross-coupled
  • 2F = Signal erratic
  • 7F = Actuator stuck off
  • 85 = Signal above the allowable range
  • 87 = Missing communication message
  • 93 = Performance no operation
  • 96 = Component internal failure
  • 9C = Low insufficient flow
  • 9E = Stuck on

Types of OBD2 codes

  • “confirmed code” is set when a fault is detected and considered serious enough to be continuously active. This means the problem has been detected in a specific monitoring routine and has persisted throughout the current operation cycle.

  • “pending code” is a bit different. It’s only triggered if the fault is detected a certain number of times in a certain number of drive cycles. The number of reoccurrences and drive cycles can vary depending on the fault.

  • “permanent code” is a confirmed code that can’t be cleared using a scan tool. The vehicle will only clear these codes when it detects that the fault causing the code is no longer happening.

  • “current code” indicates that a diagnostic trouble code (DTC) test has failed during the current operation cycle. This code may also be pending or confirmed, but it doesn’t have to be.

  • Finally, a “historical code” is set when a DTC is not pending, confirmed, or current, but the associated test has failed at least once since codes were last cleared.

Now that you know how to read codes, you should also learn about engine live data