Home Assistant Helpers Explained: Toggles, Numbers & More
Home Assistant helpers are small, user-created entities that store a value you control instead of one a physical device reports. A toggle (input_boolean) holds an on/off state, a number (input_number) holds an adjustable value, a dropdown (input_select) holds a chosen option from a list, and a datetime (input_datetime) holds a date or time. Automations read and write these helpers, which lets you build logic — modes, thresholds, schedules, and manual overrides — that no single device offers on its own. You create them in the Home Assistant UI under Settings → Devices & Services → Helpers, and they behave like any other entity: usable on dashboards, in automations, and in scripts.
What a helper actually is
Most entities in Home Assistant mirror the real world: a sensor reports a temperature, a switch reports whether a plug is on. A helper is different — you are the source of its value. Think of it as a labeled variable that lives inside Home Assistant and keeps its value across restarts. Because it is a full entity, you can show it on a dashboard, flip it from your phone, and reference it in the conditions and actions of automations.
The practical payoff is decoupling. Instead of hard-coding "turn off all lights at 11 PM," you can point that automation at an input_datetime helper called "Bedtime" and adjust the time from a dashboard slider whenever you like — no editing YAML, no reloading anything. Helpers are the glue that turns a pile of device integrations into a system that reflects your intentions.
The four helpers people use most
Home Assistant ships with more than a dozen helper types, but four cover the vast majority of real setups. Here is what each does and a concrete reason to reach for it.
| Helper | Entity domain | Stores | Typical use |
|---|---|---|---|
| Toggle | input_boolean | on / off | "Guest mode," "Vacation," or a manual override flag an automation checks before running |
| Number | input_number | A numeric value in a range | A temperature threshold or brightness level you tune from a dashboard slider |
| Dropdown | input_select | One option from a fixed list | A "House Mode" selector: Home, Away, Sleep, Party |
| Date/Time | input_datetime | A date, a time, or both | An adjustable "wake-up time" or "last watered" timestamp |
Toggle (input_boolean)
A toggle is the simplest and most-used helper. It is just on or off, but that binary is powerful as a condition. A common pattern: create a "Motion automations enabled" toggle, then add it as a condition to every motion-triggered light automation. Flip the toggle off and your motion lighting pauses without you disabling each automation individually. It is the cleanest way to build a manual override that a whole set of automations can respect at once.
Number (input_number)
A number helper exposes a value with a minimum, maximum, and step size, and you can display it as a slider or a text box. Use it to store a threshold an automation compares against — for example, "turn on the fan when the room exceeds this many degrees" — so household members can adjust the setpoint from a dashboard without touching automation logic. Numbers are also handy for counters and timers you increment or reset from actions.
Dropdown (input_select)
A dropdown holds one option from a list you define. Its killer application is a house-mode selector. You define options like Home, Away, Sleep, and Guest, then write automations that branch on the current option. This is often cleaner than juggling several toggles, because the modes are mutually exclusive by design — the house is in exactly one mode at a time. It pairs naturally with presence detection using zones, where arriving home can set the mode automatically while still letting you override it by hand.
Date/Time (input_datetime)
A datetime helper can store a date, a time, or both. The most common use is a schedule you want to change easily — a bedtime, a wake-up alarm, or a "do not disturb until" time — surfaced as an editable field on a dashboard. Automations can trigger when the current time matches the helper, or use it in conditions ("only if now is after the configured quiet-hours start"). You can also write the current timestamp into a datetime helper from an action to record when something last happened.
How to create a helper
Everything happens in the UI, so no file editing is required. The flow is the same regardless of type.
- 1Go to Settings → Devices & Services → Helpers and click Create Helper
- 2Pick the helper type (Toggle, Number, Dropdown, Date/Time, etc.) and give it a clear name
- 3Set its options — range and step for a number, the list for a dropdown, date/time mode for a datetime
- 4Save it, then reference the new entity in your automations, scripts, and dashboards
Once created, a helper appears in entity pickers throughout Home Assistant. When you build an automation, you can use a helper as a trigger (fire when a datetime is reached), a condition (only run if a toggle is on), or a target of an action (set a dropdown to "Away"). If you are new to writing that logic, our automations for beginners guide walks through the trigger–condition–action structure that helpers plug into.
Helpers vs. template sensors and variables
Newcomers often ask how helpers differ from a couple of similar-sounding features. The short version: a helper is a value you control; a template sensor is a value Home Assistant calculates from other entities.
- You set the value manually or via an automation action
- Persists across restarts as stored state
- Editable from a dashboard by anyone
- Value is computed from a formula over other entities
- Read-only — you cannot set it directly
- Best for derived data, like “any door open?”
There is also a lightweight variables concept used inside a single automation run, but those are temporary and scoped to that run. When you need a value that lives on, appears on dashboards, and is shared across many automations, a helper is the right tool. For deeper transformations and reusable logic, some users layer in community add-ons and integrations from HACS, but the built-in helpers handle most everyday needs without any of that.
Other helper types worth knowing
- Text (
input_text) — stores a free-form string, useful for notes or dynamic notification messages. - Button (
input_button) — a stateless press you can use to trigger an automation on demand, like a virtual "run scene" button. - Counter — increments and decrements a whole number, good for tracking how many times something happened.
- Timer — counts down for a set duration and fires an event when it finishes, handy for "turn off after N minutes" patterns.
- Schedule — defines recurring on/off time blocks across the week, which an automation can read as a single on/off condition.
- Threshold, Derivative, and Group — helpers that transform or combine existing sensor data into a new entity.
Frequently asked questions
Do helpers survive a restart or reboot?
Yes. Helpers keep their last value across restarts and reboots because their state is stored in Home Assistant's registry. That state is also captured in a standard backup, so a restore returns them intact. If you are unsure your backups cover everything, see our backup and restore guide.
Can I create helpers in YAML instead of the UI?
You can. The input_boolean, input_number, input_select, and input_datetime domains all accept YAML configuration. The UI is easier for most people and is the officially recommended path, but YAML is useful if you want your helpers version-controlled alongside the rest of your config.
How is a helper different from a switch or a scene?
A switch typically controls a physical device or integration; a scene captures a snapshot of device states to recall later. A helper stores an abstract value — a mode, a threshold, a flag — that your automations interpret. Helpers do not control hardware directly; they inform the logic that does.
Will changing a helper trigger my automations?
Only if you set it up that way. A helper's value changing is an event you can use as an automation trigger, but a helper you use purely as a condition will sit quietly until an automation checks it. This lets you keep manual override flags that never fire anything on their own.