An XDA piece last week walked through a smart home that fell apart in one evening. The owner tidied up their device names, hit save, and every automation that referenced the old IDs went quiet. Lights stopped reacting to motion. The good-morning routine skipped half its steps. The dashboard filled with red exclamation marks. Nothing in Home Assistant warned them before the change; nothing rolled it back after.
That story is common enough that Home Assistant entity naming deserves its own toolchain, not a rainy-afternoon rename spree. The seven desktop apps below cover the ground you need before touching a single ID: dry-run refactors, YAML linting, cross-file search, aliases that keep the friendly name separate from the machine key, Zigbee and Z-Wave rename flows that sync back to entities, and version control so mistakes are reversible in seconds.
What to look for in an entity-naming setup
- Dry-run refactoring. A rename should preview every automation, script, scene, dashboard, and blueprint reference before it commits anything.
- YAML linting. Broken indentation or a dangling
entity_id:should fail your editor, not your morning routine. - Entity ID search across automations, scripts, and scenes. One shortcut to find every place
light.living_room_lampappears, including inside templates. - Alias support. Friendly names should be free to change without touching the underlying entity ID that automations depend on.
- Zigbee and Z-Wave device rename that syncs back to entities. Renaming a device in the ZHA or Z-Wave JS UI should propagate to every entity that device exposes, not leave orphans.
- Version-controlled configuration. Git or an equivalent so a bad refactor is one
git revertfrom healed.
Quick comparison
| App | Best for | Handles rename references | Cost |
|---|---|---|---|
| Home Assistant | The core rename dialog | Yes, native | Free |
| Studio Code Server | Editing and searching YAML | Yes, via find-in-files | Free |
| HACS | Installing the rest of this list | No, prerequisite | Free |
| ESPHome | DIY hardware, single source of truth | Yes, at compile time | Free |
| Node-RED | Complex visual automations | Partial, per flow | Free |
| Automation Editor | UI-first single automation edits | Yes, native | Free |
| Custom Brand Icons | Visual audit of naming conventions | No, catches drift visually | Free |
The apps
1. Home Assistant
Download: Home Assistant
Start here, because the core got much better at this. Since release 2023.4 the entity settings dialog carries an “Entity ID rename” tool that searches automations, scripts, scenes, dashboards, and blueprints for references to the old ID and offers to update them in one pass. It runs as a preview first, listing every match with its file and line, and only commits when confirmed.
That preview is the single most useful safety net in the stack. It catches templated references inside Jinja that a plain text search would miss, and it flags cases where an ID appears inside a YAML anchor or a package file the UI would otherwise not touch. When it cannot resolve a reference automatically (an entity ID built at runtime from a variable, for example), it says so instead of silently skipping.
The catch: it only knows about the sources it can see. Custom integrations that store entity IDs in their own JSON files, or NodeRED flows saved outside .storage, need a second pass with the tools further down this list.
2. Studio Code Server
Download: Studio Code Server
The HACS-installed add-on that puts a full VS Code in a browser tab, pointed straight at /config. YAML linting is on by default, the Home Assistant extension ships pre-installed, and Ctrl+Shift+F does a project-wide find that respects .gitignore.
For entity naming this is where the second-pass audit happens. After the core rename dialog runs, open Studio Code Server, search for the old ID, and confirm there are zero hits. If any come back, they are usually in files the dialog cannot introspect: shell command definitions, REST sensor URLs, or template sensors built with state_attr(). Fix them there, commit, reload.
The autocomplete deserves its own mention. Type entity_id: and it suggests the live registry, so typos never survive to runtime. Rename a device tomorrow and the suggestions refresh on next reload.
3. HACS (Home Assistant Community Store)
Download: HACS
Not a naming tool, but a prerequisite. HACS is the community package manager that installs Studio Code Server, Custom Brand Icons, and the handful of quality-of-life integrations that make the rest of this workflow possible. Setup is a one-time thing: enable advanced mode in your profile, drop the HACS integration in via a shell command, restart, and add the integration.
Two habits worth adopting once HACS is in place. First, pin versions rather than tracking main on anything that touches entities, because a surprise breaking change during a naming refactor is the worst possible timing. Second, use HACS’s built-in changelog view before every update. It is often the only place breaking rename behaviour gets called out ahead of time.
4. ESPHome
Download: ESPHome
For anything on ESP32 or ESP8266 hardware, ESPHome is the naming layer. Set name: living-room-lamp once in the device YAML and every entity that flashes to that board (light.living_room_lamp, sensor.living_room_lamp_temperature, whatever) gets a matching ID. Change the name: field, reflash, and Home Assistant sees the new IDs on next boot.
That single source of truth is what stops the kind of drift the XDA piece described. The old pattern was: rename the device in Home Assistant, rename it again in ESPHome, hope both sides agreed. The current pattern is: rename it in ESPHome, let Home Assistant follow. It is a smaller surface area to keep consistent, and the version-controlled .yaml files mean every rename is a diff in a repo.
Pair it with the core rename dialog for the initial changeover. ESPHome creates the new IDs on first boot; the dialog rewrites references to the old ones. Two passes, no orphans.
5. Node-RED
Download: Node-RED
When automations get past twenty or thirty and the YAML editor starts to feel narrow, Node-RED’s visual flow editor is the usual next step. Entity IDs become first-class citizens on the canvas: every node that touches one shows it in the label, and the sidebar has a live registry search so mistyped IDs are impossible to save.
For entity naming specifically, Node-RED’s per-flow search is the tool. Open a flow, hit Ctrl+F, type the old ID, and every node that references it lights up. Rename in bulk through the node config panels, deploy, done. Flows export as JSON, so they live happily in the same git repo as the rest of the config.
The trade-off: Node-RED runs alongside Home Assistant’s own automation engine rather than replacing it, so an entity ID rename now has to be applied in two places. Keep a checklist.
6. Automation Editor (built-in)
Download: Automation Editor (ships with Home Assistant)
The stock UI editor is often underrated. For single-automation edits it treats entity IDs as searchable references: change the trigger’s entity picker and the corresponding condition and action fields update on the same save. No hand-editing YAML, no chance of a stray comma.
Where it earns its place in this list is the “Rename” prompt that appears when you change a device or entity that the automation references. It offers the same update-references-across-config preview the core dialog does, scoped to the automation you have open. For the common case, edit a single automation, notice the linked entity got a friendlier ID, accept the rename, save, and move on.
For anything spanning multiple automations, use the core rename dialog instead. This one is for the surgical single-file changes.
7. Custom Brand Icons
Download: Custom Brand Icons
The odd one out, and the one that pays for itself the fastest. Custom Brand Icons is a HACS integration that lets you attach vendor and product icons to entities by pattern. Give every light.living_* entity the same lamp icon, every sensor.*_battery the same battery icon, every switch.plug_* the same outlet.
The naming-refactor benefit is visual. Open the dashboard after a rename and any entity that fell outside the pattern (a typo, a stale alias, a device that got renamed but not the linked helper) shows the default fallback icon instead of the family icon. A wrong rename shows up as a visual outlier before it shows up as a broken automation.
Set the patterns once against your naming convention, keep them in configuration.yaml, and every future rename either matches the pattern or announces itself.
How to pick the right stack
The base layer, for every setup: Home Assistant plus HACS plus Studio Code Server plus git. That combination gives you the core rename dialog, the second-pass search, the community package channel for anything else, and the undo button.
Add ESPHome if any of your entities come from DIY hardware. It moves the source of truth for those names out of the Home Assistant UI and into version-controlled YAML, and it removes an entire class of drift bugs.
Add Node-RED if you have more than a few dozen automations or if any of them span more than three or four steps. The visual editor is easier to audit at scale, and the per-flow search is how you catch orphaned IDs in complex flows.
Add Custom Brand Icons early rather than late. Setting the patterns before a rename means the dashboard becomes a change-detection tool, not just a display.
The Automation Editor is always available and worth using for single-file edits. It is not a replacement for the core rename dialog when a change touches multiple automations, but it is the fastest path for the everyday tidy-up.
FAQ
Does renaming an entity in Home Assistant automatically update every automation that uses it?
Since release 2023.4, the entity ID rename dialog searches automations, scripts, scenes, dashboards, and blueprints for references and offers to update them in one pass. It shows a preview first. It cannot see references inside custom integrations that store IDs in their own files or inside Node-RED flows, so a second-pass search in Studio Code Server is still worth running after every rename.
What is the difference between the friendly name and the entity ID?
The entity ID (light.living_room_lamp) is the machine key that automations, scripts, and templates use to address the entity. The friendly name (“Living room lamp”) is the label that shows up in dashboards, voice assistants, and notifications. Change the friendly name freely; the entity ID stays stable and no automation breaks. Change the entity ID only through the rename dialog so references get updated.
Should devices be renamed from the integration UI or from the entity settings?
Rename the device from the integration UI (ZHA, Z-Wave JS, ESPHome, and so on) when the goal is to change every entity that device exposes at once. Rename the individual entity when only one of the device’s entities needs a different ID. Both flows now trigger the same reference-update preview, so the safety net is the same either way.
How do you audit a Home Assistant config for entity ID typos before they cause outages?
Studio Code Server with the Home Assistant extension is the fastest audit. Open a project-wide find for entity_id: and scan for anything that does not autocomplete against the live registry. For a scripted check, hassio ha check (the CLI equivalent of the built-in configuration validator) will flag references to entities that do not exist, and a git diff after every change makes the review a one-command habit.
Is it safe to rename entities on a production Home Assistant instance?
Safer than it used to be, if the rename goes through the entity settings dialog or the Automation Editor’s linked prompt. Take a backup first from the UI, do the rename during a quiet window, and reload the affected integration or restart Home Assistant after the change. If anything looks off, the git repo the rest of this stack encourages you to keep is the fastest way back to the previous state.