HomeResourcesBlogYour guide to diagnostic trouble codes (DTCs)
8 mins to read

Your guide to diagnostic trouble codes (DTCs)

By Alessandro Lori, PhD January 23, 2026

Few things can disrupt fleet operations faster than an unexpected check engine light.  

These urgent lights can force drivers off their routes, delay customer appointments and create ripple effects that slow your entire operation. But those alerts also reveal valuable information.  

These check engine light codes or diagnostic trouble codes (DTCs) are the way vehicles communicate engine issues. If a DTC pops up mid-job, that fleet driver will likely need to reroute, head back to the garage or reschedule on a customer. Productivity takes a hit, and you may require dealing with a roadside breakdown. All of this, of course, ends up costing your organization time and money. 

What should fleet managers know about diagnostic trouble codes, and how can you use them to get ahead of maintenance schedules with a proactive, not reactive, approach? Let’s go through the different types of DTCs and how you can utilize them to stay on top of maintenance, ultimately keeping your fleet in tip-top shape. 

What is a diagnostic trouble code?  

Modern vehicles are packed with sensors feeding data into the engine control unit (ECU) or powertrain control module (PCM). When something goes wrong with the vehicle’s mechanics, the ECU translates that issue into a standardized alphanumeric signal — diagnostic trouble code, or sometimes called a vehicle fault code

But DTCs don’t appear when something might go wrong, it means it already has. They only appear after sensor data exceeds a pre-defined, acceptable operational limit.  

When the threshold is met, your check engine light codes or other diagnostic warning lamp signals to the driver that something has failed. This means that by the time you’re seeing a DTC, it’s too late to prevent the issue. 

How to read diagnostic trouble codes  

Have you ever wondered what specific DTCs mean, or scanned a diagnostic trouble codes list? Most fleets see a mix of codes depending on the type of asset they are using. Light-duty vehicles use OBD-II codes, sometimes casually called OBD codes, which have prefixes you might recognize on your personal car such as  P, C, B and U. Heavy-duty equipment and trucks use J1939 codes (SPN/FMI). The formats differ slightly, but the purpose is the same. Both standards report that a failure has occurred. 

For passenger cars and light-duty trucks, diagnostic trouble codes are structured within a five-character system: 

  • The system identifier (P, C, B, U): This tells you which system within the vehicle (Powertrain, Chassis, Body or Network – the U) is experiencing the issue. 
  • The type identifier: Next comes the distinction between generic or manufacturer-specific issues. The second character (a 0 or 1) tells you whether the problem is standardized across all vehicles or unique to that vehicle’s design.  
  • The subsystem and fault index: The final three characters in the DTC narrow down the exact fault within a subsystem. For example, whether that’s a circuit malfunction, sensor failure or signal performance issue. 

These codes also have two states: pending or stored/hard. A pending code is the first hint that something is wrong. The ECU is seeing operational parameters repeatedly drifting outside the acceptable range, but not consistently enough to trigger the check engine light codes yet. A stored or hard code means a confirmed failure that fully illuminates the check engine light. At this point, the problem demands immediate repair to avoid further mechanical damage or a vehicle breakdown.

Diagnostic trouble codes list for fleets

While every fleet may see a wide range of DTCs, some appear more often than others. The following diagnostic trouble codes represent issues more likely to disrupt routes, reduce efficiency, trigger inspections or lead to costly repairs.

Engine performance/drivability:

  • P0171/P0174: System too lean
  • P0300-P0308: Misfire (random or cylinder-specific)
  • P0128: Coolant thermostat below regulating temperature
  • P0113: Intake air temperature sensor high input

Emissions and exhaust:

  • P0420/P0430: Catalyst system efficiency below threshold
  • P0130-P0167: Oxygen sensor circuit faults (various)
  • P0401/P0402: EGR flow issues

Fuel and air metering:

  • P0100-P0104: Mass air flow (MAF) sensor range/performance
  • P0191: Fuel rail pressure sensor performance

Electrical and charging systems:

  • P0562: System voltage low
  • P0606: ECM/PCM processor fault

Transmission and powertrain control:

  • P0700: Transmission control system malfunction
  • P0715: Input/turbine speed sensor circuit
  • P0720: Output speed sensor circuit
  • P0740: Torque converter clutch circuit
  • P0750-P0770: Shift solenoid malfunctions

EVAP system:

  • P0440/P0442/P0455: EVAP leak (system, small, or gross leak)

Brakes and automatic brake systems:

  • C0035/C0040/C0050: Wheel speed sensor malfunctions
  • C0265: EBCM relay circuit

Here are some common J1939 codes fleets with heavy-duty trucks may see:

  • SPN 94/FMI1,16: Fuel delivery pressure low (can cause power loss or stalling)
  • SPN 102/FMI2,18: Boost pressure sensor issues (turbo underboost)
  • SPN 168/FMI0,2: Battery voltage high/low
  • SPN 3055/FMI1: DPF differential pressure high (possible restriction or regen issue)
  • SPN 3364/FMI9: Aftertreatment DEF quality problem
  • SPN 3719/FMI0: SCR malfunction with derate warning
  • SPN 5246/FMI0,15: DEF inducement/derate active
  • SPN 2791/FMI11: EGR valve performance issue
  • SPN 639/FMI9: J1939 data link communication fault
  • SPN 111/FMI4: Coolant level low

The hidden costs of reactive fleet maintenance 

A check engine light isn’t just an inconvenience. It’s a signal that a problem has already crossed a failure threshold and is coming your way. DTCs act as forensic clues that point to the problem you are already financially and operationally committed to fixing. By the time that a diagnostic trouble code appears, engine performance, efficiency or component lifespan has already taken a hit. 

Because DTCs rely on thresholds, the underlying issue has typically been present for some time. A simple ignition issue (Code P0300) that causes intermittent misfires leads to unburned fuel damaging the catalytic converter (Code P0420). What could have been a low-cost repair can quickly escalate into a multi-thousand-dollar replacement, driving up your total cost of ownership. Heavy-duty vehicles face similar challenges: J1939 codes (SPN/FMI) are only triggered once a fault exists, not before. 

So how do fleets prevent these costly surprises?

By shifting from reactive to proactive, preventive vehicle maintenance. With connected fleet tools, you can stay ahead of wear and tear before it escalates into a diagnostic trouble code or even a breakdown.

Want more on fleet maintenance? Watch the video here for a walkthrough of automating vehicle maintenance scheduling.

Reduce diagnostic trouble code rates with proactive maintenance  

Proactive maintenance uses advanced vehicle data and automation to help fleets stay ahead of mechanical issues by ensuring vehicles are serviced at the right intervals. With telematics-driven maintenance workflows, fleets can: 

  • Track mileage and engine hours automatically
  • Receive service reminders based on real usage from miles and engine hours
  • Catch early signs of trouble through driver inspections
  • Prioritize vehicles that need shop time
  • Maintain accurate, digital maintenance records
  • Reduce dependency on reactive repairs triggered by diagnostic trouble codes

These simple, consistent processes keep small issues from escalating into big ones, reducing the time you spend looking up vehicle fault codes.

How fleet maintenance software helps reduce reliance on diagnostic trouble codes

DTCs will always have a place in fleet diagnostics, but they are, by design, reactive. They tell you when the failure has already occurred. The real opportunity for fleets lies in developing preventive maintenance workflows that reduce how often these diagnostic trouble codes appear. With proactive maintenance, you can:

  • Significantly reduce downtime from unexpected failures 
  • Lower maintenance costs by shifting from expensive reactive repairs to planned, proactive servicing 
  • Increase asset lifespan, delaying costly replacements, lowering total cost of ownership 
  • Decrease losses due to theft, misplacement or damage 
  • Improve vehicle utilization and resource allocation 
  • Streamline workflows and data-informed decision-making  
  • Make faster, more effective decisions when issues do arise 

It’s time to evolve beyond reactive DTC alerts and embrace the preventive, data-driven maintenance approach that gives your teams the power to intervene early, before costly failures. 

Ready to transform your maintenance from reactive guesswork to proactive precision? Walk through our connected fleet management platform to take control over your vehicle health.


Alessandro Lori, PhD

Alessandro Lori, PhD, has 10+ years of experience in Web Software Development and Research in the field of data science and machine learning.


Tags: Inspections, Safety, Vehicle Maintenance

Related blogs
How to calculate total cost of ownership (TCO) for your fleet Cloud based fleet management for safety and efficiency What is smart mobility?

Schedule a demo

Find out how our platform gives you the visibility you need to get more done.

You might also like

View all