Printf-style string formatting: format
The format filter applies printf-style string formatting to a template string, replacing placeholders like %s (string), %d (integer), and %f (float) with the provided values. This is the same formatting style used in many programming languages.
This is useful when you want to build a formatted string with multiple dynamic values inserted at specific positions. For example, you might want to format a notification message with a sensor name and its value, or create a display string with a number formatted to a specific number of decimal places.
Usage
Here’s how to use this template function. Copy any example and adjust it to your setup.
{{ "Hello %s, you have %d messages" | format("Alice", 5) }}
Hello Alice, you have 5 messages
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.
format(
value: str,
*args: Any,
**kwargs: Any,
) -> str
Function parameters
The following parameters can be provided to this function.
Formatting numbers
Use %d for integers and %f for floats. You can control decimal places with %.Nf.
{{ "Temperature: %.1f degrees" | format(22.456) }}
Temperature: 22.5 degrees
Good to know
- Uses printf-style specifiers, not Python f-strings or
{0}positional placeholders. - Type must match:
%dwith a non-integer raises an error. Cast withintorfloatfirst. - A literal percent sign in the output requires
%%in the format string.
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.
Build a notification message with sensor data
Create a formatted notification message combining multiple sensor values.
{{
"The %s is %.1f°C with %d%% humidity"
| format("living room", 22.5, 65)
}}
The living room is 22.5°C with 65% humidity
Format a zero-padded number
Use %03d to pad a number with leading zeros.
{{ "Sensor ID: S-%03d" | format(7) }}
Sensor ID: S-007
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:
-
Replace occurrences in a string: replace - Replaces all occurrences of a substring with another string.
-
Truncate text to a length: truncate - Truncates a string to a given length, appending an ellipsis if it was shortened.