Zigbee2MQTT vs ZHA: Which Home Assistant Zigbee Integration Wins

Zigbee2MQTT vs ZHA compared for Home Assistant. Device support, setup complexity, performance, migration guide, and which Zigbee integration to choose for your smart home.

Zigbee2MQTT vs ZHA is the most common decision new Home Assistant users face when setting up Zigbee devices. Zigbee2MQTT is a standalone application that bridges Zigbee devices to MQTT, offering the widest device support (over 4,000 devices) and the most configuration flexibility. ZHA (Zigbee Home Automation) is Home Assistant’s built-in Zigbee integration with zero external dependencies and a simpler setup. Both connect to the same Zigbee USB coordinators and control the same devices, but they differ significantly in architecture, device support, and troubleshooting experience.

This comparison exists because the Home Assistant community is split almost evenly between the two approaches, and switching from one to the other requires re-pairing every Zigbee device on your network. Choosing wrong means hours of re-pairing 30+ sensors and switches. The right choice depends on your technical comfort level, your device collection, and whether you value simplicity over control. Here is every difference that matters.

Architecture: How Each Integration Works

ZHA runs entirely inside Home Assistant as a native integration. When you plug in a Zigbee coordinator (USB dongle), ZHA detects it and manages the entire Zigbee network directly. There is no external software, no MQTT broker, and no additional configuration files. ZHA communicates with your coordinator through the zigpy Python library, which supports Zigbee 3.0 and legacy Zigbee protocols. If you are dealing with related issues, check our guide on Zigbee vs WiFi vs Matter comparison.

Zigbee2MQTT runs as a separate application (typically in its own Docker container or Home Assistant add-on) alongside Home Assistant. It manages the Zigbee network independently, converts Zigbee device messages into MQTT messages, and publishes them to an MQTT broker (Mosquitto). Home Assistant then subscribes to these MQTT topics through its MQTT integration. The data flow is: Zigbee device → Coordinator → Zigbee2MQTT → MQTT Broker → Home Assistant.

This architectural difference has practical implications. ZHA’s single-process design means fewer moving parts and simpler troubleshooting when things work. Zigbee2MQTT’s separated architecture means the Zigbee network continues functioning even if Home Assistant restarts or crashes, and you can access the Zigbee2MQTT web dashboard to manage devices independently.

Zigbee2MQTT vs ZHA: Full Comparison

Feature Zigbee2MQTT ZHA
Supported devices 4,000+ (largest) 3,000+ (large)
Setup complexity Medium (needs MQTT broker) Easy (built-in)
External dependencies MQTT broker (Mosquitto) None
Web dashboard Yes (full device management) No (uses HA interface)
OTA updates Built-in for most devices Built-in (more limited)
Device-specific config Extensive (per-device YAML) Limited (via HA UI)
Network map Yes (visual mesh map) Yes (via ZHA Toolkit)
Group management Native with binding Native with groups
Coordinator support Primarily TI CC2652/EFR32 TI, Silicon Labs, deCONZ, more
Runs independently of HA Yes No (requires HA running)
Response speed Near-identical Near-identical
Community size Very large (GitHub 12k+ stars) Large (part of HA core)
Unsupported device handling External converters (easy) Quirks system (harder)
MQTT availability Yes (any MQTT client can access devices) No (HA only)

When to Choose Zigbee2MQTT

Choose Zigbee2MQTT if you have or plan to have 30+ Zigbee devices, if you use devices from Chinese manufacturers (Tuya, Moes, Zemismart) that need custom converters, or if you want to access your Zigbee devices from applications beyond Home Assistant through MQTT.

Zigbee2MQTT’s device support library is the largest in the Zigbee ecosystem. When a new Zigbee device launches from any manufacturer, Zigbee2MQTT typically adds support within days through community-contributed external converters. ZHA’s quirks system requires more developer expertise and takes longer to add support for niche devices. If you buy Zigbee devices from AliExpress or lesser-known brands, Zigbee2MQTT is almost certainly the safer choice.

The Zigbee2MQTT web dashboard provides a dedicated interface for managing your Zigbee network. You can see every device’s signal strength, route through the mesh, last communication time, and battery level. The network map visualizes your mesh topology, showing which devices route through which repeaters. When a device drops off the network, the dashboard helps you diagnose whether the issue is signal strength, a dead battery, or a failed coordinator connection.

MQTT exposure means your Zigbee data is available to any MQTT-compatible application. Node-RED, Grafana, custom scripts, and other home automation platforms can subscribe to your Zigbee device topics directly through the MQTT broker. If you run multiple automation platforms or want to process Zigbee data outside Home Assistant, Zigbee2MQTT’s MQTT bridge is essential.

When to Choose ZHA

Choose ZHA if you are new to Home Assistant, have fewer than 30 Zigbee devices from mainstream brands (Philips Hue, IKEA, Aqara, Sonoff), and want the simplest possible setup with no external dependencies.

ZHA’s installation is as simple as plugging in your Zigbee coordinator and clicking “Configure” in Home Assistant’s integration page. There is no MQTT broker to install, no add-on to configure, no YAML files to edit. Home Assistant detects the coordinator, ZHA initializes the Zigbee network, and you start pairing devices immediately. For users who want smart home automation without system administration, ZHA eliminates an entire layer of complexity. For a related solution, see our guide on Mushroom Cards dashboard.

ZHA supports a wider variety of Zigbee coordinators than Zigbee2MQTT. If you have a Silicon Labs EZSP-based dongle, a deCONZ ConBee stick, or a Texas Instruments CC-series coordinator, ZHA supports them all through its zigpy abstraction layer. Zigbee2MQTT primarily supports TI CC2652-based coordinators and Silicon Labs EFR32 chips, with limited or no support for older coordinator hardware.

Because ZHA is a core Home Assistant integration, it receives updates and bug fixes with every Home Assistant release (monthly). Configuration happens entirely through the Home Assistant UI with no external files to manage. Device entities appear automatically in your dashboard, and automations use the standard Home Assistant automation editor.

Setting Up Zigbee2MQTT Step by Step

Install the Mosquitto MQTT broker add-on from the Home Assistant Add-on Store. Configure it with a username and password for MQTT authentication. Then install the Zigbee2MQTT add-on from the add-on store (add the Zigbee2MQTT repository URL first if it is not listed by default).

In Zigbee2MQTT’s configuration, specify your coordinator’s device path (usually /dev/ttyUSB0 or /dev/ttyACM0) and the MQTT broker credentials. Set your network encryption key (use the default random key for security). Start the add-on and open its web dashboard.

To pair a device, click “Permit Join” in the dashboard, then put your Zigbee device into pairing mode (typically by holding a button for 5 seconds). The device appears in the dashboard within 30 seconds. Zigbee2MQTT automatically detects the device model and exposes the correct entities (switches, sensors, lights) to Home Assistant through MQTT discovery.

Setting Up ZHA Step by Step

Plug your Zigbee coordinator into your Home Assistant server. Go to Settings, Devices & Services, Add Integration, and search for ZHA. Select your coordinator from the detected serial ports. ZHA initializes the Zigbee network and presents the main configuration page.

To pair a device, click the “Add Device” button in the ZHA integration page. ZHA opens the network for joining. Put your device into pairing mode. The device appears in Home Assistant with automatically generated entities. Rename the device and its entities to match your naming convention.

ZHA’s simplicity means there is less to configure but also less to troubleshoot. If a device pairs but does not respond correctly, check the device’s page in Home Assistant for “Reconfigure Device” and “Manage Zigbee Device” options. These buttons force ZHA to re-interview the device and refresh its capabilities.

Migrating Between Zigbee2MQTT and ZHA

Switching from one integration to the other requires re-pairing every Zigbee device because ZHA and Zigbee2MQTT use different network keys and PAN IDs. There is no automated migration tool. Plan for 2 to 5 minutes per device to re-pair, depending on physical accessibility (ceiling-mounted sensors take longer than countertop devices).

Before migrating, document every device: its name, location, entity IDs used in automations, and any custom settings. After re-pairing on the new integration, update all automations that reference the old entity IDs. Home Assistant’s entity registry may assign different entity IDs on the new integration. You might also find our Home Assistant local voice assistant guide helpful.

A practical approach: set up the new integration on a second coordinator temporarily. Pair a few test devices to verify they work as expected. Once satisfied, remove the old integration, reassign the primary coordinator to the new integration, and re-pair all remaining devices in a single session. This minimizes downtime for your smart home automations.

Performance and Reliability Comparison

In real-world use, both integrations deliver near-identical response times for device control (50 to 200ms from button press to light toggle). The additional MQTT hop in Zigbee2MQTT adds less than 5ms of latency, which is imperceptible to humans.

Zigbee2MQTT has a slight reliability advantage for large networks (50+ devices) because its dedicated process handles Zigbee communication independently of Home Assistant’s Python event loop. If Home Assistant becomes busy processing a complex automation or loading a heavy dashboard, ZHA’s Zigbee communication can be delayed because it shares the same process. Zigbee2MQTT’s separate process continues handling Zigbee messages without interference.

Both integrations support Zigbee 3.0 with end-to-end encryption, device binding, group messaging, and reporting configuration. The underlying Zigbee functionality is identical because both use the same coordinator hardware. The differences are entirely in the software layer that manages the network and presents devices to Home Assistant.

Is Zigbee2MQTT better than ZHA?

Zigbee2MQTT is better for large networks (30+ devices), niche device brands, and setups where MQTT access is needed. ZHA is better for simplicity, smaller networks, and users who want everything managed within Home Assistant without external dependencies. Both are production-quality integrations used by hundreds of thousands of Home Assistant installations.

Can I switch from ZHA to Zigbee2MQTT without losing devices?

No. Switching requires re-pairing every device because the two integrations use different network keys. Plan for 2 to 5 minutes per device. Document all device names and automation entity IDs before migrating to speed up the reconfiguration process.

Do I need a specific Zigbee dongle for Zigbee2MQTT or ZHA?

Most popular coordinators work with both. The Sonoff Zigbee 3.0 Dongle Plus (CC2652P), SLZB-06, and ITead Sonoff ZBDongle-E (EFR32) are fully supported by both integrations. ZHA additionally supports deCONZ ConBee II and older Silicon Labs sticks. Check the supported adapters list for your specific coordinator.

Does Zigbee2MQTT slow down Home Assistant?

No. Zigbee2MQTT runs as a separate process and communicates through MQTT messages, adding negligible load to Home Assistant. In fact, offloading Zigbee processing to a separate process can improve Home Assistant responsiveness on lower-powered hardware by reducing the main process workload.

Can I run both Zigbee2MQTT and ZHA simultaneously?

Only with two separate coordinators, one for each integration. A single coordinator can only be used by one integration at a time. Some advanced users run ZHA for their main devices and Zigbee2MQTT on a second coordinator for devices that ZHA does not support, though this adds complexity and is not recommended for most setups.

Avatar photo
Chris Rossiter

Darrell is a blogger who likes to keep up with the latest from the tech and finance world. He is a headphone and mobile reviewer and one of the original baker's dozen editorial staff that founded the site. He is into photography, VR, AR, crypto, video games, science and other neat things.

Articles: 3034

Leave a Reply

Your email address will not be published. Required fields are marked *