← TelemetryLoop
Free Tool · No Signup

Modbus Frame Decoder

Paste raw RTU or TCP hex bytes. Get the full frame broken down: device address, function code, register address, byte count, data values, CRC validation.

Input — Hex Bytes 0 bytes
Mode
Quick examples
FC03 Request FC03 Response FC01 Read Coils FC06 Write Single FC16 Write Multiple TCP Request Exception Response Bad CRC
Function Code Reference
01
Read Coils
Discrete output — R
02
Read Discrete Inputs
Discrete input — R
03
Read Holding Registers
16-bit — R/W
04
Read Input Registers
16-bit — R only
05
Write Single Coil
0x0000 / 0xFF00
06
Write Single Register
16-bit — W
0F
Write Multiple Coils
Discrete — W
10
Write Multiple Registers
16-bit — W
2B
Read Device ID
MEI / Vendor info

How this tool works

Paste any raw Modbus RTU or TCP/IP frame as hex bytes. The tool auto-detects the frame type based on the MBAP header structure — TCP frames start with a transaction ID and the protocol identifier 0x0000, while RTU frames start directly with the device address byte.

For RTU frames, the tool validates the CRC using the standard Modbus CRC-16 polynomial (0xA001, initialized to 0xFFFF). The last two bytes of an RTU frame are the CRC, LSB first. If they don't match the computed CRC, the tool flags the frame.

Register data is decoded as Int16, Uint16, and as a 32-bit IEEE 754 float across consecutive register pairs in all four register/byte orderings: ABCD (big-endian word, default — most SEL devices), CDAB (little-endian word — SunGrow, some SMA inverters), BADC, and DCBA. Pick the one your device documents and compare against the engineering value you expect; the others will look like garbage. If none match, the pair isn't a Float32 — it may be a 32-bit unsigned integer or two unrelated Int16s.

Nothing is sent to any server. All decoding runs entirely in the browser.