Warning lights

Not all DTCs are equal: 4 severity levels (low, medium, high, critical) and how to prioritize

What DTC severity level means, how to tell "light from dust on the MAF" from "stop the engine now", which codes can wait, which are critical right now.

AI-generated 3 min read

When scanning a car and seeing 5-10 active DTCs, the question is: “where do I start?”. Not all matter equally. In Car Diagnostics we use a 4-level severity system (low, medium, high, critical) — same as the SAE standard. Below: how to gauge each code’s importance and how to prioritize.

4 severity levels

🟢 Low — informational

  • Examples: P0442 (small EVAP leak), P0128 (thermostat), C2318 (TPMS battery low), P0700 (general trans info)
  • Consequences: none immediate. Sometimes extra fuel consumption.
  • Action: plan for next service (3-6 months)
  • Check Engine light: solid (not flashing)

🟡 Medium — warning

  • Examples: P0300-P0308 (misfires), P0171/P0174 (lean mix), C0035-C0050 (WSS), P0420 (catalyst)
  • Consequences: fuel consumption up 5-15%, component wear, reduced power
  • Action: diagnosis in 2-4 weeks
  • Light: solid

🟠 High — urgent

  • Examples: P2002 (DPF full), P0011/P0016 (stretched chain), P0087 (fuel pressure critically low), P0234 (overboost)
  • Consequences: rapid degradation, potential failure in coming weeks
  • Action: diagnosis this week, plan parts
  • Light: often flashing or solid + system-specific indicator

🔴 Critical — “stop and call a tow”

  • Examples: P0524 (oil pressure critical), P0217 (engine overheat), P0AA6 (HV isolation fault on EV), P2BAD (SCR bypass)
  • Consequences: engine destruction in minutes, fire risk (EV) or emissions poisoning
  • Action: stop IMMEDIATELY, shut off, tow
  • Light: red (not yellow!) + audible warning

Source of truth for severity

Formally the SAE J1930/J2012 standard doesn’t define numeric severity levels, but:

  • ISO 15031-6 extension adds guidance
  • Manufacturers implement their own manufacturer-specific severity via Mode 22
  • Our DTC catalog implements a 4-level scale as a constrained database type (low | medium | high | critical)

Example: 5 codes in a session

You scan a car, see:

  1. P0128 (thermostat)
  2. P0442 (small EVAP leak)
  3. P0300 (misfires)
  4. P0524 (oil pressure low)
  5. C2318 (TPMS battery)

Priority by severity:

  1. 🔴 P0524 CRITICAL — First, stop and check oil. Everything else later.
  2. 🟡 P0300 MEDIUM — Next, misfires kill catalysts.
  3. 🟢 P0128 LOW — Thermostat is a planned replacement.
  4. 🟢 P0442 LOW — Gas cap, not critical.
  5. 🟢 C2318 LOW — TPMS battery, replace at next seasonal tire swap.

How AI sorts severity

Our DTC Analyzer makes several extra checks:

  1. Correlation — if P0128 (thermostat) + P0171 (lean mix) together — often one problem (cold engine → LTFT drift), not two separate codes
  2. Freeze Frame context — same P0300, but in Freeze Frame RPM 4500, LTFT -12% → more medium than low (real under-load)
  3. History — if the same code appeared 5 times this month → severity bumps up
  4. Make/model — for BMW N47 “P0016” = high (typical chain problem, engine-rebuild risk); for Toyota — medium

Practical tip

At every scan:

  1. Look at red first (critical) — this is “stop and tow”
  2. Then orange (high) — this week
  3. Yellow (medium) — 2-4 weeks planning
  4. Green (low) — next service

Don’t “clear all codes to try” — it destroys Readiness Monitor and Freeze Frame history.

What a shop does when you arrive with “5 codes”

Good mechanic:

  1. Reads all codes + Freeze Frame + Live parameters
  2. Sorts by severity (as above)
  3. Goes critical → low
  4. Clears only codes actually fixed (confirmed via drive cycle and re-scan)

Bad mechanic:

  1. Clears all codes at once “so light doesn’t flash”
  2. In 3 days the light is on again (permanent DTC or code reappears)

So the post-repair verification checklist is mandatory.

Try it on the free tierpair an ELM327 adapter, Car Diagnostics shows severity per code with human interpretation.