— Developer Tools

Free J1939 PGN Decoder

Paste J1939 frames to see each parameter group, its SPN values with units, and any active fault codes.

— Samples
Frames 6Known PGNs 6Valid
Live

What is a J1939 PGN Decoder?

SAE J1939 is the CAN protocol spoken by trucks, buses, tractors, construction machines and generators. Every frame carries a parameter group (PGN), and every PGN packs suspect parameters (SPNs) such as engine speed and coolant temperature. This decoder reads those frames without a DBC.

It splits each 29-bit identifier into priority, PGN, source and destination, then decodes common J1939-71 parameter groups into SPN values with units. DM1 and DM2 fault messages become lamp states and SPN/FMI codes, and requests, address claims and transport protocol frames are explained too.

Key Features

Identifier Split

Priority, data page, PDU format and specific, PGN, source and destination address for every frame.

SPN Values With Units

Engine, temperature, pressure, speed, fuel and electrical parameter groups decoded per J1939-71.

Fault Codes Explained

DM1 and DM2 lamps plus each SPN, FMI meaning and occurrence count.

Network Management

Requests, address claims with the NAME fields, and BAM and RTS/CTS transport frames.

Logs Stay Private

Frames are decoded in your browser and never uploaded.

Perfect for everyone

  • Fleet technicians
  • Heavy-equipment and off-highway engineers
  • Telematics developers and anyone reading truck CAN logs

How to Use the J1939 PGN Decoder

Paste the frames and pick what to see.

1

Capture Traffic

Log the bus with candump -l, or copy frames from your logger or adapter software.

2

Paste or Open the Log

Each line holds one frame, in cansend, candump or spaced-byte form.

3

Read SPN Values

SPN values names each parameter group and lists its values, faults and requests.

4

Check the Identifiers

Identifier fields breaks every 29-bit ID into its fields, useful when building filters.

Worked Examples

J1939 Frames, Decoded

Each row is J1939 traffic as candump writes it, and each answer is this decoder’s output in the mode on the chip. Try reading the PGN from the identifier before you reveal it.

REF_001Engine speed from EEC1

“0CF00400#F07D7D2019000FFF”

REF_002Temperatures with a missing value

“18FEEE00#6E4B602DFFFF52FF”

REF_003Wheel-based vehicle speed

“18FEF100#FF0058FFFFFFFFFF”

REF_004Identifier fields, broadcast and addressed

“0CF00400#F07D7D2019000FFF 18EA00F9#E5FE00”

REF_005A DM1 fault with the amber lamp

“18FECA00#04FF6E00030BFFFF”

REF_006A DM1 with no active faults

“18FECA00#00FF00000000FFFF”

REF_007A service tool requesting engine hours

“18EA00F9#E5FE00”

REF_008An address claim

“18EEFF00#3412A00000000090”

REF_009A BAM transfer of a long DM1

“18ECFF00#2014000300CAFE00 18EBFF00#0104FF6E00030BFF”

REF_010An 11-bit identifier

“100#F07D7D2019000FFF”

Identifier Fields

Inside the 29-Bit J1939 Identifier

J1939 packs addressing into the CAN identifier itself. These ten parts explain how 0CF00400 becomes a priority, a PGN and a source address.

01 / PRIORITY

Priority

The top three bits, 0 being the most urgent. Engine control messages usually run at 3, information at 6.

“What priority does 0CF00400 have?”

02 / EXTENDED

Extended Data Page

One reserved bit, zero in normal J1939 and set only by ISO 15765 and NMEA 2000 extensions.

“Is it usually set?”

03 / DATA

Data Page

Selects between two pages of parameter groups, doubling the PGN space.

“How many pages are there?”

04 / PDU

PDU Format (PF)

The byte after the data page. Values below 240 make a PDU1 message, 240 and above a PDU2 message.

“Which PF value starts PDU2?”

05 / PDU

PDU Specific (PS)

In PDU2 it is part of the PGN. In PDU1 it is the destination address instead.

“What is PS in PDU1?”

06 / SOURCE

Source Address

The bottom byte, the address of the controller that sent the frame.

“Who sent 0CF00400?”

07 / PGN

PGN

Data page, PF and, for PDU2, PS together give the parameter group number.

“What PGN is 18FEEE00?”

08 / PDU1

PDU1 Destinations

A PDU1 message goes to one address, or to 255 for every node.

“What does destination 255 mean?”

09 / PDU2

PDU2 Broadcasts

PDU2 messages have no destination and are heard by everyone on the bus.

“Can PDU2 be addressed?”

10 / NULL

Null Address

Address 254 is used by a node that failed to claim an address.

“Which address means none?”

Parameter Groups You Will See Most

A running engine broadcasts a handful of parameter groups many times a second. These are the ones this decoder knows by heart, and what each one carries.

EEC1, PGN 61444

Engine speed, torque mode and percent torque, sent every 10 to 20 milliseconds while the engine runs.

ET1, PGN 65262

Coolant, fuel, oil and turbo oil temperatures, plus intercooler temperature, once a second.

EFL/P1, PGN 65263

Oil pressure and level, coolant pressure and level, fuel delivery and crankcase pressure.

CCVS, PGN 65265

Wheel-based vehicle speed, along with cruise control switch states this decoder doesn’t list.

LFE and LFC

Fuel rate and economy in PGN 65266, and lifetime and trip fuel used in PGN 65257.

HOURS, PGN 65253

Total engine hours and revolutions, usually sent only when requested by a service tool.

VEP1 and AMB

Battery and charging voltages in PGN 65271, ambient, cab and inlet air temperatures in PGN 65269.

Reading DM1 Fault Codes

DM1 is how a J1939 controller reports what is wrong right now. Each fault is an SPN that says which parameter failed and an FMI that says how it failed, alongside the lamps the driver sees on the dashboard.

Tip 01

The Lamp Byte

The first byte holds four 2-bit lamp states: malfunction, red stop, amber warning and protect, in that order.

Tip 02

SPN

The 19-bit suspect parameter number names the failing value, such as SPN 110 for coolant temperature.

Tip 03

FMI

The failure mode identifier, 0 to 31, says whether the value is too high, too low, shorted, open or erratic.

Tip 04

Occurrence Count

How many times the fault has gone from inactive to active, up to 126.

Tip 05

Conversion Method

This decoder uses method 4, the only one allowed since 1996. Very old controllers used other bit orders.

Tip 06

Several Faults

Two or more faults don’t fit one frame, so DM1 arrives as a BAM transfer of several TP.DT packets.

Tip 07

DM2 for History

DM2, PGN 65227, has the same layout and lists faults that were active before but have cleared.

When to Decode J1939 Frames

Whenever a heavy vehicle’s bus needs reading without a full diagnostic suite.

Fleet Diagnostics

Decode a DM1 from a truck’s logger to see which fault lit the amber lamp.

Telematics Development

Check that your device reads engine hours, fuel used and speed from the right PGNs.

Off-Highway Machines

Read tractors, excavators and generators that share J1939 parameter groups.

Filter Building

Work out the identifier and mask for a PGN before configuring a CAN filter.

Learning J1939

See how one identifier encodes priority, PGN and addresses with real frames.

J1939 Pitfalls

Things that trip people up when reading J1939 traffic.

Tip 01

Source Address in the PGN

The source byte isn’t part of the PGN, so 18FEEE00 and 18FEEE03 are the same group from two senders.

Tip 02

PDU1 Destination

For PF below 240, the PS byte is a destination, so 18EA00F9 is PGN 59904 sent to address 0.

Tip 03

FF Means Missing

Bytes of FF are not available, and FE is an error indicator. They aren’t real readings.

Tip 04

Little-Endian Values

Multi-byte SPNs are little-endian, so 20 19 for engine speed is 0x1920.

Tip 05

Proprietary PGNs

PGNs 61184 and 65280 to 65535 are manufacturer-specific and need the OEM’s documentation.

Tip 06

Dynamic Addresses

Addresses can change after an address claim, so identify nodes by NAME on a mixed bus.

Frequently Asked Questions