Modbus Frame Builder

Build Modbus RTU and TCP requests, calculate CRC16 automatically, inspect the frame field by field and validate the CRC of a received RTU frame.

Free, no account needed. Everything runs in your browser; nothing you enter is sent to a server.

Frame parameters

The frame is built as you type.

Protocol

0–65535 (0-based in the frame)

Generated frame

Hex bytes

—
CRC-16 (Modbus)—
Sent on the wire (low byte first)—

Frame breakdown

The bytes of every field and what they mean. The address is also shown in the 1-based notation most device manuals use.

FieldBytesMeaning

CRC16 validator

Paste a received Modbus RTU frame to check its CRC.

Spaces are optional. A leading colon (:) is removed.

CRC16 reference: the standard Modbus polynomial

Polynomial
0x8005 (CRC-16/MODBUS)
Initial value
0xFFFF
Reflection
Reflected (LSB first)
Output XOR
0x0000

Modbus RTU appends a CRC16 to every frame for error detection on serial lines such as RS-485. Modbus TCP has no CRC: integrity is left to TCP, and the frame starts with a 7-byte MBAP header.

How to use it

  1. Choose the frame type. Choose RTU or TCP, then set the unit ID and function code.
  2. Enter address and quantity. Enter the start address, the quantity and any values to write.
  3. Copy the bytes. Inspect the field-by-field breakdown, check the CRC16 and copy the hex bytes.

Common questions

What is the CRC16 used by Modbus RTU?

CRC-16/MODBUS: polynomial 0x8005 (0xA001 in reflected form), initial value 0xFFFF, transmitted low byte first.

Why does Modbus TCP have no CRC?

Integrity checking is left to TCP. The frame starts with a 7-byte MBAP header containing transaction ID, protocol ID (0), length and unit ID.

How many registers fit in one request?

Function 03/04 reads up to 125 registers; function 16 writes up to 123 registers.

Planning an IT/OT project?

Describe your machine, data flow or production goal in a few sentences and the ASP Dijital team will reply by email.

Contact ASP Dijital