DTC Examples and Terminology
This page describes the types of diagnostic trouble codes commonly found in modern vehicles, and the terms that surround them
The terminology around fault codes is surprisingly inconsistent. People often use several terms interchangeably even though they technically refer to different things.
Here’s a breakdown.
DTC (Diagnostic Trouble Code)
A Diagnostic Trouble Code (DTC) is the official name for a fault code stored by a vehicle’s ECU.
Whenever the ECU detects that a sensor reading or system behaviour is outside its
expected limits, it records a DTC. The code acts as a starting point for diagnosis—it tells
you what the ECU has detected, not necessarily what component has failed.
Examples include:
- P0300 – Random/Multiple Cylinder Misfire
- P0420 – Catalyst System Efficiency Below Threshold
- U0100 – Lost Communication With ECM/PCM
Modern vehicles may store hundreds or even thousands of different DTCs across many
control modules.
P-Codes
A P-code is simply one category of DTC.
The first letter identifies which system reported the fault.
Prefix Meaning
- P Powertrain (engine, transmission, emissions)
- B Body (airbags, climate control, doors, lighting)
- C Chassis (ABS, steering, suspension)
- U Network/Communication faults
So every P-code is a DTC, but not every DTC is a P-code.
For example:
- P0101 – Mass Air Flow Sensor
- B1000 – Airbag system
- C0035 – Wheel speed sensor
- U0121 – Lost communication with ABS module
OBD-II Codes
OBD-II (On-Board Diagnostics II) is the standard used on virtually all modern petrol and
diesel vehicles.
The OBD-II standard defines many common DTCs so that a generic scan tool can read
them regardless of manufacturer.
These are often called:
- Generic codes
- OBD codes
Standard DTCs
For example:
- P0171 – System Too Lean
- P0301 – Cylinder 1 Misfire
Most manufacturers also define thousands of additional manufacturer-specific codes.
Generic vs Manufacturer-Specific Codes
The second digit identifies whether the code is standard or manufacturer-specific.
Example:
- P0xxx
Generic OBD-II code
- P1xxx
Usually manufacturer-specific
For example:
- P0300 – Generic
- P1335 – Manufacturer-specific (meaning varies between brands)
MIL (Malfunction Indicator Lamp)
The MIL is not a fault code.
It is simply the warning light on the dashboard—commonly called the Check Engine Light.
The ECU decides whether a stored DTC should illuminate the MIL.
Some faults:
- store a DTC only
- store a pending DTC
- illuminate the MIL immediately
- require several drive cycles before illuminating the MIL
Therefore:
- You can have DTCs with no warning light.
- You can clear the MIL while the underlying fault still exists.
- The MIL may return almost immediately if the ECU detects the fault again.
Pending DTCs
Some faults are only detected once and are not yet considered confirmed.
These are stored as Pending DTCs.
If the fault occurs again under the required conditions, it becomes a confirmed DTC and
may illuminate the MIL.
Confirmed DTCs
A confirmed DTC is one that has met the ECU’s criteria for recording a genuine fault.
Depending on the fault, this may:
- illuminate the MIL
- reduce engine power
- disable certain functions
- trigger limp-home mode
Permanent DTCs
Many newer vehicles also support Permanent DTCs.
These cannot simply be erased with a scan tool.
Instead, the ECU removes them only after it has verified through successful drive cycles that the fault has genuinely been repaired.
This prevents someone from clearing emissions-related faults immediately before an inspection.
Freeze Frame Data
When many DTCs are stored, the ECU also captures a snapshot of operating conditions, known as freeze frame data.
This might include:
- Engine speed
- Vehicle speed
- Coolant temperature
- Fuel trims
- Engine load
- Intake air temperature
- Battery voltage
This information helps technicians understand what the vehicle was doing when the fault
occurred.
Fault Codes vs DTCs
In everyday conversation, these terms are effectively interchangeable.
People may say:
- Fault code
- Error code
- Engine code
- Diagnostic code
- DTC
They all generally refer to the same stored diagnostic information.
ECU-Specific Fault Codes
Modern vehicles contain many ECUs besides the engine control unit, including:
- Engine ECU
- Transmission ECU
- ABS module
- Airbag module
- Body Control Module (BCM)
- Instrument cluster
- Electric power steering
- Infotainment system
Each module can store its own DTCs.
A basic OBD scanner may only read engine (powertrain) DTCs, while a manufacturer-level diagnostic tool can access codes from every module.
DTC Removal
This is where some confusion often arises.
There are three distinct actions:
1. Clearing DTCs – Erases the stored fault codes from the ECU’s memory. If the underlying problem still exists, the ECU will usually detect it again and recreate the DTC.
2. Resetting the MIL – Turns off the Check Engine Light. In practice this is usually done at the same time as clearing DTCs, but the warning light may return as soon as the ECU detects the fault again.
3. Removing a DTC from the ECU software – A software modification that alters the ECU’s calibration so it no longer monitors or reports a particular fault. This is commonly used after certain hardware changes, such as removing a DPF or EGR system, or where a sensor has been intentionally disabled. Unlike simply clearing a fault, the ECU will no longer generate that specific DTC because the underlying diagnostic routine has been modified.
Summary
DTC: Any Diagnostic Trouble Code stored by an ECU
Fault Code: Common name for a DTC
P-Code: A powertrain DTC (engine/transmission)
B-Code: Body systems DTC
C-Code: Chassis systems DTC
U-Code: Communication/network DTC
MIL: The dashboard Check Engine warning lamp, not the code itself
Pending DTC: Fault detected once, awaiting confirmation
Confirmed DTC: Fully recognised fault stored by the ECU
Permanent DTC: Emissions-related fault that remains until the ECU verifies the repair
Freeze Frame: Snapshot of engine conditions when a DTC was recorded
The key distinction is that a DTC is the diagnostic information stored by the ECU, while
the MIL is simply the dashboard warning lamp that may (or may not) be illuminated
as a result of certain DTCs.
Likewise, P-codes are just one subset of DTCs, covering the powertrain; body, chassis, and network modules use their own prefixes but follow the same overall DTC system.