Skip to content

Free tool

Modbus calculator

Calculate the Modbus RTU CRC and build request frames, convert references such as 40001 to protocol offsets, and decode register values as float or integer in all four byte orders.

Build a frame

Result

CRC-16/MODBUS

–

Order on the wire (low byte first)

–

Frame with CRC

–

Build a frame

–

CRC and RTU frames

Every Modbus RTU frame ends with a CRC-16/MODBUS to catch transmission errors. The calculator gives the CRC of the bytes you enter and shows the order it goes on the wire (low byte first). The frame builder turns a slave ID, function code, address and quantity or value into a read or write request. Inputs are checked against the limits of the Modbus Application Protocol (v1.1b3): slave 1–247 (0 is broadcast, writes only), address 0–65535, up to 2000 for FC01/02, 125 for FC03/04, 1968 coils for FC15 and 123 registers for FC16; an out-of-range value is never silently wrapped but shown as an error under the field. To check it: the CRC-16/MODBUS of the text "123456789" is 0x4B37, and the CRC bytes of the request 01 03 00 00 00 0A are C5 CD.

Address converter

Device manuals usually list registers as Modicon references such as 40001, while the protocol uses a 0-based offset. The converter turns a reference into its table, offset and function codes, and turns a table and offset back into 5- and 6-digit references. If the value you read is shifted by one register, this difference is the first thing to check.

Value decoder

Values wider than 16 bits span several registers, and the byte order differs between devices. The decoder shows 1, 2 or 4 registers as UINT16, INT16, UINT32, INT32, FLOAT32 and FLOAT64 in all four orders at once; the encoder works out which registers to send for a value. See how we handle this in the field in our PLC data collection guide and on our Modbus integration page. More tools are on the tools page.

The tool is for information; confirm results in the field against the device manual and a known value.

Frequently asked questions

Common questions

How is the Modbus CRC calculated?

Modbus RTU uses CRC-16/MODBUS: initial value 0xFFFF and polynomial 0xA001 (0x8005 reflected). The CRC covers every byte from the slave ID to the last data byte and is appended low byte first, then high byte. For 01 03 00 00 00 0A the CRC bytes are C5 CD.

What is the difference between 40001 and address 0?

40001 is the Modicon reference number of the first holding register: the first digit names the table (4 = holding register) and the rest is a 1-based register number. On the wire the address is a 0-based offset, so 40001 is read at offset 0 with function code 03. Device manuals should say which convention they use; an off-by-one shift almost always comes from this difference.

Why does my float value read wrong?

A 32-bit float spans two registers, and devices order those registers and their bytes differently: ABCD, CDAB, BADC or DCBA. The decoder shows the same registers in all four orders; the plausible result is the order your device uses. Confirm it against a known value, such as a temperature shown on the HMI.

What is the difference between 5-digit and 6-digit Modbus addresses?

The 5-digit form (40001–49999) covers at most 9,999 addresses per table. The protocol allows 65,536, so the 6-digit form (400001–465536) exists. Both describe the same offset: 40001 and 400001 are the same register.

Is my data sent anywhere?

No. Every calculation runs in your browser and nothing is sent to a server.

Next step

Let’s turn your goal into a clear engineering scope.

Tell us about your plant, your machines and your goal. An integration engineer will set up a discovery call with you.

Awards and references

The integration team manufacturers trust

See our references →