Local mesh diagnosis
Zigbee network map visualizer
Drop in a Zigbee2MQTT network-map export or a ZHA diagnostics dump and this page draws your own mesh: which devices route and which are end devices, the weakest links on the network, and every device that hangs off a single parent. The JSON is read in this browser tab — no upload, no account, no server sees your device list.
Ring 0 is the coordinator; each ring outwards is one more hop. Select a device to see what it can hear.
Single-parent devices
These have exactly one router or coordinator they can talk to, so there is no second path if that link degrades.
Backbone risk
Routers carrying children on a single uplink, and devices with no router neighbour at all.
Weakest links
Both directions of the same physical link are collapsed to the stronger reading, so a link appears once.
| Device | Neighbour | LQI | Band | Depth |
|---|
How this page reads link quality
| Band | LQI | What we do about it |
|---|---|---|
| Strong | 130+ on the 0–255 scale | Nothing to do. |
| Fair | 80–129 | Fine for an end device; watch a router on this link. |
| Weak | 40–79 | Expect retries and slow responses. |
| Fragile | below 40 | Devices here drop off the mesh. |
House rules reviewed 2026-10-04, applied to a 0–255 LQI. If your export tops out at 100 the thresholds are scaled to match.
What this tool does
Zigbee networks are self-healing: mains-powered devices act as routers and pass messages for the battery devices around them. That is wonderful until a link goes bad, at which point devices quietly drop off and nothing in the app tells you why. This page reads the export your own stack already produces and turns it into the picture the stack does not draw for you:
- Roles. Which devices are routers, which are end devices, and where the coordinator sits.
- Weakest links. Every link ranked by link quality indicator (LQI), lowest first.
- Single-parent devices. Devices that can only reach one router — the ones with no failover path.
- Backbone risk. Routers that carry children on one uplink, and devices with no router in range at all.
How the parent is worked out
Only the coordinator and routers can relay traffic; end devices are leaves. So for every device the page collects the coordinator and router neighbours it has a link to, treats those as its candidate parents, and marks the strongest one as the parent the mesh will most likely choose. The counts follow from that:
- One candidate — a single parent, listed under single-parent devices.
- Two or more — the device can fail over to another router.
- None — the device has no router neighbour at all, which is the state that precedes a drop-off.
An export usually lists the same physical link from both ends, often with two different readings, so each pair is collapsed to the stronger of the two. That keeps one bad reading from being counted twice.
What to do with the result
- Start with the routers, not the sensors. A weak link between two mains-powered devices affects everything behind them. Our coordinator guide covers the hardware and placement side.
- Move the coordinator before you move anything else. On a large Zigbee network, a 1–2 m USB 2.0 extension cable to get the stick away from the server's USB 3.0 ports and SSDs often does more than any other single change.
- Look at what the fragile devices have in common. If they are all in one corner, the fix is a router — a mains-powered plug — in that corner, not a setting.
- Re-export after the change and compare. LQI moves when the physical layer moves, and this page is a before/after picture, not a one-off report.
Limitations
- No live connection: the page only sees the file you give it. It cannot query your coordinator, and it does not fetch anything.
- A single ZHA diagnostics download only contains the neighbours that one device can hear. For a whole-home map, download diagnostics from several mains-powered devices and paste them together as a JSON array.
- Zigbee2MQTT and ZHA have both changed their export shapes between versions. The parser reads the common field spellings and tells you when it skips an entry, but a future version could rename something it does not know yet.
- LQI is an unnormalised 0–255 figure, not a percentage and not a standardised quality score, so the band boundaries are house rules rather than a specification.
- The layout is a radial diagram of hop distance, not a floor plan. A device drawn near the centre is not necessarily physically close to the coordinator.
- Files pasted here are held in memory for the page session only. Nothing is written to your browser storage.
FAQ
Where do I get a Zigbee2MQTT network map export?
In the Zigbee2MQTT frontend open the Map tab. The map toolbar has a download/export control that saves the graph as JSON with nodes and links arrays. That file is exactly what this page expects.
How do I get a ZHA neighbour dump?
In Home Assistant open the device in ZHA and use Download diagnostics. The resulting JSON has the device itself under data and a neighbors array describing every device it can hear, with the relationship — parent, child or sibling — for each.
Does the export leave my computer?
No. The file is read by JavaScript in this page and never posted anywhere. You can load the page, run an export and then disconnect from the internet; the result is identical.
Why does my device show as an end device when it is mains-powered?
Some mains-powered devices ship configured as end devices and never route. That is a firmware choice, not a mistake in the export. Tell the difference by looking at whether anything else hangs off them.
Next step
If the weak links cluster on one router, read the coordinator guide for placement and hardware. If you are deciding between stacks, Zigbee2MQTT vs ZHA compares the tooling, including how each one exposes the network map. And if the problem is interference rather than distance, the channel vs Wi-Fi checker works out which 2.4 GHz channels are colliding.