MQTTBridge sits between your device and your browser. It maintains a live MQTT connection to your broker so you don't have to manage one yourself.
Your PLC, ESP32, Raspberry Pi, or any MQTT-capable device publishes messages to a topic on an MQTT broker โ public or private.
MQTTBridge connects to your broker and subscribes to your topic. Every incoming message is decoded according to your chosen format (JSON, Hex, Binary, or Plain) and stored with a timestamp.
Your dashboard reads from the database via Supabase Realtime โ messages appear the moment they arrive. Switch to dashboard view for live value tiles and a time-series chart.
Go to the Sign Up page and register with an email and password. You'll receive a confirmation email โ click the link to activate your account, then sign back in.
MQTTBridge connects to your broker โ it doesn't host one. You need a broker your device already publishes to, or you can point your device at one of these free public brokers:
mqtt://broker.emqx.iomqtts://broker.emqx.ioPort 1883 ยท TLS: 8883mqtt://broker.hivemq.commqtts://broker.hivemq.comPort 1883 ยท TLS: 8883yourname/project/sensor to avoid accidentally receiving other users' messages.Once signed in, open your Dashboard and click + New Subscription. Fill in the form:
Click Subscribe โ and the backend connects to your broker immediately. The subscription appears in your dashboard sidebar within seconds.
Your device (PLC, ESP32, Raspberry Pi, Node-RED, or any MQTT client) publishes to the same broker and topic you registered. Here are working examples for common platforms:
Select your subscription in the sidebar. Messages appear in real time as they arrive, translated into readable values. The topbar shows connection status, message count, and controls.
Choose the format that matches what your device sends when creating a subscription. Every message is decoded automatically โ no code needed on your end.
MQTTBridge is two-way. You can publish a message to your broker from the dashboard or via the API โ useful for sending commands, resetting values, or triggering actions on your device.
factory/sensor/temp but you publish a command to factory/device/control โ as long as both are on the same broker.Set threshold rules per subscription. When a message triggers a rule, you're notified on your dashboard and optionally via Telegram.
When a condition that triggered an alert is no longer met, MQTTBridge automatically sends an โ All Clear notification โ both on the dashboard and via Telegram โ so you know the issue has resolved without checking manually.
You can add up to 5 named Telegram recipients per account โ your own phone, a colleague, a group chat, or any combination. Every alert fans out to all of them simultaneously. Each can be tested individually from Settings.
Enable email delivery on any alert rule by ticking the Email (5/day) checkbox when creating the rule. You'll receive a branded email showing the rule name, triggering value, subscription, timestamp, and a direct link back to your dashboard.
Separate from alert rules, the dashboard chart automatically detects statistical outliers in your data using the 2-standard-deviation rule โ no configuration needed.
Click the ๐ bell icon in the sidebar footer to open the notification centre โ a slide-in panel showing all recent alert activity with full filtering and search.
If a single device publishes to several topics โ temperature, humidity, pressure, battery โ you can group those subscriptions together under one name. The group appears as a collapsible section in your sidebar with a colour dot and count badge.
Click "๐ฆ Groups" in the sidebar, then "Create Group". Give it a name (e.g. "Weather Station") and pick a colour. Existing subscriptions appear as checkboxes โ tick to assign.
Click the ๐ icon on a group header to generate one shared link for all subscriptions inside it. Recipients see a sidebar listing each subscription and can switch between them.
When sharing โ whether a single subscription or a group โ you can optionally set a password. Recipients see a lock screen before the dashboard loads. Leave the field empty for a public link.
Generate a personal API key and pull live or historical sensor data into any frontend, script, or automation tool โ no backend or session needed.
Every API request for messages or publishing requires your subscription ID โ a UUID that identifies which subscription you're referencing. There are two ways to get it:
GET /api/subscriptions with your API key โ it returns all your subscriptions including their IDs.All endpoints use the header x-api-key: mqttb_your_key_here. Click any endpoint to expand the full details.
Replace the highlighted variables with your own values. Your API key starts with mqttb_ and is found in Settings โ API Keys.
YOUR_API_KEYYOUR_BACKEND_URLSUBSCRIPTION_IDWebhooks let MQTTBridge push every incoming message to a URL of your choice โ automatically, in real time. Use them to connect to Home Assistant, n8n, Zapier, or your own backend.
{
"subscription_id": "uuid",
"topic": "sensors/temp",
"format": "json",
"raw_payload": "{"temp":23.4}",
"translated_payload": "temp: 23.4",
"received_at": "2026-06-09T12:00:00Z"
}If you add a signing secret, every request includes an X-MQTTBridge-Signature header containing an HMAC-SHA256 of the request body. Verify it on your server to confirm the request came from MQTTBridge and wasn't tampered with.
Open a persistent WebSocket connection to receive every message the moment it arrives โ no polling, no delays.
Each message pushed to your client contains the same fields as the webhook payload โ plus a type field that is connected on the first frame and message on every subsequent frame.
{
"subscription_id": "uuid",
"topic": "sensors/temp",
"format": "json",
"raw_payload": "{"temp":23.4}",
"translated_payload": "temp: 23.4",
"received_at": "2026-06-09T12:00:00Z"
}4001Missing API key โ add ?key=your_key to the URL4003Invalid API key โ check your key in Settings4004Subscription not found or you do not own it4029Too many connections from your IP โ wait 1 minute1001Server restarting โ reconnect after a few secondsOne message is stored every 2 seconds per subscription โ the latest reading in each window. This prevents database flooding while still giving you up to 30 readings per minute, which is rich enough for live monitoring and charting.
The free plan stores up to 1,000 messages per subscription, retained for 30 days. The dashboard shows 50 at a time with "Load older messages" pagination. The API returns up to 100 per request with cursor-based pagination.
If a broker connection drops, the backend reconnects automatically using exponential backoff โ 5s, 10s, 30s, 60s. After 10 failed attempts the subscription is marked inactive and you're notified via Telegram if configured.
When you pause a subscription the backend cleanly disconnects from that broker+topic. No messages are received or stored until you resume.
A background process checks every 30 seconds that in-memory connection state matches the database. This self-heals any drift after server restarts.
API request bodies are capped at 10 KB. Published payloads are capped at 64 KB separately. This prevents abuse and protects the backend from oversized payloads.
Create your free account and have live data on your dashboard in under 5 minutes.