CAN bus tools · runs in your browser

CAN ID decoder

Split a 29-bit NMEA 2000 or J1939 identifier into priority, PGN, source and destination — or an 11-bit CANopen identifier into function and node. Works the other way too: build an ID from its parts.

Examples:
29-bit · 0x09F21401 · NMEA 2000 / J1939 layout
0
1
0
Priority
0
EDP
1
DP
1
1
1
1
0
0
1
0
PF
0
0
0
1
0
1
0
0
PS
0
0
0
0
0
0
0
1
Source
PGN1275080x1F214
Priority20 = highest, 7 = lowest
Source address10x01
DestinationGlobal (broadcast)PDU2 — PF 242 ≥ 240, PS 20 is part of the PGN
Data page / EDPDP 1 · EDP 0
Build a 29-bit identifier
Identifier
0x19F21401
435295233 decimal

How it works

NMEA 2000 and J1939 share one 29-bit layout: 3 priority bits, the extended data page and data page bits, an 8-bit PDU format (PF), an 8-bit PDU specific (PS) and the 8-bit source address. When PF is below 240 the message is addressed (PDU1) and PS is the destination; from 240 up it is broadcast (PDU2) and PS is part of the PGN. So 0x18EA2380 is PGN 59904 (ISO Request) from address 0x80 to 0x23, while 0x0CF00400 is PGN 61444 (EEC1) broadcast by the engine at address 0.

CANopen's predefined connection set uses an 11-bit identifier: a 4-bit function code and a 7-bit node ID, so 0x705 is the heartbeat of node 5 and 0x585 an SDO response from node 5.

IDs from your logger can be pasted as they are — with or without 0x.

Other CAN tools

Sources & privacy

Everything is decoded in your browser — logs and frames are never uploaded. Message layouts come from these documents; where a source doesn't define something, the tools show the raw bytes rather than guess.

The NMEA 2000 definitions are derived from canboat, © 2009–2026 Kees Verruijt, under the Apache License 2.0. NMEA 2000® is a registered trademark of the National Marine Electronics Association; canboat's definitions are reverse-engineered, not the official NMEA database. Check critical values against your equipment's documentation.