Free Engineering Utilities

Modbus tools for quick field checks

Calculate a Modbus RTU CRC, convert 4xxxx register references and decode 32-bit Float values without installing anything. All calculations run locally in your browser.

Quick answer: Modbus RTU uses CRC-16/MODBUS: initial value 0xFFFF and reflected polynomial 0xA001, calculated over every byte from the slave ID to the last data byte. The 16-bit result is appended low byte first, so for 01 03 00 00 00 0A the CRC is 0xCDC5 and the frame ends C5 CD.

Modbus RTU

Modbus RTU CRC-16 calculator

Enter the frame bytes before the CRC. Example: 01 03 00 00 00 0A.

CRC value—
RTU bytes to append (Low High)—
Complete frame—

Modbus RTU transmits the CRC low byte first, then the high byte.

Addressing

4xxxx register converter

Convert classic documentation references such as 40001 into a zero-based protocol offset.

Register areaHolding register
Zero-based address0

Manufacturer conventions vary. Confirm whether the device manual uses 0-based offsets, 1-based offsets or 3xxxx/4xxxx references.

32-bit data

Float32 byte-order decoder

Enter four bytes exactly as they appear across two consecutive 16-bit registers. Select how the device stores the IEEE-754 Float32 value.

Normalized IEEE bytes—
Float32 value—

If the result is unrealistic, try the other three byte orders. See the Float32 & byte-order guide for the underlying concept.

Why these tools help

Fast checks before deeper troubleshooting

A correct CRC proves the frame bytes were calculated consistently; it does not prove the serial wiring or slave configuration is correct. Likewise, a plausible Float32 result confirms only one possible interpretation of two registers. Use the tools together with the device manual and a live communication log.

To see the frames that actually went over the wire, including the CRC, ModbusBB 2.0 has a Traffic Monitor with the raw TX/RX hex of every request and response. The CLI can also build a frame without sending it: ModbusBB.CLI raw --rtu COM3 --unit 1 --fc 3 --data "00 00 00 0A" --dry-run prints 01 03 00 00 00 0A C5 CD. See the CLI reference.

For field faults, continue with the timeout checklist, RS-485 wiring guide and exception-code reference.

Modbus tools FAQ

Is the Modbus RTU CRC sent low byte or high byte first?

Low byte first. Modbus RTU appends the low-order CRC byte and then the high-order byte, the opposite of the big-endian order used for register values. For the request 01 03 00 00 00 0A the CRC is 0xCDC5, transmitted as C5 CD.

How do I convert 40001 to a Modbus address?

Subtract 40001 for holding registers (or 30001 for input registers): 40001 becomes address 0 and 40100 becomes 99. Confirm that the device manual uses this convention, because some vendors already list zero-based offsets.

Do these Modbus tools send my data anywhere?

No. All calculations run locally in your browser with JavaScript, and nothing you type is uploaded.

Need live polling too?

Use ModbusBB to connect to the actual device

Poll several devices at once over TCP, UDP, RTU, ASCII or RTU-over-TCP. Read and write registers, decode Float32/64 and strings, inspect raw TX/RX frames, trend values and simulate devices from Windows or the command line.