Tooling

MQTT Explorers & Clients

MQTT Explorer, MQTTX, mosquitto_sub — see and poke your MQTT topics.

The "what is actually on my bus right now" tools. For the broker itself see MQTT for Home; for the broader broker landscape see Message Brokers.

Desktop GUIs

  • MQTT Explorer — the cult favorite; tree-style UI that auto-discovers your topic hierarchy and shows live values. Open-source, cross-platform desktop app. The single best tool for "what is Zigbee2MQTT publishing right now?"
  • MQTTX (EMQX) — modern, polished GUI; client + load-test + script panes; supports MQTT 5 fully; cross-platform. Great for testing MQTT 5 features (user properties, request/response).
  • MQTT.fx — older Java GUI; Softblade; was the standard for years. Free + paid tiers. Less recommended in 2026.

Web / browser

  • MQTTX Web — same MQTTX experience in the browser; no install. Connects to brokers' WebSocket endpoint.
  • HiveMQ WebSocket Client — quick browser tool from HiveMQ; fine for one-off tests.
  • EMQX Dashboard — built into EMQX; subscribe / publish from the broker's own UI.

CLI

  • mosquitto_sub / mosquitto_pub — ships with Mosquitto; the universal language of "is this topic alive."
    • mosquitto_sub -h broker -t '#' -v — fire hose of every message.
    • mosquitto_pub -h broker -t home/test -m hello — publish.
  • mqttui — Rust TUI; cross-platform; single binary; "MQTT Explorer in a terminal." Great over SSH.
  • mqtt-cli (HiveMQ) — Java; full-featured; supports MQTT 5.
  • mqtt-spy — old Java tool; archived; still works.

Programmatic

  • paho-mqtt — Eclipse Paho; the reference C / Python / Java / JS / Go client.
  • MQTT.js — the standard Node.js client; battle-tested.
  • gmqtt / asyncio-mqtt — modern async Python.
  • rumqttc — Rust async client.
  • async-mqtt — C++ async client.

Hosted "send me a message" services

  • Beebotte — hosted MQTT-as-a-service with a free tier; useful for "I want a public broker for a tutorial."
  • HiveMQ Public Broker (broker.hivemq.com) — free public broker for testing only. Don't put real data on it.
  • EMQX Public Broker (broker.emqx.io) — same, EMQX-flavored.

Patterns to adopt

  • Always have one window with mosquitto_sub -t '#' -v open when debugging an integration. You'll see the answer before you finish writing the question.
  • Use retained messages for "current state" topics so a fresh subscriber gets immediate context.
  • Use Last Will and Testament (LWT) so devices flip an online/offline topic on disconnect. ESPHome / Tasmota / Z2M all set this for you.
  • Topic naming: <vendor>/<location>/<device>/<thing> reads well in MQTT Explorer's tree.

Pick this if…

  • Default desktop GUI: MQTT Explorer.
  • MQTT 5 / load test / scripting: MQTTX.
  • Over SSH / no GUI: mqttui or mosquitto_sub.
  • Quick sanity check from browser: HiveMQ WebSocket Client or MQTTX Web.
  • Need a free hosted broker for a demo: HiveMQ public broker (testing only).

On this page