1. Pick a network
Start with a preset such as a crowded gateway, satellite backhaul, or safety command path.
Compare MQTT QoS choices under packet loss, latency, retry limits, disconnects, and subscriber QoS caps.
Choose a network condition, step through the packet exchange, and compare how QoS 0, QoS 1, and QoS 2 behave when packets are lost, acknowledgements are delayed, or subscribers request a lower delivery QoS.
Start with a preset such as a crowded gateway, satellite backhaul, or safety command path.
Compare QoS 0, 1, and 2 as delivery guarantee, duplicate risk, and packet cost change.
Use Step or Play to see which MQTT packet is active and why a retry may happen.
The trial cards estimate delivery, duplicates, packets, and time for the same conditions.
Packet loss is a teaching model here. Real MQTT clients have implementation-specific retry timers, session behavior, and reconnect policies, so use the comparison as a decision aid, not a certification test.
Retries recover most lost PUBLISH packets in this scenario.
QoS 1 can repeat PUBLISH after a lost PUBACK.
Normal flow uses PUBLISH plus PUBACK; loss increases retries.
Use when confirmation matters and the application can deduplicate.
The same deterministic trial set is applied to QoS 0, QoS 1, and QoS 2 so learners can compare the tradeoff, not random luck.
QoS is a delivery promise for one MQTT hop. It does not prove that a door unlocked, a motor stopped, or a database transaction committed.
Set packet loss above 20%, then compare QoS 0, 1, and 2. Watch delivery improve while packets and delay increase.
QoS 1 can deliver more than once when the receiver gets PUBLISH but the acknowledgement is lost. Use message IDs or idempotent handlers.
One PUBLISH packet. Lowest latency and packet cost. The message may be lost because the sender receives no MQTT acknowledgement.
PUBLISH plus PUBACK. The receiver should get the message at least once, but a lost PUBACK can make the sender retry and create duplicates.
PUBLISH, PUBREC, PUBREL, and PUBCOMP. Avoids duplicate MQTT delivery on that hop, but uses the most packets and state.
The broker delivers at the lower of the publish QoS and the subscriber's requested QoS: min(publish, subscribe).
This playground uses a finite teaching retry budget. Real clients choose their own retransmission timing and reconnect behavior.
OASIS MQTT 5.0 and OASIS MQTT 3.1.1 define the QoS packet flows.
A temperature sensor reports every 5 seconds and the latest reading replaces old readings. Start with QoS 0 unless loss changes the business need.
A motion alert should arrive, and duplicate events can be ignored by event ID. QoS 1 is usually a practical fit.
A command that must not execute twice needs more than MQTT QoS. Use QoS 2 for the MQTT hop and application-level command IDs or confirmation.