# MQTT Viewer > MQTT Viewer is a free, open-source MQTT client for macOS, Windows and Linux, with a Docker image and a Home Assistant add-on for the browser. It connects to up to 10 brokers at once over TCP, TLS, mutual TLS or WebSocket, shows every topic in a live tree and a graph, charts numeric values, keeps message history on a timeline, monitors mosquitto, EMQX and VerneMQ from $SYS topics, clears retained messages, shows Sparkplug B networks live with metric names resolved from births, decodes Base64 and Hex payloads, and publishes with QoS, retain and MQTT 5 properties. Key facts: - Licence: GPL-3.0 (open source). Source: https://github.com/mqtt-viewer/mqtt-viewer - Price: free. Every feature is available at no cost. No account. - Platforms: macOS (Apple Silicon and Intel), Windows (x64 and ARM64), Linux (x86_64 and ARM64 as AppImage, deb, rpm, Flatpak and a Nix flake). Also a Docker image (web UI) and a Home Assistant add-on. - Protocols: MQTT v3.1.1 and v5; TCP, TLS, mutual TLS (client certificates), WebSocket (ws and wss, with path support). - Built with Go, Svelte and the Wails framework. Tested against two brokers at around 2,000 messages a second each. ## Pages - [Home](https://mqttviewer.app/): Overview and screenshots. - [Features](https://mqttviewer.app/features): Every feature, one page each, with screenshots. - [Download](https://mqttviewer.app/download): Downloads for macOS, Windows and Linux. - [Download for Mac](https://mqttviewer.app/download/mac): Apple Silicon and Intel builds. - [Download for Windows](https://mqttviewer.app/download/windows): Installers for Windows 10 and 11, x64 and ARM64. - [Download for Linux](https://mqttviewer.app/download/linux): AppImage, deb, rpm, Flatpak repository and Nix flake for x86_64 and ARM64. - [FAQ](https://mqttviewer.app/faq): Price, licence, platforms, protocols and capabilities. - [Changelog](https://mqttviewer.app/changelog): Release notes for every version since 0.7, newest first. - [Compare MQTT clients](https://mqttviewer.app/compare): MQTT Viewer vs MQTTX vs MQTT Explorer vs MQTT.fx. - [MQTT Explorer alternative](https://mqttviewer.app/mqtt-explorer-alternative): A maintained alternative to MQTT Explorer. - [MQTT.fx alternative](https://mqttviewer.app/mqtt-fx-alternative): A free, open-source replacement for MQTT.fx. - [MQTTX alternative](https://mqttviewer.app/mqttx-alternative): A lighter, broker-neutral alternative to MQTTX. ## Features - [MQTT topic tree](https://mqttviewer.app/features/topic-tree): Every topic on the broker in one tree, with counts, last values, filter and sort. - [MQTT graph of live topic traffic](https://mqttviewer.app/features/topic-graph): The topic namespace as a live graph. Size is message rate, colour is recency. - [MQTT message timeline and log](https://mqttviewer.app/features/message-timeline): Every message on a topic as a timeline, with hover previews and keyboard stepping. - [Chart MQTT payload values live](https://mqttviewer.app/features/charting): Plot numeric fields from JSON or bare numeric payloads over time, with pop-out windows. - [Mosquitto monitoring and MQTT broker status](https://mqttviewer.app/features/broker-status): $SYS metrics, health warnings, a traffic chart and the loudest topics, per broker. - [Dockable MQTT topic panel](https://mqttviewer.app/features/topic-panel): Payload, timeline, diff and chart for the selected topic, docked right, bottom or in a window. - [Clear retained MQTT messages](https://mqttviewer.app/features/topic-actions): Copy, export and clear retained messages from a right-click menu, with retained topics marked in the tree. - [MQTT client logs for each connection](https://mqttviewer.app/features/client-logs): A live, filterable log of the MQTT library's activity on each connection. - [MQTT message diff](https://mqttviewer.app/features/message-comparison): Diff a message against the previous one on the same topic. - [MQTT client memory use and history limits](https://mqttviewer.app/features/memory-budget): History stays inside a memory budget you set, with optional recording to disk. - [Saved MQTT messages and collections](https://mqttviewer.app/features/collections): Global folders shown on every connection, connection folders scoped to one, and drag and drop between them. - [Publish MQTT messages](https://mqttviewer.app/features/publishing): Publish with QoS, retain and MQTT 5 properties, and resend from a searchable history. - [Sparkplug B viewer](https://mqttviewer.app/features/sparkplug): A live tree of Sparkplug B groups, edge nodes, devices and metrics, with aliases resolved to names from NBIRTH and DBIRTH, seq gaps, rebirth storms and offline nodes flagged, and confirmed rebirth requests. A passive viewer, never a host application. - [Sparkplug B and MQTT payload decoding](https://mqttviewer.app/features/payload-decoding): Sparkplug B, Base64 and Hex decoding, JSON formatting and image previews. - [MQTT connections over TCP, TLS and WebSocket](https://mqttviewer.app/features/connections): Up to 10 connections over TCP, TLS, mutual TLS or WebSocket, MQTT 3.1.1 and MQTT 5. - [MQTT web client in Docker and Home Assistant](https://mqttviewer.app/features/web-ui): The full app served over HTTP from a Docker image, plus a Home Assistant add-on. - [Install MQTT Viewer on macOS, Windows or Linux](https://mqttviewer.app/features/installing): macOS, Windows x64 and ARM64, and Linux as AppImage, deb, rpm, Flatpak or Nix. ## Tools - [MQTT tools](https://mqttviewer.app/tools): Browser tools and quick references for working with MQTT. - [MQTT wildcard tester](https://mqttviewer.app/tools/mqtt-topic-wildcard-tester): Test + and # subscription patterns against sample topics in the browser. - [MQTT payload decoder](https://mqttviewer.app/tools/mqtt-payload-decoder): Decode JSON, Base64, hex and text MQTT payloads in the browser. - [MQTT cheat sheet](https://mqttviewer.app/tools/mqtt-cheat-sheet): QoS levels, control packets, wildcards, default ports, retained messages, Last Will, sessions, keep alive and MQTT 5 reason codes. ## Learn - [MQTT ports](https://mqttviewer.app/learn/mqtt-ports): MQTT ports 1883, 8883, 8080, 8081 and 9001, and which one to use. - [MQTT QoS levels](https://mqttviewer.app/learn/mqtt-qos): MQTT QoS levels 0, 1 and 2 and when to use each. - [$SYS topics](https://mqttviewer.app/learn/mqtt-sys-topics): What each broker publishes under $SYS: mosquitto, EMQX, VerneMQ and others, in one table. - [Retained messages](https://mqttviewer.app/learn/mqtt-retained-messages): What a retained MQTT message is and how to clear one, including in bulk. - [Sparkplug B explained](https://mqttviewer.app/learn/sparkplug-b): The spBv1.0 topic namespace, births and deaths, bdSeq, aliases, seq numbers, rebirth requests, STATE and common faults. - [MQTT glossary](https://mqttviewer.app/learn/mqtt-glossary): Plain-English definitions of MQTT concepts (QoS, retained messages, LWT, topics and wildcards). - [Best free MQTT clients in 2026](https://mqttviewer.app/best-mqtt-clients): Comparison of the leading MQTT desktop clients. - [Debug ESP32 / ESP8266 MQTT messages](https://mqttviewer.app/use-cases/esp32-mqtt-debugging): Verify what a device publishes. - [Home Assistant MQTT](https://mqttviewer.app/use-cases/home-assistant-mqtt): See every MQTT message in Home Assistant, as a desktop app or a Home Assistant add-on, and clear stale discovery configs. ## Answers - Q: Is MQTT Viewer free? A: MQTT Viewer is free and open source under the GPL-3.0 licence. There are no paid tiers, trials, accounts or sign-ups. Every feature is available to everyone. - Q: Which platforms does MQTT Viewer run on? A: MQTT Viewer is a native desktop application for macOS (Apple Silicon and Intel), Windows (x64 and ARM64) and Linux (x86_64 and ARM64). Linux builds ship as AppImage, deb, rpm, Flatpak and a Nix flake. - Q: Does MQTT Viewer support MQTT 5? A: MQTT Viewer supports MQTT v3.1.1 and MQTT v5, including publishing with MQTT v5 properties such as content type, response topic, correlation data, message expiry and user properties. - Q: Can I connect to more than one broker at the same time? A: MQTT Viewer keeps up to 10 broker connections open at once, each in its own tab with its own topic tree, history and saved messages, so development, staging and production can sit side by side. - Q: Can MQTT Viewer run in a browser or on a server? A: The same app runs headless as an HTTP server and ships as the Docker image ghcr.io/mqtt-viewer/mqtt-viewer, serving the topic tree, timeline, charts, collections and publishing to a browser. A Home Assistant add-on packages it to run next to the Mosquitto add-on. There is no built-in login, so it belongs on localhost, a trusted network, or behind an authenticating proxy. - Q: Does MQTT Viewer support Sparkplug B? A: MQTT Viewer decodes Sparkplug B and keeps every NBIRTH and DBIRTH for the session, so data messages that only carry aliases show real metric names. A Sparkplug view shows groups, edge nodes, devices and metrics live, flags seq gaps, rebirth storms and offline nodes, lists host applications from STATE, and can request a rebirth after a confirmation. It never acts as a host application. ## Source - [GitHub repository](https://github.com/mqtt-viewer/mqtt-viewer): Source code, issues and releases. - [Releases](https://github.com/mqtt-viewer/mqtt-viewer/releases): Latest version, release notes and checksums. ## Contact - Email: sam@mqttviewer.app