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.
0–65535 (0-based in the frame)
Generated frame
—
MBAP header
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.
| Field | Bytes | Meaning |
|---|
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
- Choose the frame type. Choose RTU or TCP, then set the unit ID and function code.
- Enter address and quantity. Enter the start address, the quantity and any values to write.
- 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.