Find busy MQTT topics with the graph

Spot a busy branch, expand its parents and follow the traffic down to a single topic. Learn how node size, heat and collapsed totals tell you where to look.

About 6 minutes · MQTT Viewer 1.2 · Desktop and web; recorded in the web UI

Before you start

Open a connected broker in MQTT Viewer and subscribe to the topics you want to explore. Let some messages arrive first. This example uses a local test broker with sample factory and office traffic at different message rates.

1. Watch the graph in action

Follow factory/line-1/press/temperature from a collapsed parent to its payload. This is a recording of MQTT Viewer receiving live MQTT messages from a sample publisher.

No audio. On-screen captions explain each step. The same sequence is described below.

2. Open the live graph

In the received-topic panel, switch from List to Graph. The graph uses the topics this connection has received. It builds the hierarchy from the / levels in each topic name, with parents on the left and children to the right.

A message on factory/line-1/press/temperature creates the path through factory, line-1 and press. Those parents can exist even when no messages are published to their exact names.

Start with the branches collapsed and Busiest first selected. Click Fit graph to view if any nodes are off screen.

3. Read size, heat and branch totals

Size shows message rate. A larger circle means more messages per second, smoothed over time. It does not represent payload bytes or the number of child topics. Use the hover details to read the actual rate; the circles have a maximum size.

Heat shows recency. In the default palette, a newly received message makes a node hot. Its colour then cools towards the idle end of the legend. A small, hot node may have received a single recent message. A large node indicates sustained or recent heavy traffic.

A collapsed parent rolls up the whole branch. Its size uses the sum of its own message rate and all descendant rates. Its heat follows the most recent message anywhere in that branch. Rates add together; colours do not.

The outline ring marks a collapsed aggregate. The +N badge counts the descendant topic nodes hidden beneath it, across all levels. It is not a message count or a count of immediate children.

Collapsed factory node with a +10 badge and hover details identifying a subtree total
Hover a collapsed parent to see its full path, subtree rate, last activity and message count. Full size (opens in a new tab)

For example, if temperature sends 20 messages/s and vibration sends 2 messages/s, their collapsed parent press represents about 22 messages/s once the rate settles. A message from either child refreshes the parent's heat. If press also receives 1 message/s directly, its collapsed total is about 23 messages/s.

4. Follow a busy branch

Click the large collapsed factory circle. It expands and brings its children into view. Compare line-1 with line-2: the larger collapsed node points towards more traffic.

Expanded factory parent is a small junction, while line-1 is a larger collapsed node than line-2
Factory now shows its own traffic. The collapsed line nodes still summarise everything below them. Full size (opens in a new tab)

Click line-1, then the larger press node. Each expansion reveals another level, so you can walk the busy chain without opening the entire namespace.

An expanded parent shows only messages sent to that exact topic. A parent used only as a path becomes a small junction dot. A parent that also receives messages keeps a circle sized and coloured by its own traffic. The children's activity is visible on their separate nodes.

Press expanded into a large temperature node and a smaller vibration node
The temperature leaf is the main source of traffic under press. Its sibling vibration is active but quieter. Full size (opens in a new tab)

Use the small triangle beside a parent to collapse it again. Its circle returns to the combined branch rate and most recent activity. The traffic stays visible even when the children are hidden.

If a large parent shrinks when you expand it, the messages have not stopped. You have changed from reading the branch total to reading that parent's own traffic.

5. Inspect the source

Hover a node to see its full topic path, message rate, time since the last message and message count. The scope says subtree total for a collapsed branch and this topic only for an expanded parent.

Click a leaf such as temperature to open its topic panel. Inspect the payload, compare messages or chart a numeric value to work out what the publisher is sending. Clicking a collapsed parent first expands it; clicking an already expanded node selects its own topic.

Temperature selected in the graph with its JSON payload open in the topic panel
Follow the visual activity to a topic, then inspect the actual message. Full size (opens in a new tab)

Right-click a node for topic actions, including copying its path and pinning it. Pin a topic you want to return to while exploring other branches.

7. Tune the graph for your traffic

Open the graph's settings menu to adjust how activity is displayed. These settings are saved per connection.

Recency window
Controls how long a node takes to cool to idle. Use a shorter window to distinguish frequent updates, or a longer one for sensors that publish minutes apart. This changes the colour display, not message retention.
Rate smoothing
A shorter interval reacts faster to a burst. A longer interval gives a steadier view of sustained traffic. The displayed rate may take time to settle after traffic starts or stops.
Max node size
Limits how large busy circles can grow. Hover to compare exact rates when several nodes reach that limit.
Follow hottest topic
Keeps the view following recent activity. Leave it off when you want to stay on a branch while investigating.
Legend and colour-blind safe palette
Keep the legend visible while learning the graph. Switch palettes if the default colours are hard to distinguish.

If the graph is empty or difficult to read

Clear Filter topics and click Fit graph to view. Check List to confirm messages have arrived and your subscriptions match the expected topics. The graph describes traffic received by this connection, not everything happening on the broker.

If every node looks hot, shorten the recency window and compare sizes and hover rates. If the graph is crowded, collapse branches and follow one path at a time. A cold node means no recent message within the chosen window; it does not prove the device is offline.