MQTT Toolbox

The Best MQTT Client Tools

Here’s a collection of the best MQTT client tools for different platforms to help you quickly get started with MQTT application development and testing. From MQTT beginners to experts alike, you can use these tools to establish connections to MQTT brokers and to publish and subscribe to different MQTT topics easily. Learn directly from the creators of the tools on how to use them in your day-to-day work with MQTT.

Table of Contents

MQTT CLI for Windows, MacOS, Debian/Ubuntu

The MQTT CLI is an open-source Java MQTT client tool that enables you to interact quickly and easily with any MQTT Broker in various ways. The CLI gives you a single compact tool for the most important client operations (Publish and Subscribe). The CLI tool also provides an interactive and comfortable SHELL mode that enables you to work with multiple MQTT clients in parallel and supports connection handling. The MQTT CLI supports all MQTT features for MQTT version 5 & MQTT version 3.1.1. The tool uses the HiveMQ MQTT client library, which is a fast, low-overhead, high-throughput, and modern MQTT library written in Java. The MQTT CLI comes in various binary packages that can be downloaded from the documentation homepage on GitHub.

Learn more about MQTT CLI for Windows, MacOS, Debian/Ubuntu

HiveMQ MQTT Client

The HiveMQ MQTT Client is a Java library that is available under the Apache license on GitHub. It is designed for high-performance so it is very useful for server-side MQTT clients that integrate enterprise systems. This MQTT client is compatible with MQTT 3.1.1 and MQTT 5. It provides a fast, low-overhead, high-throughput and modern MQTT library for Java by building on modern frameworks, like Netty, for handling networking and RxJava for handling the asynchronous streaming of messages. It was created with backend applications in mind, but can be used in any Java-based project. The library provides three distinct flavours of API: blocking, asynchronous and reactive. This means you can choose a programming style which best meets your use-case. For example, for a very simple application which just starts up, sends some messages in order and shuts down again, the blocking API fits very well. For backend applications the asynchronous API will fit for most scenarios. If you want full access to all of the features the library provides, then the reactive API is the way to go. Download if for free from the HiveMQ GitHub repo.

MQTT.fx for Mac OSX, Windows and Linux and MQTT.fx Extras

The MQTT.fx has been around since 2014 and built its fan base in our team. It comes with the portability of the Java VM and an impressive feature set. MQTT.fx is implemented with JavaFX. Due to the native packaging available for JavaFX, there are binaries for Windows, MacOSX and Linux, which makes the installation a breeze. Besides, standard publish/subscribe functionality, it provides support for $SYS topics and connection profiles for connecting to different brokers. The $SYS topic support helps to inspect the internals of the broker from time to time. The connection profiles allow the configuration of connection options, such as client ID, SSL/TLS, username/password, and Last Will and Testament. This MQTT client also supports scripting. This makes the simulation of different sensors, etc. easy. Additionally, it is possible to view publisher and subscriber simultaneously by detaching one of the tabs.

MQTT.fx - Broker status via $SYS-topics

MQTT.fx - Broker status via $SYS-topics

Learn more about MQTT.fx for Mac OSX, Windows and Linux

mqtt-spy for Windows, Linux, Mac

The mqtt-spy has been around since 2014 and as of early 2016 is part of Eclipse Paho and Eclipse IoT. It ships as a JAR file and runs on top of Java 8 and JavaFX. The mqtt-spy client displays the basic MQTT publish/subscribe mechanism. It makes it easy to publish and subscribe at the same time. There are different tabs for connections to several brokers. The different areas of the pub/sub window (publish, new subscription, subscription & messages) can be closed down to make room for the currently used ones. Its search functionality allows to you to find and filter the often heavy load of MQTT messages running through such a tool. Additionally, the mqtt-spy logs every published and received message in the standard output and into a file. So it is easy to open the file in any text editor and make deeper analysis of the messages, which is often necessary when dealing with many MQTT messages. It also comes with advanced features like scripting, filtering & searching, decoding & formatting received messages and graphing/charts.

mqtt-spy publish/subscribe

mqtt-spy publish/subscribe (source: github.com/eclipse/paho.mqtt-spy)

Learn more about mqtt-spy

MQTTInspector for Mac OSX, Windows and Linux

The MQTTInspector is a great tool for any iOS device. It is especially suited for power users. It is possible to create and store connection options, similar to most of the other tools. It allows to pre-configure publishes and subscriptions as templates. After connecting to the broker, a simple click activates a subscription or triggers a publish. Therefore it is good to know beforehand to which topics MQTTInspector should publish or subscribe to. It is possible to change this during an open connection. As a power user tool, it allows you to switch between a simple message feed, a view grouped by topic and a low level view.The low level mode shows low-level MQTT command messages, some basic data, and its representation in hex. It also allows you to filter the message by their topic, attributes or payload. This is very handy when a lot of messages arrive and only some of them are of interest. MQTT Inspector on iPad

MQTT Inspector on iPad (source: jpmens.net/2013/11/19/mqtt-inspector-for-ios/)

Learn more about MQTT Inspector

MyMQTT for Android

The Android App MyMQTT can be installed via the Google Play Store. It is a useful app that has basic publish and subscribe capabilities. A functionality which differentiates this app from others is its ability to store messages on the phone. These are shown in the menu under “Stored Messages.” MyMQTT Android App. Picture from Google Play Store

MyMQTT Android App (Picture from Google Play Store)

HiveMQ WebSocket Client

The HiveMQ WebSocket Client is a simple and clean open-source mqtt client tool. It was made while implementing the native websocket support for HiveMQ. After websockets were introduced in HiveMQ, we decided to improve this app a little bit and made it available to everybody as open source. This application is also a perfect starting point to build your own app with the Eclipse Paho JavaScript library. It is a full-fledged MQTT client, which supports all common protocol features except persistent session. The visualization of the different subscription is colorized and the predefined defaults make it possible to publish and receive a message with 3 clicks and no input (Connect, Add New Topic Subscription, Publish). It can also connect to local brokers, when using a local IP address or hostname. The tool particularly comes handy when a MQTT connection over Websockets should be tested or a tool is needed without prior installation. It works in every modern browser and on most operating systems, including iOS and Android.

HiveMQ Websocket Client

HiveMQ Websocket Client

MQTTlens for Windows, Linux & MacOSX

The MQTTlens was developed during the Google Summer of Code 2014. It can be easily installed through the Google Chrome App Store. The tool has a pretty clean interface and supports all the available connection options from the MQTT spec, except persistent sessions. It accepts connections to more than one broker at the same time and colors them differently for easy association. The interface for subscribing, publishing and seeing all received messages is simple and easy to grasp. However, there’s no possibility to publish retained messages. Although this app is installed via Chrome, it runs as standalone application and can also connect to brokers via the plain MQTT port 1883, which can’t be done by pure JavaScript Web clients. It also features a display of JSON payloads. In summary, MQTTlens is particularly well suited for people who need basic pub/sub functionality.

MQTT Lens - pub/sub view

MQTT Lens - pub/sub view

Learn more about MQTTLens

MQTTBox for Windows, Linux & MacOSX

MQTTBox is a helper program to develop and load test MQTT based clients, brokers, devices, cloud and apps. Every aspect of MQTTBox is specifically designed to maximize development and testing productivity. Together, with MQTT clients and load testing tools integrated, its powerful enough to supercharge your MQTT workflow. MQTTBox is available as a Chrome App and as a Web app. You can find the Github code here for customization.

Learn more about MQTTBox

MQTT Client Chrome App for Windows, Linux & MacOSX

MQTT Client is a Chrome application, which is free and open source. It supports Windows, Linux & MacOSX operating systems, and helps debug MQTT messages.

Learn more about MQTT Client Chrome App

MacOSX MQTT.app

If you are using MacOSX as your development operating system, you should definitely give MQTT.app by 2lemetry a try. It’s very handy for publishing and subscribing and displays all subscriptions in one stream. If you don’t want to see all topics at once, you can hide certain ones from the stream with a click (topic color is now gray). When you click on the topic once again, it is displayed in the stream again. The assignment of various colors to different topic subscriptions makes it easy to distinguish the received messages by topic. The tool has the possibility to connect to a MQTT broker with username and password, which is helpful if you want to test the authentication of a broker. For example, HiveMQ with the File Authentication Plugin.

Mosquitto_pub/sub

mosquitto_pub and mosquitto_sub are useful command line clients. These clients can be used to publish messages or subscribe to topics. They are distributed with mosquitto and are available for most operating systems, including Windows, Linux and MacOSX. You can download the clients here. With mosquitto_pub, you can publish files. SSL is supported on both of them. One of the drawbacks of mosquitto_sub is that it cannot handle massive message throughput and is not suitable for stress test scenarios. mosquitto_pub and mosquitto_sub are very handy utilities and should be in the toolbox of everyone interested in MQTT.

Android MyMQTT

MyMQTT for Android is a useful app which can publish and subscribe directly from your Android phone or Android tablet. The app is very useful for sending or receiving MQTT messages “on the go”. If you want to test your locally installed HiveMQ MQTT broker, your Android device needs to be in the same network as your broker, because MyMQTT does not run locally on your computer. However, it is still very useful in testing, if you want to try whether your broker is reachable through the internet, when configuring port forwarding or similar approaches. Generally it is interesting for everyone who wants to play around with MQTT and owns an Android device.

MyMQTT Android App. Picture from Google Play Store

MyMQTT Android App (Picture from Google Play Store)