IoT Tutorials

MQTT Explorer Desktop App Comparison: Visualizing Topic Trees

Compare desktop MQTT explorers, including MQTT Explorer, MQTTX, MQTT.fx and the ConnectMQ Desktop MQTT explorer, learn what features matter when debugging topic trees, and connect any of them to broker.connectmq.com.

Desktop window of an mqtt explorer desktop app showing a nested topic tree and a JSON payload panel
Run this on your own MQTT brokerGet a private, managed MQTT broker on the Free plan and start from ready-made code samples.
Try it free Code samples No card required

An MQTT explorer desktop app shows what a terminal cannot: the whole topic tree at once, which branches are busy, what each retained value is and how a payload changed over time. This guide compares the main desktop explorers, explains which features actually matter when you debug a real system, and walks through connecting one to broker.connectmq.com with a seeded topic tree so you can evaluate them yourself.

Why Use a Desktop Explorer Instead of the CLI

Command-line tools are perfect for scripts and quick checks, and we compare them in MQTT CLI tools. But they show messages as a stream. When a system has hundreds of topics, a stream is hard to reason about. A desktop explorer turns that stream into a structure:

  • A tree, not a log. You see factory1/line1/cnc1/telemetry as a branch with siblings, so naming mistakes like Line1 vs line1 jump out.
  • Latest value per topic. Clicking a node shows its current (often retained) value without waiting.
  • History and diffs. Many explorers keep recent messages per topic, so you can see what changed between two payloads.
  • Safe publishing. Saved payloads, JSON formatting and a clear retain checkbox reduce the chance of publishing something wrong to production.
  • Multiple connections. Switch between a local broker, a staging broker and production without retyping credentials.

What to Evaluate in an MQTT Explorer Desktop App

Use this checklist when trying any explorer:

  1. Protocol support: MQTT 3.1.1 and 5.0, and visibility of MQTT 5 properties such as user properties, content type and message expiry.
  2. Transport options: TCP, TLS, WebSocket and secure WebSocket, with a field for the WebSocket path (for example /mqtt).
  3. TLS handling: uses the system trust store, or lets you add a CA file; a clear error message when the certificate fails.
  4. Topic tree performance: stays responsive when you subscribe to # on a busy broker.
  5. Payload rendering: pretty-printed JSON, hex view for binary, and ideally decoding for formats like Sparkplug B.
  6. Retained message management: see which topics are retained and delete them by publishing an empty retained payload.
  7. Publishing ergonomics: saved messages, QoS and retain controls, MQTT 5 properties.
  8. Credential storage: whether passwords are stored encrypted or in plain text config files.
  9. Platform coverage: Windows, macOS and Linux builds for your team.
  10. License and maintenance: open source, free or commercial, and how actively it is updated.

The Main Desktop Explorers Compared

App License Strength Consider
MQTT Explorer Open source Excellent hierarchical topic tree with message counts, payload history, diffs and numeric charts Built for browsing; publishing is basic
MQTTX (desktop) Open source Chat-style view per connection, strong MQTT 5 support, saved connections, scripting Stream-oriented; the tree view is less central
MQTT.fx Commercial Long-standing tool familiar to many engineers Licensing changed over time; check current terms
ConnectMQ Desktop MQTT explorer Vendor tool Browse topics, publish test messages and inspect payloads on any MQTT broker Newer tool; pairs well with the web portal

MQTT Explorer

MQTT Explorer is the tool many people mean when they say "MQTT explorer". It subscribes broadly (by default to # and $SYS/#) and renders everything as a collapsible tree, with counters showing how many messages arrived under each branch. Selecting a topic shows the latest payload, a history of recent values and a diff against the previous message; numeric values can be plotted. For understanding an unfamiliar system, this is often the fastest way in.

Be careful with the default # subscription on large or shared brokers. On the public broker, subscribe only to your own prefix to stay within the limit of 10 subscriptions per client and avoid flooding the app with other users' traffic.

MQTTX Desktop

MQTTX presents each connection like a chat: messages you send on one side, messages received on the other, filterable by topic. It is very good for interactive request-and-response testing, MQTT 5 properties and keeping a library of connections. If your work is mostly "send a command, watch the reply", MQTTX feels natural.

MQTT.fx

MQTT.fx was the default Java-based desktop client for years. Its licensing model has changed, so check the current terms before standardizing on it for a team.

ConnectMQ Desktop MQTT Explorer

This explorer ships alongside a VS Code MQTT extension. It browses topics, publishes test payloads and inspects messages, and it works with any standards-compliant broker, not only its own. If your devices already connect to a ConnectMQ broker, it is a convenient companion to the portal: use the desktop app while developing locally, and the portal's live topic explorer and in-browser MQTT client when you are away from your machine.

Hands-On: Seed a Topic Tree and Explore It

To compare explorers fairly, give them the same data. The commands below create a small, realistic tree on the public broker under a unique prefix. Replace ex4m with your own random string, and remember the public area is visible to everyone.

P="connectmq/demo/ex4m"
H="-h broker.connectmq.com -p 1883 -i seed-ex4m"

mosquitto_pub $H -r -t "$P/plant1/line1/cnc1/status"      -m "running"
mosquitto_pub $H -r -t "$P/plant1/line1/cnc1/telemetry"   -m '{"spindle_rpm": 8200, "temp_c": 41.5}'
mosquitto_pub $H -r -t "$P/plant1/line1/robot1/status"    -m "idle"
mosquitto_pub $H -r -t "$P/plant1/line2/furnace1/telemetry" -m '{"temp_c": 812, "setpoint_c": 820}'
mosquitto_pub $H -r -t "$P/plant1/utilities/tank1/level"  -m "67.2"

Then add a live, changing value so history and charts have something to show:

for i in $(seq 1 60); do
  mosquitto_pub -h broker.connectmq.com -p 1883 -i seed-live-ex4m \
    -t "connectmq/demo/ex4m/plant1/utilities/tank1/level" -m "$((60 + RANDOM % 15)).$((RANDOM % 10))"
  sleep 1
done

The deepest topic here has 7 levels, within the public broker's limit of 8.

Connection Settings

Use these settings in any explorer:

Field Public broker (testing) Your private broker
Host broker.connectmq.com Your broker host from the portal
Port / protocol 1883 TCP, or 8883 with TLS on 8883 with TLS (recommended)
WebSocket 8083 (ws), 8084 (wss), path /mqtt Same ports and path
Client ID Any unique, non-empty value The client ID generated for your credentials
Username / password Empty YOUR_USERNAME / YOUR_PASSWORD
Subscription connectmq/demo/ex4m/# # or your own root

What to Look For

  1. Expand plant1 and check that the hierarchy matches the plan. In real projects, this is where you discover devices that publish to Plant1 or put the device ID at the wrong level.
  2. Select tank1/level and watch the history while the loop runs. Explorers with charts plot it directly.
  3. Select furnace1/telemetry and confirm the JSON is pretty-printed.
  4. Delete a retained value: publish an empty payload with retain set to cnc1/status. The node should disappear (or show empty) for new subscribers.
  5. Disconnect and reconnect. Retained topics reappear instantly; non-retained ones wait for new messages. This is the quickest way to learn which of your topics are retained.

A consistent hierarchy matters more as systems grow. The ISA-95 style used above (site, area, line, cell) is the backbone of a Unified Namespace; read MQTT Sparkplug B and Unified Namespace for the reasoning behind it.

Troubleshooting Desktop Explorers

  • Connects over TCP but not TLS: the app may not use the operating system trust store. Add the ISRG Root X1 certificate (Let's Encrypt) as the CA, and check your system clock.
  • WebSocket connection fails: the path is missing. Use /mqtt with ports 8083 or 8084.
  • Tree freezes: you subscribed to # on a busy broker. Narrow the subscription.
  • Disconnects every few seconds: another tool uses the same client ID. Many explorers generate one; make sure two saved connections do not share it.
  • Not authorized on a private broker: the client ID must match the one issued with the credentials.

From Exploration to Production

A desktop explorer is a debugging lens; the broker is what has to be reliable. When your devices move beyond experiments, run them on a fully managed MQTT service rather than the shared test area. ConnectMQ brokers support MQTT 3.1.1 and 5.0 over TCP, TLS, WebSocket and secure WebSocket, so every explorer in this comparison connects without special configuration. For the bigger picture of hosting choices, read the guide to a cloud MQTT broker, and the public MQTT test broker page lists the shared limits in detail. To turn what you see in an explorer into application code, the MQTT client libraries guide is the next step, and mosquitto_pub and mosquitto_sub examples cover the scripted side.

Get Started with ConnectMQ

Create a private broker at app.connectmq.com on the free Serverless plan, no credit card required, and connect your favorite desktop explorer with the generated credentials. The portal adds a live topic explorer, dashboard and devices view organized by ISA-95 levels, so you can inspect traffic from any browser too.

Frequently Asked Questions

What is the best MQTT explorer desktop app?

For browsing a large topic tree, MQTT Explorer is hard to beat. For interactive publish-and-reply testing with MQTT 5, MQTTX is very convenient. If you use ConnectMQ, its desktop explorer and portal give you a consistent workflow across machines.

Can a desktop MQTT explorer connect to any broker?

Yes, as long as the app supports the broker's protocol version and transport. All the tools here speak standard MQTT and work with any compliant broker, hosted or self-run.

Is it safe to subscribe to # in an MQTT explorer?

On your own development broker, yes. On production or shared brokers it can overwhelm the app and expose more data than you need, so subscribe to a specific root instead.

Why do some topics show values immediately and others stay empty?

Topics with a retained message are delivered as soon as you subscribe. Others only appear when the next message is published.

Related articles

Best MQTT CLI Tools for Testing, Scripting and Debugging

A hands-on comparison of mosquitto_pub/sub, MQTTX CLI, HiveMQ MQTT CLI, the MQTT.js CLI, curl and mqttui, with the same test run against broker.connectmq.com so you can choose the right tool for scripting and debugging.

8 min read

All articles →

Your private MQTT broker is a few clicks away

Create an account, get your broker credentials and connect your first device — no servers to install, patch or scale.