Display messages in the debug sidebar panel. Essential for testing, troubleshooting, and understanding message flow.
Overview
The debug node is your window into the flow. It displays message contents in the debug sidebar, making it indispensable for:
- Testing flows - Verify nodes produce expected output
- Troubleshooting - Find where data gets corrupted or lost
- Understanding data - See the structure of incoming messages
- Monitoring - Watch real-time values during operation
You can have multiple debug nodes throughout your flow to trace data as it transforms. Debug nodes can be enabled/disabled without redeploying the flow.
Properties
| Property | Type | Required | Default | Description |
|---|---|---|---|---|
name | string | - | - | Display name for this node in the editor. |
active | boolean | - | true | Whether debug output is active. Can be toggled without redeploying. |
tosidebar | boolean | - | true | Show messages in the debug sidebar panel. |
console | boolean | - | false | Log messages to the system console (stdout). |
tostatus | boolean | - | false | Show a short summary as the node status text. |
complete | string | - | payload | What to display: "payload" (msg.payload), "true" (complete msg), or a property path. |
targetType | string | - | msg | Type of output: "msg" (message property), "full" (complete message object). |
statusVal | string | - | - | Property to display as node status when tostatus is enabled. |
statusType | string | - | auto | Status value type: "auto", "msg", "flow", "global". |
Debug Panel
The debug sidebar shows messages from all active debug nodes. Each message displays:
Debug Message Components
Click the button on a debug node to quickly enable/disable it without redeploying. The node turns grey when disabled.
Output Options
Configure what the debug node displays:
Shows just the payload property. Best for most use cases where you care about the data.
Shows the entire message object including topic, _msgid, and all custom properties. Useful for debugging message routing and metadata.
Shows a specific property path like payload.temperature
or req.headers.
Examples
Basic Payload Debug
The most common use case - debug the payload to verify data flow.
Sensor Data Debug
Displays temperature readings as they flow through.
View Flow JSON
[
{
"id": "inject1",
"type": "inject",
"name": "Simulate Sensor",
"payload": "23.5",
"payloadType": "num",
"repeat": "5",
"wires": [["debug1"]]
},
{
"id": "debug1",
"type": "debug",
"name": "Temperature",
"active": true,
"tosidebar": true,
"console": false,
"complete": "payload"
}
] Full Message Object
View the complete message to debug routing and metadata issues.
Full Message Debug
Shows the entire message object including topic and msgid.
View Flow JSON
[
{
"id": "mqtt1",
"type": "mqtt-in",
"name": "Sensor",
"topic": "sensors/temp",
"wires": [["debug2"]]
},
{
"id": "debug2",
"type": "debug",
"name": "Full Message",
"active": true,
"tosidebar": true,
"complete": "true",
"targetType": "full"
}
] Node Status Display
Show a value as the node status for at-a-glance monitoring.
Status Display
Shows current temperature as the debug node's status.
View Flow JSON
[
{
"id": "sensor1",
"type": "dht22",
"name": "DHT22",
"wires": [["debug3"]]
},
{
"id": "debug3",
"type": "debug",
"name": "Temp Status",
"active": true,
"tosidebar": true,
"tostatus": true,
"complete": "payload.temperature",
"statusVal": "payload.temperature",
"statusType": "msg"
}
] Best Practices
1. Name Your Debug Nodes
Give each debug node a descriptive name. When you have multiple debug nodes, names help identify which part of the flow produced each message.
2. Use Multiple Debug Points
Place debug nodes at key points in your flow: after input, after transformation, before output. This helps isolate where problems occur.
3. Disable in Production
Debug nodes consume memory storing messages. Disable them in production or use the console output option for server-side logging.
4. Use Status for Monitoring
Enable "show status" to display values directly on the node. Great for dashboards where you want to see values at a glance in the editor.
5. Filter High-Volume Data
For high-frequency data, add a filter or sample node before debug to avoid flooding the debug panel and browser memory.
Troubleshooting
Debug panel not showing messages
- Check if the debug node is enabled (not greyed out)
- Verify "output to debug panel" is checked
- Make sure the flow is deployed
- Check the debug panel filter isn't hiding messages
- Verify messages are actually reaching the debug node (check wiring)
Browser becomes slow with debug
Too many debug messages can overwhelm the browser:
- Clear the debug panel regularly
- Disable debug nodes you're not actively using
- Use console output instead for high-volume debugging
- Add a delay or filter node to reduce message frequency
Shows [object Object] instead of data
Click on the message in the debug panel to expand it. Objects are collapsed by default. You can also click the arrow to copy the path to a specific property.
Buffer data shows as numbers
Buffer data displays as byte values. To see as string, convert before debug:
msg.payload = msg.payload.toString('utf8');
return msg;