UDS Diagnostic Tool

DTC Decoder

Turn the raw bytes of a DTC record into a readable code, failure type, and a bit-by-bit explanation of the DTC status byte.

Domain
Vehicle Diagnostics
Technology
DTC
Execution
Local deterministic lookup

Interactive utility

Decode a DTC and its status byte

Paste the three DTC bytes from a ReadDTCInformation (0x19) response, optionally followed by the status byte, or enter a display code such as P0301-00. The DTC is split using the SAE J2012-DA style layout: system letter, code digits, and failure type byte. The status byte is decoded against the eight ISO 14229-1 status bits, with a plain-language summary and checks for bit combinations that normally exclude each other. Failure type names cover a curated subset; OEM-specific meanings are never guessed.

DTC record

Three hex bytes (03 01 00), four bytes including status (03 01 00 2F), or a display code with failure type (P0301-00). The status byte is optional and can be decoded on its own.

Ready

Enter a DTC, a status byte, or both

The decoder splits the three DTC bytes into system, code, and failure type, and explains every status bit.

Examples

Decodes the SAE J2012-DA style 3-byte layout and the ISO 14229-1 status byte. Failure type names are a curated subset; OEM-specific meanings are not guessed.

Three-step lookup

How to use the decoder

  1. 01

    Enter the DTC bytes

    Enter three hex bytes such as 03 01 00, four bytes with the status byte appended, or a display code with its failure type such as P0301-00.

  2. 02

    Add the status byte

    Enter the status byte separately if it is not already the fourth byte. A status byte can also be decoded on its own without a DTC.

  3. 03

    Read the breakdown

    Review the system, code group, failure type, the overall fault state, and each status bit before planning the next diagnostic step.

Examples

Common lookup patterns

03 01 00 2F

Active, confirmed misfire

P0301-00 with status 0x2F: testFailed, testFailedThisOperationCycle, pending, confirmed, and failed since last clear are set, so the fault is currently failing and confirmed.

C1 00 87 · 08

Stored network fault

U0100-87 (missing message) with only confirmedDTC set: the fault was confirmed earlier but is not failing in the most recent test.

0x50

Status byte only

testNotCompletedSinceLastClear and testNotCompletedThisOperationCycle are set: the monitor has not run since the DTC memory was cleared, so the fault state is not established.

Protocol context

Technical notes

FAQ

DTC and status byte questions

What is the difference between pendingDTC and confirmedDTC?
pendingDTC means the test failed in the current or previous operation cycle. confirmedDTC means the fault met the ECU's confirmation criteria and is stored in non-volatile memory until it ages out or is cleared.
Why does a cleared DTC come back immediately?
If testFailed is set again right after a clear, the monitor is still detecting the fault. If only testNotCompleted bits are set, the monitor simply has not run yet. The DTC keeps returning troubleshooting guide covers the investigation.
Is the failure type byte the same across all manufacturers?
The SAE J2012-DA failure type categories are widely used, but manufacturers can define their own values, especially in the 0xF0–0xFF range. Unlisted values are reported by category only.
Is a DTC the same as a UDS NRC?
No. A DTC describes a fault condition stored by the ECU. An NRC explains why a diagnostic request was rejected. Use the UDS NRC Decoder for negative responses.

Diagnostic support

Need help with a DTC that will not stay cleared?

If a DTC keeps returning, sets without an obvious cause, or behaves differently across ECUs, I can help analyze the monitor conditions, status transitions, and supporting traces.