Test and debug MQTT

Connect, publish and inspect MQTT from your desktop, terminal or browser.

MQTTX Desktop showing received JSON sensor messages

Every broker in one sidebar

Group them, keep several open, see which are live.

Connection guide

zsh · CLI

  • MQTT 5.0, 3.1.1 and 3.1

    TCP, TLS and WebSocket, two-way TLS included.

  • Separate windows

    Watch two brokers side by side in separate windows.

  • Reuse it in the CLI

    Save once, then load with --load-options.

A chat view for MQTT traffic

Sent on the right, received on the left, colored by subscription.

  • Color-coded subscriptions

    Each topic filter gets its own color.

  • Search and highlight

    Find messages by topic or payload, highlighted in place.

  • Timed messages

    Publish on an interval to keep data flowing.

  • Full logs

    Every connect, publish and error, logged for debugging.

Read any payload

Switch formats on the fly. Gzipped messages are inflated first.

Base64

eyJ0ZW1wIjoyMy41LCJodW0iOjYxfQ==

Original data

{
  "temp": 23.5,
  "hum": 61
}
  • Six formats

    Publish and view as Plaintext, JSON, Base64, Hex, CBOR or MsgPack.

  • Protobuf and Avro

    Encode and decode with your own schema.

See your topics and traffic

Topic tree, charts, message rates and payload diffs, all live.

Script your test data

Shape messages with JavaScript, in the app or the CLI.

  • Custom scripts

    Transform payloads on publish or receive.

  • Built-in scenarios

    mqttx simulate ships ready-made IoT data, like a Tesla fleet.

function handlePayload(value) {
  const data = JSON.parse(value)
  data.temp = +(data.temp * 1.8 + 32).toFixed(1)
  data.unit = 'F'
  return JSON.stringify(data, null, 2)
}

execute(handlePayload)

Input

{"temp": 23.5, "hum": 61}

Output

{"temp": 74.3, "hum": 61, "unit": "F"}

Test MQTT from your terminal

Publish, subscribe, benchmark and simulate from any shell.

mqttx sub -t 'sensors/#' -h broker.emqx.io
zsh · MQTTX CLI

mqttx sub

❯ mqttx sub -t 'sensors/#' -h broker.emqx.io -v

✔ Connected

topic:sensors/room2/humpayload:{"hum":62}
topic:sensors/room1/temppayload:{"temp":23.7}
topic:sensors/room2/temppayload:{"temp":24.0}
topic:sensors/room1/humpayload:{"hum":63}
topic:sensors/room1/temppayload:{"temp":24.1}

mqttx pub

❯ mqttx pub -t 'sensors/room1/temp' -m '{"temp":24.1}' -h broker.emqx.io

✔ Message published

❯ ▋

ℹ Start the publish benchmarking, connections: 1000, req interval: 10ms, message interval: 10ms

✔ Connected 1000/1000

ℹ Published total: 0, message rate: 0/s

❯ ▋

ℹ Start simulation publishing, scenario: tesla, connections: 10

✔ Connected 10/10

ℹ Published total: 1,240, message rate: 52/s

❯ ▋

MQTTX Agent

Ask in plain language. The Agent works in MQTTX and you see every step.

  • Your connection and message lists update as it works.
  • Type / for Skills, or add MCP servers for your own tools.
  • 20 providers built in. Use your own API key.
OpenAIClaudeDeepSeekGeminiQwenKimiGrokMistral
Read the Agent docs

And more

|

Browser-based

Use MQTTX Web online or host it with Docker.

JSON CSV Excel XML YAML

Backup and restore

JSON, CSV, Excel, XML or YAML.

Three themes

Light, Dark and Night.

🇺🇸 English

Six languages

English, Chinese, Japanese, Turkish, Hungarian and Korean.

Download MQTTX

Free and open source for macOS, Windows and Linux.

$curl -fsSL https://emqx.sh/mqttx | sh