MQTT 3.1.1 vs MQTT 5 for SCADA: Which to Use
MQTT 5 is not a rewrite of 3.1.1; it is the same core protocol with a set of additions that happen to solve exactly the problems field telemetry hits. This comparison is for the engineer deciding which version to standardize on for a new SCADA deployment, or weighing whether an existing 3.1.1 system is worth moving. It lays out what version 5 adds and where those additions actually matter.
MQTT 3.1.1 vs MQTT 5 in one line: For a new SCADA deployment, MQTT 5 is generally the better choice: it keeps the same publish/subscribe core as 3.1.1 while adding reason codes for diagnosability, session expiry and clean start for controlled reconnection, receive-maximum flow control, message properties, and shared subscriptions. MQTT 3.1.1 remains fine for simple, stable systems, but version 5's additions directly address the reliability and diagnostics field links demand.
The Decision in One Paragraph
Both versions share the fundamentals: the same broker model, the same three QoS levels, the same retained messages and last will. What separates them is a layer of refinements in version 5 aimed at robustness and observability. If you are building new and control both ends, standardize on MQTT 5, because the features it adds are precisely the ones that make a flaky cellular fleet easier to run and diagnose. If you have a stable, simple 3.1.1 system that works, the case to migrate is weaker and should be driven by a specific pain the newer features would relieve.
Below is a side-by-side of the differences that matter most for SCADA, followed by where each version still wins and the pitfalls of moving between them.
Feature Comparison Side by Side
The table summarizes the practically important differences. Each MQTT 5 row corresponds to a real field problem, from diagnosing a refused connection to bounding retries on a slow link.
| Capability | MQTT 3.1.1 | MQTT 5 |
|---|---|---|
| Failure diagnostics | Limited connection return codes; generic subscribe failure | Reason codes and reason strings across connect, publish, subscribe, disconnect |
| Session control | Clean session flag only | Clean start plus a session expiry interval |
| Flow control | None defined | Receive maximum bounds in-flight messages |
| Server-initiated disconnect | Socket just closes | Broker can send a DISCONNECT with a reason |
| Message metadata | Payload only | User properties, content type, message expiry, and more |
| Load balancing consumers | Not standardized | Shared subscriptions |
| Topic efficiency | Full topic every message | Topic alias sends the string once |
Read down the version 5 column and every row maps to something covered elsewhere on this site: the diagnostics of reason codes, controlled reconnection through session expiry and clean start, backpressure via receive maximum, load balancing through shared subscriptions, and lean topics with the topic alias. None is exotic; each removes a specific field headache.
When Each Version Wins
MQTT 5 wins for anything you will commission and support remotely, which is most SCADA. The diagnostics alone justify it: when a gateway three hours away will not connect, a reason code tells you whether it is credentials, a duplicate identifier, or the network, turning a site visit into a config fix. Session expiry gives you controlled behavior across the reconnects a cellular link guarantees, and flow control keeps a slow link from being buried under retries. For a new build with modern client libraries and a modern broker, there is little reason to start on 3.1.1.
MQTT 3.1.1 still wins in a narrow band: a stable, simple system already running well, or a constrained device whose available client library only speaks 3.1.1 reliably. The protocol is mature and widely supported, and if none of the version 5 features solve a problem you actually have, migrating adds risk for little return. Version compatibility is the practical constraint, since a broker and all its clients must support the version you choose, and mixed fleets are where migration pain concentrates.
This version choice is one input into the larger architectural question of whether to run plain MQTT at all or adopt Sparkplug on top of it, which is treated separately in plain MQTT versus Sparkplug. Sparkplug builds on MQTT and benefits from version 5's features, so the two decisions are related but distinct: version 5 versus 3.1.1 is about the transport, and Sparkplug versus plain MQTT is about the payload and lifecycle model layered above it.
Frequently Asked Questions
Can MQTT 3.1.1 and MQTT 5 clients share the same broker?
Most modern brokers support both versions simultaneously, so 3.1.1 and 5 clients can connect to the same broker and exchange messages on shared topics, since the core publish/subscribe behavior is compatible. What does not carry across is the version 5 only features: a 3.1.1 subscriber gains no reason codes or message properties, and a 3.1.1 publisher cannot set them. So a mixed fleet works, but you only get version 5's benefits on the connections where both the client and its usage actually employ them.
Is it worth migrating a working MQTT 3.1.1 SCADA system to MQTT 5?
Only if a version 5 feature solves a real problem you have. If your 3.1.1 system is stable and none of the additions, richer diagnostics, session expiry, flow control, message properties, would relieve a genuine pain, migrating adds risk for little return. If, on the other hand, you struggle to diagnose remote connection failures or to control reconnect behavior on flaky links, those are exactly the pains version 5 addresses, and the migration becomes worthwhile. Let a specific problem, not novelty, drive the move.
Sources and verification
This page references the protocol specifications published by the organizations below. Editions, product capabilities, and documentation change over time - confirm current requirements and specifications directly with the source.
- MQTT Version 5.0 (OASIS Standard) - OASIS (v5.0, 2019)
Merobix is not affiliated with, endorsed by, or sponsored by these organizations; their names are used only to identify the standards and products discussed.
Automation services
Need help turning this into a working system?
Merobix integrates SCADA, programs Allen-Bradley and Siemens PLCs, and designs and fabricates industrial control panels.
Meeting requests are reviewed before confirmation.