Test if string: string
The string test checks whether a value is a string. It returns true if the value is of string type and false for any other type, including numbers and booleans.
In Home Assistant, entityAn entity represents a sensor, actor, or function in Home Assistant. Entities are used to monitor physical properties or to control other entities. An entity is usually part of a device or a service. [Learn more] states are always strings, but attributes can be various types including numbers, booleans, and lists. This test is useful when you need to verify that a value is a string before performing string operations like splitting, replacing, or pattern matching.
Usage
Here’s how to use this template function. Copy any example and adjust it to your setup.
{% if "hello" is string %}
It is a string
{% endif %}
It is a string
Function signature
The signature is a technical summary of this template function. It shows the name of the function, the values (called parameters) it accepts, and what type of data each parameter expects (for example, a piece of text or a number).
Function parameters that have a = with a value after them are optional. If you leave them out, the default value shown is used automatically. Function parameters without a default are required.
string(
value: Any,
) -> bool
Function parameters
The following parameters can be provided to this test.
Good to know
- A numeric-looking string such as
"42"still passes this test. The test looks at the type, not the content. - All entity states are strings in Home Assistant, so this test is most useful for attributes or values built inside a template.
Try it yourself
Ready to test this? Open Developer tools > Template, paste the example into the Template editor, and watch the result update on the right. Edit the values to see how the function adapts to your own entitiesAn entity represents a sensor, actor, or function in Home Assistant. Entities are used to monitor physical properties or to control other entities. An entity is usually part of a device or a service. [Learn more].
More examples
Real scenarios where this function comes up in automations and templates. Copy any example and adapt it to your setup.
Distinguish strings from numbers
Check whether a value is a string or a numeric type.
{{ "hello" is string }}
{{ 42 is string }}
{{ "42" is string }}
true
false
true
Conditionally process based on type
Handle an attribute differently depending on whether it is a string or another type.
{% set val = state_attr("sensor.device", "info") %}
{% if val is string %}
Info: {{ val }}
{% else %}
Info: {{ val | tojson }}
{% endif %}
Info: Ready
Still stuck?
The Home Assistant community is quick to help: join Discord for real-time chat, post on the community forum with your template and expected result, or share on our subreddit /r/homeassistant.
AI assistants like ChatGPT or Claude can also explain or fix templates when you describe what you want in plain language.
Related template functions
These functions work well alongside this one:
-
Convert to string: string - Converts a value to its string representation.
-
Get the type of a value: typeof - Returns the type name of a value as a string.