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.
To receive alert messages on Telegram you need to provide your Telegram Chat ID. This is a one-time setup in Settings:
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_IDOne message is stored per subscription every 5 seconds. Messages arriving faster are received but not saved. This prevents database flooding โ at 10s intervals your data is still rich enough for monitoring and charting.
The dashboard shows the last 50 messages. The API can return up to 200 with ?limit=200. Older messages remain in the database โ they're not deleted, just not shown in the default view.
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.