MQTT $SYS topics
$SYS is where a broker publishes metrics about itself: connected clients, message rates, memory, uptime, version. It is a convention rather than a standard, so each broker publishes a different set under a different root.
Subscribing to $SYS
Subscribe to $SYS/#. A subscription to # does
not include it, because the specification keeps topics starting with
$ out of wildcard matches. Most brokers also let you restrict
who may read $SYS; EMQX limits it to localhost by default.
Mosquitto $SYS topics worth knowing
Mosquitto publishes the largest and best-documented tree, and most brokers that follow the convention copy its layout.
| Topic | Meaning |
|---|---|
$SYS/broker/clients/connected | Clients connected now |
$SYS/broker/load/messages/received/1min | Messages received per minute, moving average. Also /sent/, and 5 and 15 minute windows |
$SYS/broker/load/publish/dropped/1min | Messages the broker dropped. A healthy broker holds this at zero |
$SYS/broker/subscriptions/count | Active subscriptions |
$SYS/broker/retained messages/count | Retained messages held. The topic has a space in it |
$SYS/broker/store/messages/count, /bytes | Messages in the store, including queued QoS 1 and 2 |
$SYS/broker/heap/current, /maximum | Heap in use and its high-water mark, when compiled with memory tracking |
$SYS/broker/uptime, $SYS/broker/version | Uptime in seconds, and the version string |
Mosquitto republishes every sys_interval seconds, 10 by
default, retained, and only the values that changed. Silence on a topic
means unchanged, not missing.
What each broker publishes
| Broker | $SYS root | Interval | Notes |
|---|---|---|---|
| Mosquitto 2.x | $SYS/broker/ | 10 s, retained | Clients, load averages, drops, store, subscriptions, heap when compiled in, uptime, version. Republishes changes only. |
| EMQX 4.x and 5.x | $SYS/brokers/<node>/ | 1 min, not retained | Drop counters and client and subscription gauges. No queue depth, heap or load averages. 4.x uses dotted leaves, 5.x slashes. Localhost only by default. |
| VerneMQ | $SYS/<node>/ | 20 s | Counters including queue drops, the vm_memory family and retained counts. The node name varies, so subscribe with +. |
| Mochi-MQTT | $SYS/broker/ | 1 s, retained | Its own leaves: messages/dropped, messages/inflight, retained, subscriptions. system/memory is process memory, not broker heap. |
| FlashMQ, RSMB | $SYS/broker/ | About 10 s | A mosquitto-style subset. |
| Aedes with aedes-stats | $SYS/<instance-id>/ | 1 s | Clients, heap and uptime under a random per-instance id. Subscribe with a wildcard. |
| NanoMQ | none | No $SYS tree. Metrics go through its event and webhook system. | |
| HiveMQ and HiveMQ Cloud, RabbitMQ, BifroMQ, Moquette, AWS IoT Core, Azure Event Grid, EMQX Cloud Serverless, flespi | none | No $SYS metrics. Monitoring goes through their dashboards, APIs or Prometheus endpoints. |
Researched against current broker versions in July 2026 for MQTT Viewer's broker status page.
Reading the numbers
Many $SYS values are cumulative counters that only mean something as a rate. MQTT Viewer's status page derives rates from counters and shows them as tiles with trend lines.
Frequently asked questions
How do you see $SYS topics on a broker?
Subscribe to $SYS/# with any MQTT client. A subscription to # alone does not include them, because wildcards never match topics that start with $.
Why are $SYS topics missing on EMQX?
EMQX only allows $SYS subscriptions from localhost by default. Loosen the ACL to allow $SYS/# from the client's address, or read the metrics from the EMQX dashboard instead.
Do AWS IoT Core or Azure IoT Hub publish $SYS topics?
Neither AWS IoT Core nor Azure IoT Hub publishes $SYS topics, and nor do HiveMQ, RabbitMQ or most managed brokers. Their metrics live in their own dashboards and APIs. A client can still measure the message rate it observes.
Are $SYS topics part of the MQTT specification?
The specification reserves topics starting with $ for the broker and keeps them out of wildcard matches. What goes under $SYS is a convention that started with mosquitto, and every broker lays it out differently.
The MQTT glossary covers topics, wildcards, QoS and retained messages.
MQTT Viewer is free and open source, and runs on macOS, Windows and Linux.
Download MQTT Viewer