PLCBytes
Modbus tools

Modbus Register Decoder

Paste raw registers and see every way they can be read: 16-bit, 32-bit and float, in all four byte orders. Type the value your device shows and the decoder finds the right format for you.

Registers

Example

Separate with spaces, commas or new lines. Lines copied from Modbus Poll such as 3 = 17254 work too.

Format

Find my value

Enter the reading your meter, drive or HMI shows. The decoder tries every register, data type, byte order and common scaling (÷10, ÷100, ÷1000), best match first.

32-bit values

Two registers read as one value. Pick the first register of the pair.

OrderFloat32Int32UInt32Bytes

16-bit registers

AddressHexUInt16Int16Bits 15 … 0

Runs entirely in your browser. Nothing you enter is sent to a server.

Byte orders explained

A 32-bit value is four bytes, A B C D, split across two 16-bit registers. Devices disagree on the order, which is why the same registers can mean 230.5 or nonsense.

ABCD
Big-endian. High word first, as the Modbus spec intends. Try this first.
CDAB
Word swap. Low word first. Very common on energy meters and PLCs.
BADC
Byte swap. Bytes swapped inside each register. Rare.
DCBA
Little-endian. Everything reversed.

How to read the results

Modbus only carries 16-bit registers. What they mean — a signed number, a 32-bit float, a value in tenths — is decided by the device manufacturer, not by the protocol. The decoder lays every common reading side by side so you can compare it with the display or the register map.

Common mistakes

Questions from practice

Why do I get a huge number or NaN instead of my float?

The two registers are almost certainly combined in the wrong order. A Float32 keeps its sign and exponent in the first bytes; when the low word comes first, fraction bits land in the exponent and you get values like 4.6e-41 or 2.6e+9. Compare the four rows in the 32-bit table: the row that matches your display is the byte order your software needs.

My manual says 40001 but my software wants 0. Which is right?

Both point to the same register. 40001 is a register number in the classic Modicon notation: the leading 4 marks a holding register and counting starts at 1. The request on the wire carries a zero-based address, so 40001 becomes 0 and 40002 becomes 1. Most software asks for the zero-based address. Enter 40001 as First address here to keep the labels in line with your manual.

Which byte order do energy meters and solar inverters use?

There is no single rule. The Modbus specification only defines 16-bit registers, so each manufacturer chooses how to pack 32-bit values. Many devices send the high word first (ABCD), while a large share of meters and PLCs send the low word first (CDAB). The register map should say so. If it does not, read a value you know, such as mains voltage or frequency, and use Find my value.

How do I paste values from Modbus Poll or a log?

Paste the lines as they are. The decoder takes the value after an equals sign or colon, so 0 = 17254 and 1 = 32768 become two registers. Choose Decimal if your values are decimal; if the input cannot be hex (for example five-digit numbers), the decoder switches to Decimal by itself.

Is my data sent anywhere?

No. The decoding runs in your browser as part of this page. Nothing you paste is uploaded to or stored on a server.