FREE TOOLS · NO SIGN-UP · RUNS IN YOUR BROWSER

Modbus tools engineers bookmark.

Everything computes locally — nothing you paste leaves this page.

CRC-16 calculatorTCP frame parserFunction codesException codes

01Modbus CRC-16 calculator

Paste the frame without CRC. Polynomial 0xA001 (reflected), init 0xFFFF, appended low byte first — the Modbus RTU standard.
Frame bytes (hex, spaces optional)

02Modbus TCP frame parser

Paste a full ADU. MBAP header and PDU are split into named fields — exceptions are decoded automatically.
Frame bytes (hex)

03Function code reference

The codes you'll actually meet in the field, with the request → response shape.
FCNameRequest → response
01Read Coils 0x areastart + quantity → packed bits
02Read Discrete Inputs 1x areastart + quantity → packed bits
03Read Holding Registers 4x areastart + quantity → byte count + register values
04Read Input Registers 3x areastart + quantity → byte count + register values
05Write Single Coiladdress + FF00/0000 → echo
06Write Single Registeraddress + value → echo
0FWrite Multiple Coilsstart + quantity + packed bits → start + quantity
10Write Multiple Registersstart + quantity + values → start + quantity
16Mask Write Registeraddress + AND + OR masks → echo
17Read/Write Multiplewrite block + read block in one transaction
2BEncapsulated InterfaceMEI 0x0E: read device identification

04Exception codes — and what to check first

Response FC = request FC + 0x80, one data byte carries the code. Definitions are everywhere; the third column is what matters.
CodeNameMost likely cause · check first
01Illegal FunctionDevice doesn't implement that FC. Check the manual's supported-FC list; try 03 instead of 04 (or vice versa).
02Illegal Data AddressStart address or quantity runs past the map. Nine times out of ten it's the 40001-vs-0-based offset — subtract 1 and retry.
03Illegal Data ValueQuantity of 0, >125 registers, or a write value outside limits. Check the count field before the payload.
04Slave Device FailureDevice-internal fault while answering. Power-cycle the slave; check its own error indicators.
05AcknowledgeLong-running command accepted, not finished. Poll again later — not an error.
06Slave Device BusyRetry with backoff. If constant, another master or a firmware task is hogging it.
08Memory Parity ErrorDevice memory fault on file-record access. Usually a dying device.
0AGateway Path UnavailableThe TCP→RTU gateway can't route. Check gateway config and the serial side's wiring.
0BGateway Target FailedGateway is fine, the serial slave behind it didn't answer. Debug the RTU segment: address, baud, A/B lines.