Introduction
You just upgraded your smart home setup. You added Matter support to a device that was already running perfectly fine on Zigbee. You were excited — Matter is supposed to be the future, right? But then you opened Home Assistant, and something looked… off.
Two light entities for the same bulb. Two switches for the same plug. Two temperature sensors reading the same room. Duplicates everywhere.
If this sounds familiar, you’re not alone. This is one of the most common — and most frustrating — issues that Home Assistant users face when they start mixing Matter and Zigbee protocols on the same device. I’ve personally dealt with this headache across multiple devices, and it took me a while to fully understand what was happening and how to fix it properly.
In this article, I’m going to walk you through exactly why this happens, what’s going on behind the scenes, and most importantly, how to clean things up without breaking your automations or losing control of your devices.
Let’s dive in.
Understanding the Root Cause: Why Do Duplicate Entities Appear?
How Home Assistant Discovers Devices
Home Assistant treats every integration as a separate discovery pathway. When you pair a device via Zigbee (using ZHA or Zigbee2MQTT), Home Assistant creates entities based on the Zigbee endpoints it detects — lights, switches, sensors, and so on.
Now, when the same physical device also supports Matter, and you pair it through the Matter integration, Home Assistant sees it as a completely new device. It has no built-in mechanism to say, “Hey, this is the same physical bulb that’s already connected via Zigbee.”
The result? Two sets of entities for one physical device.
The Multi-Protocol Problem
Many modern smart home devices — especially from brands like Eve, Nanoleaf, Aqara, and IKEA — now support multiple protocols simultaneously. A single Aqara door sensor, for example, might communicate over:
- Zigbee (through its native hub or a Zigbee coordinator)
- Matter (through a Thread border router or a Matter bridge)
Each protocol creates its own unique device ID in Home Assistant. There’s no cross-protocol device matching happening automatically.
This is not a bug. It’s by design. Home Assistant simply doesn’t know that two different integration entries point to the same hardware.
[📸 Image Suggestion: A screenshot showing the Home Assistant device list with two entries for the same physical device — one under the Matter integration and one under ZHA or Zigbee2MQTT, highlighting the duplicate entity names.]
Real-World Scenario: How This Typically Happens
Let me paint you a picture that I’ve seen play out dozens of times — including in my own setup.
The Scenario
Sarah has been running Home Assistant for about a year. She uses a SkyConnect dongle as her Zigbee coordinator through ZHA. She has 15 Zigbee devices, including several Aqara temperature sensors and a few IKEA TRÅDFRI bulbs.
One day, IKEA releases a firmware update that enables Matter support on her TRÅDFRI bulbs. Sarah gets excited and pairs the bulbs to Home Assistant via Matter as well, thinking it might improve responsiveness.
She opens her dashboard and sees:
light.living_room_bulb(Zigbee/ZHA)light.living_room_bulb_2(Matter)
Both control the same physical bulb. When she turns one on, the other doesn’t update immediately. Her automations that reference the Zigbee entity still work, but the Matter entity just sits there, sometimes showing a stale state.
Her Lovelace dashboard now looks messy. Her energy monitoring counts some devices twice. Her automation logs are confusing.
Sound familiar?
[📸 Image Suggestion: A diagram showing one physical device (e.g., a smart bulb) connected to Home Assistant through two separate paths — one via Zigbee and one via Matter — resulting in two separate entity entries.]
Which Protocol Should You Actually Use?
Before we talk about fixing the duplicates, let’s address the elephant in the room: should you even be using both protocols for the same device?
Zigbee vs. Matter: A Quick Comparison for the Same Device
| Factor | Zigbee (ZHA / Z2M) | Matter |
|---|---|---|
| Maturity | Very mature, well-tested | Still relatively new |
| Local Control | Fully local | Fully local |
| Entity Support | Comprehensive | Sometimes limited |
| Reliability | Proven and stable | Improving but still has quirks |
| Device Features | Full feature exposure | Some features may be missing |
| Mesh Networking | Zigbee mesh | Thread mesh (for Thread devices) |
My Honest Recommendation
For most users right now, stick with one protocol per device. If a device is already working great on Zigbee, there’s usually no compelling reason to also pair it via Matter — unless you’re specifically testing or transitioning.
Matter is the future, yes. But the present is that Zigbee integrations in Home Assistant are more mature, expose more entity features, and have better community support for most devices.
Step-by-Step: How to Identify and Remove Duplicate Entities
Here’s a practical, safe approach to cleaning up your setup.
Step 1: Identify All Duplicate Entities
Go to Settings → Devices & Services in Home Assistant.
Look through your device list and identify devices that appear under multiple integrations. You can also check the entity registry:
- Open your Home Assistant configuration directory
- Look at the
.storage/core.entity_registryfile - Search for the device name — if it appears under two different platforms, you have a duplicate
Alternatively, use the Developer Tools → States tab and filter by the device name to see all related entities.
[📸 Image Suggestion: A screenshot of the Developer Tools → States page with a filter applied, showing two entities for the same device — one with a Zigbee platform prefix and one with a Matter platform prefix.]
Step 2: Decide Which Protocol to Keep
Ask yourself these questions:
- Which protocol has been more reliable for this specific device?
- Which one exposes all the features I need? (Some Matter implementations don’t expose all sensor data yet)
- Which one fits better into my existing mesh? (If you have a strong Zigbee mesh, keep Zigbee. If you’re building a Thread network, keep Matter.)
Step 3: Remove the Unwanted Integration Entry
Once you’ve decided which protocol to drop for a specific device:
- Go to Settings → Devices & Services
- Find the integration you want to remove the device from
- Click on the device
- Click the three-dot menu → Delete
- If it’s a Matter device, you may also need to remove it from the Matter fabric
⚠️ Important: Before deleting anything, check your automations and scripts. Search for the entity ID you’re about to remove. If any automation references it, update the automation to use the entity you’re keeping.
Step 4: Clean Up Your Dashboard
After removing the duplicate:
- Update your Lovelace dashboard cards
- Remove any stale entities from your areas
- Check your energy dashboard if the device was being tracked there
Step 5: Restart and Verify
Restart Home Assistant and verify:
- The remaining entity correctly controls the device
- No ghost entities remain
- Your automations still trigger properly
[📸 Image Suggestion: A before-and-after comparison screenshot — the “before” showing a cluttered device list with duplicates, and the “after” showing a clean list with one entry per physical device.]
Advanced Technique: Using Entity Registry to Disable Instead of Delete
If you’re not ready to fully commit to removing one protocol, there’s a safer middle ground: disable the duplicate entities instead of deleting them.
How to Disable an Entity
- Go to Settings → Devices & Services
- Click on the device
- Find the entity you want to disable
- Click on it → Toggle “Enable entity” to OFF
This keeps the entity in your registry but prevents it from:
- Appearing on dashboards
- Being included in automations
- Consuming resources for state updates
You can always re-enable it later if you change your mind.
Why This Is Sometimes Better Than Deleting
- You preserve the entity history
- You can easily switch protocols in the future
- You don’t risk accidentally losing the device pairing
Preventing Duplicates in the First Place
The best fix is prevention. Here’s how to avoid this mess going forward.
Rule 1: One Protocol Per Device
Decide upfront which protocol you’ll use for each device. Don’t pair a device via both Zigbee and Matter just because you can.
Rule 2: Plan Your Migration
If you’re transitioning from Zigbee to Matter:
- Document all your current Zigbee entities and which automations use them
- Pair the device via Matter
- Update your automations to use the new Matter entity IDs
- Then remove the Zigbee pairing
- Test everything
Don’t run both simultaneously for extended periods.
Rule 3: Be Careful with Bridges
Some hubs act as Matter bridges — like the Aqara Hub M2 or the Hue Bridge. When you add these as Matter bridges to Home Assistant, they can expose all their connected Zigbee devices as Matter devices.
If those same Zigbee devices are already paired directly to your Zigbee coordinator, you’ll get duplicates for every single one.
This is the number one cause of mass duplication.
[📸 Image Suggestion: A network diagram showing a hub (like the Aqara M2) acting as a Matter bridge, re-exposing Zigbee devices as Matter entities — creating a duplicate path to Home Assistant alongside the direct Zigbee connection.]
Real User Experience: How I Fixed 23 Duplicate Entities
I want to share my own experience because I think it helps illustrate the full scope of this issue.
My Setup
- Home Assistant OS running on a Raspberry Pi 4
- SkyConnect dongle running ZHA with 28 Zigbee devices
- An Aqara Hub M3 added as a Matter bridge
- Several Eve and Nanoleaf devices with Thread/Matter support
What Happened
When I added the Aqara Hub M3 as a Matter controller in Home Assistant, it bridged every single Zigbee device connected to it — including 14 devices that were also paired directly to my SkyConnect via ZHA.
Overnight, I went from 28 devices to 42 devices. My entity count ballooned. My dashboards broke. My automations started firing twice because both the Zigbee and Matter entities were triggering the same conditions.
What I Did
- Audited everything. I created a spreadsheet listing every device, its Zigbee entity ID, its Matter entity ID (if any), and which automations referenced it.
- Chose Zigbee for most devices. Since my Zigbee mesh was mature and stable, I decided to keep the Zigbee entities for all devices that were already working well.
- Kept Matter only for Thread-native devices. Devices like my Eve Motion sensors that use Thread natively stayed on Matter because that’s their primary protocol.
- Removed the Aqara M3 from Home Assistant’s Matter integration and instead used it only as an Aqara ecosystem hub, not as a Matter bridge.
- Cleaned up and tested. Restarted, verified every automation, and cleaned my dashboards.
The whole process took about two hours, but my setup has been clean and stable ever since.
Common Mistakes to Avoid
Mistake 1: Deleting Entities Without Checking Automations
Always search your automations, scripts, and scenes for an entity ID before deleting it. Use the search function in Settings → Automations & Scenes or search your automations.yaml file directly.
Mistake 2: Adding a Hub as Both a Zigbee Coordinator and a Matter Bridge
If your hub (like Aqara M3) is connected to Home Assistant as both a Zigbee coordinator and a Matter bridge, you’ll get triple duplicates in some cases. Pick one role for each hub.
Mistake 3: Assuming Matter Will Automatically Replace Zigbee
It won’t. Home Assistant doesn’t merge or replace entities across protocols. You have to manage this manually.
Mistake 4: Ignoring the Problem
Duplicate entities aren’t just cosmetic. They can:
- Cause automations to fire multiple times
- Confuse voice assistants (Alexa, Google Home)
- Inflate your energy usage data
- Slow down your Home Assistant instance with unnecessary state changes
How This Affects Automations and Scripts
Let’s look at a concrete example of how duplicates can break things.
Example Automation: Turn Off Lights at Midnight
YAMLautomation:
- alias: "Turn off living room lights at midnight"
trigger:
- platform: time
at: "00:00:00"
action:
- service: light.turn_off
target:
area_id: living_room
If your living room has a bulb that exists as both light.living_room_zigbee and light.living_room_matter, and both are assigned to the “Living Room” area, this automation will try to turn off both entities.
Usually, this isn’t a disaster — the bulb just turns off. But the state changes can cause unnecessary network traffic, logging, and sometimes the two commands conflict, causing the light to flicker or behave unpredictably.
The Fix
Remove one entity from the area, or better yet, remove the duplicate entirely.
[📸 Image Suggestion: A screenshot of an automation in Home Assistant that targets an area, with a callout showing how duplicate entities in the same area can cause double-triggering.]
Frequently Asked Questions (FAQ)
Will Home Assistant ever automatically detect and merge duplicate entities across protocols?
As of now, there’s no built-in feature for this. The Home Assistant development team has discussed the concept of “device identity” across protocols, but it’s a complex problem. For now, manual management is required.
Can I safely run both Zigbee and Matter on the same device?
Technically, yes. Many devices support multi-protocol operation. But in Home Assistant, this will create duplicate entities, so it’s not recommended unless you have a specific reason and you disable the extra entities.
Does removing a Matter entity unpair the device from Matter?
Removing the device from the Matter integration in Home Assistant will remove it from Home Assistant’s Matter fabric. The device itself may still be in Matter pairing mode or paired to other controllers.
What happens to my device history if I switch from Zigbee to Matter?
The history is tied to the entity ID. If the new Matter entity has a different ID (which it will), you’ll start fresh with no history. The old Zigbee history will remain in your database but won’t be accessible from the new entity.
Is it better to use Zigbee or Matter for reliability in Home Assistant?
As of 2024-2025, Zigbee integrations (ZHA and Zigbee2MQTT) are generally more mature and reliable in Home Assistant. Matter support is improving rapidly, but some users still report occasional connectivity issues, especially with battery-powered Thread devices.
Can I rename the Matter entity to match my Zigbee entity ID?
You can change the entity’s friendly name, but you cannot reuse the exact same entity ID if the original Zigbee entity still exists. You’d need to remove the Zigbee entity first, and even then, Home Assistant may assign a different ID format.
Do duplicate entities affect my Home Assistant performance?
Yes, to some extent. Each entity generates state change events, consumes database storage, and adds to the overall entity count. With a few duplicates, the impact is minimal. With dozens, it can add up — especially on lower-powered hardware.
Final Thoughts
Duplicate entities from Matter and Zigbee coexistence are not a bug — they’re a natural consequence of how Home Assistant handles multi-protocol device discovery. The system doesn’t yet have a way to understand that two different integration entries are pointing to the same physical hardware.
The good news is that this is entirely manageable. By choosing one protocol per device, carefully removing or disabling the extras, and keeping your automations updated, you can maintain a clean and efficient smart home setup.
My advice? Don’t rush to add Matter to devices that are already working perfectly on Zigbee. When you do migrate, do it methodically — one device at a time, with a plan for updating your automations and dashboards.
Your smart home should make your life simpler, not more complicated. A few minutes of cleanup now will save you hours of confusion later.
[📸 Image Suggestion: A clean, organized Home Assistant dashboard showing one entity per device — the end result of a successful duplicate cleanup, conveying the satisfaction of a tidy smart home setup.]
Have you dealt with duplicate entities in your Home Assistant setup? What approach worked best for you? The smart home community learns best from shared experiences — and every setup teaches us something new.