Home Assistant

Zigbee2MQTT vs ZHA: Which Home Assistant Integration?

View of a modern car's dashboard featuring a digital display panel with control options.
Photo: I'm Zion / Pexels

If you want the short version: ZHA is the simpler, self-contained choice built into Home Assistant, while Zigbee2MQTT is the more flexible, broadly compatible choice that runs as a separate service and talks to Home Assistant over MQTT. Both use the same Zigbee USB coordinator and both are actively maintained and widely used. For most people setting up their first Zigbee network, ZHA gets you running faster; power users who own unusual devices or want portability across smart-home platforms tend to prefer Zigbee2MQTT. Neither is a wrong answer, and switching later is possible (though it means re-pairing your devices).

This comparison is based on the official Home Assistant documentation, the Zigbee2MQTT project documentation, and well-documented behavior reported across the Home Assistant community. SmartHomeSensei is research-based and does not run a hardware lab, so the goal here is to explain why each option behaves the way it does, not to hand you a made-up score.

What ZHA and Zigbee2MQTT actually are

Both tools solve the same problem: your Zigbee sensors, bulbs, and switches speak a low-power mesh protocol that your computer can't understand on its own. A Zigbee coordinator (a USB stick or networked adapter) creates the network, and the software talks to that coordinator so Home Assistant can see and control your devices. If you're still deciding between Zigbee and Z-Wave in the first place, our guide on Zigbee vs Z-Wave for Home Assistant covers that upstream decision.

ZHA (Zigbee Home Automation) is a built-in Home Assistant integration. You plug in a supported coordinator, add the integration from the UI, and your devices appear directly in Home Assistant. There is nothing else to install and no separate service to keep alive. ZHA relies on the open-source zigpy library, and device behavior comes from a set of shared "quirks" that translate non-standard hardware into something Home Assistant understands.

Zigbee2MQTT is an independent project. It runs as its own service — most commonly a Home Assistant add-on if you're on Home Assistant OS, or a Docker container elsewhere. It reads your Zigbee network and publishes every device and event to an MQTT broker (usually the Mosquitto add-on). Home Assistant then subscribes to that broker and, thanks to MQTT discovery, the devices show up automatically. The key architectural difference is that extra hop: Zigbee2MQTT → MQTT broker → Home Assistant.

HOW EACH PATH REACHES HOME ASSISTANTZigbeecoordinatorIntegration orZ2M serviceMQTT broker (Z2Monly)Home Assistant
How each path reaches Home Assistant

Side-by-side comparison

Factor ZHA Zigbee2MQTT
Where it runs Inside Home Assistant (native integration) Separate service (add-on or Docker container)
Extra software needed None An MQTT broker (e.g. Mosquitto)
Setup effort Lower — add integration, done Higher — install broker, add-on, and configure
Device support breadth Wide; some niche devices need quirks Very wide; new/obscure devices often supported sooner
Configuration UI Home Assistant UI only Its own web dashboard, plus Home Assistant
Platform independence Tied to Home Assistant Can feed any MQTT-aware system
Best fit Beginners; simplest maintenance Tinkerers; large or unusual device sets

Device support: the most common tiebreaker

This is where many people ultimately decide. Both integrations support the large majority of mainstream Zigbee devices — IKEA, Philips Hue bulbs used directly, Aqara sensors, Sonoff switches, and so on. The practical difference shows up at the edges. Zigbee2MQTT maintains a large, actively updated device database, and because it's a focused single-purpose project, support for a brand-new or obscure device often lands there first. ZHA depends on quirks contributed to the zigpy ecosystem, which cover a great deal but occasionally lag for unusual hardware, or expose a device with fewer of its custom features.

If you already own a specific sensor or switch, the honest move is to search that exact model against each project's supported-device list before you commit. A device that's fully mapped in one may show up with reduced functionality in the other. For picking the coordinator itself, see our roundup of Zigbee USB coordinators for Home Assistant — your choice of stick matters more than the integration for range and reliability.

ZHA
  • Built in, nothing extra to install
  • Simplest for a first Zigbee network
  • Managed entirely in the Home Assistant UI
Zigbee2MQTT
  • Broadest device coverage, faster niche support
  • Own dashboard for network diagnostics
  • Works with any MQTT system, not just Home Assistant

Setup and maintenance

ZHA's appeal is that there's almost nothing to describe. You plug in your coordinator, Home Assistant usually detects it, and you confirm the integration. Devices pair from the same UI you already use for everything else.

Zigbee2MQTT asks for a few more steps up front, and each is a place a beginner can get stuck:

  1. 1Install an MQTT broker such as the Mosquitto add-on
  2. 2Install and configure the Zigbee2MQTT add-on with your coordinator’s port
  3. 3Point Zigbee2MQTT at the broker and enable Home Assistant discovery
  4. 4Pair devices from the Zigbee2MQTT dashboard

None of these steps are hard individually, but together they mean more moving parts to keep healthy. If the MQTT broker goes down, your Zigbee devices go dark in Home Assistant even though the Zigbee network itself is fine. With ZHA there's no broker to fail. On the other hand, Zigbee2MQTT's dedicated dashboard gives you a clearer view of your mesh — link quality, routing, and per-device logs — which some people find invaluable when hunting down a flaky connection. If you're new to add-ons and community components generally, our explainer on Home Assistant HACS is a useful companion read.

Which should you choose?

Match the tool to how you actually use Home Assistant rather than to which one sounds more powerful.

  • Choose ZHA if you're building your first Zigbee network, you want the fewest components to maintain, your devices are mainstream, and you'd rather not run and monitor an MQTT broker. It's the lower-friction default, and it's a first-class part of Home Assistant.
  • Choose Zigbee2MQTT if you own a lot of devices or some unusual ones, you want the richest diagnostics, you already run MQTT for other things, or you value not being locked to a single home-automation platform. The extra setup buys flexibility.

If you're torn, start with ZHA. It's the faster path to a working network, and if you later hit a device it doesn't handle well or you outgrow it, migrating to Zigbee2MQTT is a known route — with the caveat below. Whichever you pick, get a solid backup routine in place first, because your Zigbee network configuration is worth protecting.

Once your devices are in, the automation experience is essentially the same on either side — they both surface entities Home Assistant can act on, so tools like blueprints and your usual automations work regardless of which integration delivered the device.

Frequently asked questions

Can I run ZHA and Zigbee2MQTT at the same time?

Not on the same coordinator — each takes exclusive control of the adapter. You could technically run two separate coordinators, one for each integration, but there's rarely a good reason to. Pick one integration per Zigbee network.

Do I need MQTT knowledge to use Zigbee2MQTT?

You don't need to understand MQTT deeply, but you do need to install and run a broker (Mosquitto is the common choice) and let Home Assistant discovery handle the rest. ZHA requires no MQTT at all, which is the main reason beginners often start there.

Is Zigbee2MQTT faster or more reliable than ZHA?

Real-world responsiveness and reliability depend far more on your coordinator, mesh layout, and interference than on which integration you run. Both are mature and stable. Neither should be chosen on the assumption that it's inherently "faster" — the physical network matters most.

Will my automations break if I switch later?

Entity and device names typically change when you move to a different integration, so automations and dashboards that reference the old entities will need updating. Because you also re-pair devices, treat a switch as a small project rather than a flip of a setting.

Sources

Related guides