Zigbee2MQTT or ZHA: Which Home Assistant Zigbee Stack Should You Run in 2026 Home Automation

Zigbee2MQTT or ZHA: Which Home Assistant Zigbee Stack Should You Run in 2026

by Joule P. Kraft · August 5, 2026

As an Amazon Associate, and through other affiliate programs (including SONOFF), I earn from qualifying purchases. No affiliate relationship influences my recommendations.

I have run both Zigbee stacks in anger. ZHA carried my house for two years, then I moved the whole network, 80-plus devices, over to Zigbee2MQTT. I have opinions, and unlike most of the threads on r/homeassistant, mine come from actually living with both under the same roof on the same coordinator.

The short version: both are good now, and the “Z2M is obviously better” religion of a few years ago is out of date. But they are good at different things, and the right pick depends on what you value. This is the guide I wish existed when I was staring at the migrate-or-not question at 11pm with a spreadsheet of device names.

If you have not picked a coordinator yet, start with my best Zigbee coordinators guide and my best Zigbee devices roundup first. The stack you run matters less than the dongle you run it on.

The Two Stacks in One Paragraph Each

ZHA (Zigbee Home Assistant) is the built-in integration. You plug in a supported coordinator, Home Assistant discovers it, you click through the config flow, and you are pairing devices in five minutes. Nothing else to install, no separate container, no broker. Everything lives inside Home Assistant and is managed by the Home Assistant team. It is the default for a reason: it is the lowest-friction path from a fresh install to a working Zigbee network.

Zigbee2MQTT (Z2M) is a separate project that talks to your coordinator, then publishes everything to an MQTT broker that Home Assistant subscribes to. On Home Assistant OS you install it as an add-on, it pulls in Mosquitto, and it auto-discovers into Home Assistant so entities show up just like ZHA. The difference is that Z2M is its own web UI, its own device database, and its own release cadence, decoupled from Home Assistant. That decoupling is the whole story, for better and worse.

Device Support: Z2M Still Wins, But By Less

Zigbee2MQTT maintains one of the largest open Zigbee device databases anywhere, and its external converter system means a community member can add support for a new sensor without waiting for a full release. When Aqara or Tuya ships something weird, Z2M usually has it first. If you buy off-brand AliExpress Zigbee gear, Z2M is the safer bet by a wide margin.

ZHA has quietly closed most of the gap for mainstream devices. Quirks (ZHA’s equivalent of converters) now cover the vast majority of popular sensors, plugs, and switches. If your shopping list is IKEA, Aqara, SONOFF, ThirdReality, and Philips Hue, ZHA will handle essentially all of it in 2026. The gap only shows up at the edges: brand-new releases, obscure vendors, and devices that expose unusual custom clusters.

Stability: It Is Almost Always Your Hardware

Every thread pits “Z2M kept crashing so I switched to ZHA” against “ZHA dropped devices so I switched to Z2M.” Both are real experiences, and both are usually misdiagnosed. After running each stack on the same SONOFF Dongle Plus-E in the same house, I am convinced the overwhelming majority of “stack X is unstable” reports are actually one of three hardware problems:

  • USB 3.0 interference. This is the big one. USB 3.0 ports and cables spray 2.4GHz noise that clobbers Zigbee. If your coordinator is plugged directly into a USB 3.0 port on a Pi or a mini PC, you will get random dropouts on either stack. The fix is a cheap USB 2.0 extension cable to get the dongle a foot or two away from the machine.
  • A weak mesh. Zigbee is a mesh, and it needs mains-powered routers (smart plugs, wired switches) spread through the house. A network that is all battery sensors and no routers will drop devices at the edges no matter which stack you run.
  • An old or underpowered coordinator. A five-year-old CC2531 stick struggles past 30 devices. A modern EFR32MG21 coordinator handles 100-plus. If you are hitting a ceiling, the dongle is the ceiling.

Fix those three and both stacks run for months untouched. My Z2M instance has an uptime measured in months on a Home Assistant Green, and my ZHA setup before it was equally solid once I killed the USB 3.0 interference. When something does break, though, Z2M’s logging is genuinely better. Its logs tell you which device sent what and when, which turns “why did this light drop” from a guessing game into a five-minute read.

Where ZHA Actually Wins

Z2M gets the fan love, so let me defend ZHA, because for a lot of people it is the right answer.

Simplicity. ZHA is one integration inside Home Assistant. No add-on to update on its own schedule, no broker to babysit, no second web UI to learn. If Home Assistant is running, your Zigbee is running. For someone who wants a smart home and not a hobby, that is worth a lot.

Backup and restore. ZHA state lives inside Home Assistant, so a standard Home Assistant backup captures your entire Zigbee network. Restore the backup and your devices come back. With Z2M you have a second data store to think about, and while the add-on backs itself up, it is one more thing to get right.

Blueprints and UI polish. Because ZHA is first-party, device automations and the Home Assistant device page feel native. Events from remotes and buttons flow straight into the automation UI without the mental translation of MQTT topics.

No MQTT surface area. MQTT is easy in the add-on, but it is still another moving part with its own auth and its own failure modes. ZHA removes an entire component from your stack. Fewer moving parts, fewer 11pm debugging sessions.

Where Z2M Actually Wins

The web UI and map. Z2M’s frontend is excellent. The network map alone is worth the switch for diagnosing mesh problems, showing you exactly which router each device is talking through and how strong each link is. ZHA has nothing this good.

Logging and control. As covered above, when things go wrong Z2M tells you why. You also get finer control over device settings, debounce, and reporting intervals.

Faster device support and OTA. New devices land sooner, and Z2M’s over-the-air update handling for firmware is more mature. If you like keeping device firmware current, Z2M makes it less painful.

Portability. Because Z2M is decoupled, you can run it on a separate machine, point multiple Home Assistant instances at it, or migrate your Home Assistant install without touching the Zigbee network. For a Raspberry Pi 5 based setup where you might rebuild the OS, that separation is genuinely useful.

The Migration Reality

Here is the part nobody wants to hear: there is no clean, supported migration between ZHA and Zigbee2MQTT. You keep the same coordinator dongle, but you re-pair every device into the new stack. There are experimental tools that attempt to transfer the network key and device list, but they are fragile and I would not trust them on a network I depend on.

When I moved my 80-plus device network from ZHA to Z2M, I did it room by room over an evening. Factory-reset each device, pair it into Z2M, rename it, and move on. The tedious part is not the pairing, it is redoing the automations and dashboards that reference the old entity IDs. Plan for that. Export a list of your entities first, and rename devices in Z2M to match your old naming scheme so your automations need the fewest edits.

My advice: only migrate if you have a concrete reason. “Z2M is supposedly better” is not a reason worth an evening of re-pairing. “I keep hitting a wall diagnosing dropouts and I want the network map” is.

What I Actually Run and Recommend

I run Zigbee2MQTT today, and I would migrate again. But the honest recommendation is conditional:

  • New to Home Assistant, want it to just work? Start with ZHA. It is the default, it is simpler, and it will handle your gear. You can always move later.
  • Comfortable with add-ons, buy oddball devices, or want the best diagnostics? Go straight to Z2M. Skip the ZHA phase and avoid a future migration.
  • Already on ZHA and it is stable? Stay. Do not migrate for bragging rights. Fix your USB 3.0 interference and mesh instead, and you will get most of the “stability” benefit people credit to switching stacks.

Whichever you choose, spend your money on the coordinator, not the software. Both stacks are free. A modern EFR32 dongle on a USB 2.0 extension, with a few mains-powered routers spread through the house, matters ten times more than the ZHA-versus-Z2M debate.

The Bottom Line

The old wisdom that Zigbee2MQTT is strictly better is dead in 2026. ZHA is the simpler, more integrated, lower-maintenance choice and it now supports nearly all mainstream devices. Zigbee2MQTT is the power-user choice with a superior UI, better logging, a network map, and faster device support, at the cost of one more moving part and no clean migration path. Pick ZHA for simplicity, pick Z2M for control, and either way put your effort into a solid coordinator and a healthy mesh. That is the decision that actually determines whether your Zigbee network is boring and reliable, which is exactly what you want it to be.

Where to Buy

SONOFF Zigbee 3.0 USB Dongle Plus-E on Amazon Buy on Amazon → Home Assistant Green on Amazon Buy on Amazon → Raspberry Pi 5 on Amazon Buy on Amazon → USB 2.0 Extension Cable on Amazon Buy on Amazon →

As an Amazon Associate, and through other affiliate programs (including SONOFF), we earn from qualifying purchases. Prices and availability are subject to change.

Frequently Asked Questions

Is Zigbee2MQTT more stable than ZHA in 2026?+
Neither is inherently unstable. Most stability complaints on both sides trace back to a bad coordinator, USB 3.0 interference, or a weak mesh. On identical, well-placed hardware both run for months without a restart. Z2M gives you more logging to find the actual cause when something does break.
Can I migrate from ZHA to Zigbee2MQTT without re-pairing every device?+
Not cleanly. There is no supported one-click migration between the two stacks. You keep the same coordinator dongle but you re-pair devices into the new stack. Budget an evening for a 40-device network and do it room by room.
Does ZHA support as many Zigbee devices as Zigbee2MQTT?+
Z2M supports more devices and adds new ones faster because of its external converter system. ZHA has closed most of the gap for mainstream gear, but for obscure or brand-new sensors Z2M is still first to support them.
Do I need MQTT knowledge to run Zigbee2MQTT?+
No. The Home Assistant add-on bundles Mosquitto and handles the wiring. You only touch MQTT directly if you want to integrate other systems. For a pure Home Assistant setup it is close to plug and play.