tool · modbus
Modbus Register Converter
Convert 16-bit and 32-bit register values across signedness, byte order, word order, integer, and float interpretations.
Version, source checks, and technical review
- For
- Modbus: Registers, Function Codes, and Integration Limits
- Published
- Version
- See primary sources for versions
- Facts and sources
- Checked against the cited sources on Jul 14, 2026
- Technical review
- No independent technical review recorded
Conclusion first
The decision in one paragraph
The same register bytes can produce very different values; confirm device documentation before writing anything.
Interactive workspace
Run the check
Everything below runs locally in this page. Inputs are not sent to IoT 01.
Results will appear here.
The short answer
Two Modbus holding registers contain 32 bits, but those bits do not identify their own data type. The same pair may be an unsigned integer, a signed integer, an IEEE-754 float, or two unrelated 16-bit values. This converter shows the three common 32-bit interpretations for a pair of hexadecimal registers and lets you reverse the register order.
Treat a plausible-looking result as a hypothesis. The device register map remains authoritative for data type, word order, byte order, scaling, units, sentinel values, and writable range.
Inputs and word order
Enter each 16-bit register as four hexadecimal digits. The optional 0x prefix is accepted and removed. For example, decimal 16,712 is 4148 in hexadecimal, while zero is 0000.
Register 1 then 2 concatenates the first word before the second: R1 R2. Register 2 then 1 swaps the two 16-bit words: R2 R1. The tool does not swap bytes inside an individual register because Modbus transmits each 16-bit register in big-endian byte order. Some vendor documentation uses informal labels such as ABCD, CDAB, “big endian,” or “little endian” inconsistently; preserve the actual byte sequence in your integration notes.
Conversion method
After ordering the words, the converter parses the eight hexadecimal digits as one 32-bit bit pattern. It then reads that same pattern three ways:
- Unsigned integer: a value from 0 through 4,294,967,295.
- Signed integer: a two’s-complement value from −2,147,483,648 through 2,147,483,647.
- IEEE-754 single-precision float: one sign bit, eight exponent bits, and 23 fraction bits.
No scale or offset is applied. If a register map specifies value × 0.1, value ÷ 100, or an engineering offset, apply that rule after identifying the correct raw integer.
Worked example
Enter 4148 for Register 1 and 0000 for Register 2, keeping “Register 1 then 2.” The raw sequence is 0x41480000. Read as an unsigned or signed 32-bit integer, it is 1,095,237,632. Read as an IEEE-754 float, it is 12.5.
That float is often the useful interpretation, but it is not proof. Confirm it against a known operating condition or the vendor’s example. If the device should currently read 12.5 °C and the register map declares a float in that word order, the evidence aligns. If the map declares an integer scaled by 0.01, the same bit pattern means something entirely different.
Switching to “Register 2 then 1” produces 0x00004148, demonstrating why an incorrect word-order assumption can yield a technically valid but meaningless number.
Addressing and other limitations
This tool does not read a device, validate a Modbus function code, or resolve address notation. Documentation may label the first holding register as 40001 while the protocol request uses offset 0; that addressing convention is separate from value conversion.
The converter handles one 32-bit value made from two registers. It does not decode 16-bit values, 64-bit integers or doubles, strings, packed bits, BCD, vendor-specific date formats, NaN policy, or mixed byte-and-word permutations. It also does not apply units, scaling, range checks, alarm meanings, or write safety. Never use a converted value as a write command without a device-specific validation path.
Privacy and sharing
The register words and selected order are processed locally and placed in the current URL after conversion so the bit pattern can be shared with a colleague. Do not use production data if register values themselves are confidential. No device address, network connection, or credential is requested.
The Copy command and JSON, CSV, and Markdown exports are generated in the browser. IoT 01 receives none of the entered words or results.
FAQ
Why does the float look absurd while the integer looks plausible?
The map may specify an integer, a different word order, or a scale factor. Plausibility alone cannot choose among them; check the register definition and compare with a known value.
Does Modbus define 32-bit word order?
The application protocol defines 16-bit registers but does not give every multi-register vendor value one universal interpretation. Device documentation must specify how words form larger values.
Can I paste decimal register values?
No. Convert each unsigned 16-bit register to four hexadecimal digits first. The field intentionally makes the raw byte pattern explicit.
Related guide
See Bridging Modbus devices to MQTT for address normalization, scaling, quality, timestamps, and a safe message boundary around register data.
Before you ship
Implementation checklist
- Record address base, scaling, and order with each point.
- Compare against a known device value.
- Keep write operations outside this tool.
Primary sources
Verify the facts
- Modbus Application Protocol SpecificationAccessed Jul 14, 2026
Sources checked Jul 14, 2026 · Next check due: July 14, 2027
Maintenance
Update history
- Jul 14, 2026
- First published
- Jul 14, 2026
- Content updated and sources checked
Tell us when an explanation is unclear, inaccurate, or outdated.