day_badges, and the card evaluates every badge against every event on each day — showing the badge on any day where at least one event satisfies all of the badge’s conditions. Multiple badges can appear on the same day simultaneously, which makes them well-suited for layered annotations like recurring schedule reminders, birthday markers, or availability flags.
Badge Fields
Each entry inday_badges supports the following fields:
A map of condition keys to their expected values. At least one event on the day must satisfy all specified conditions for the badge to appear.
The text label displayed inside the badge chip. You can use
text oricon; text takes precedence if both are provided.An MDI icon name (e.g.
mdi:cake-variant) displayed inside the badge. Will be dropped if text is also provided.A hex color string for the badge’s background. Defaults to the card’s accent color if not specified.
A hex color string for the badge’s foreground (text and icon color). Controls the contrast against
background_color. If omitted, the card picks a readable color automatically.Overrides the overall size of the badge chip. Accepts a number (interpreted as pixels) or a CSS length string such as
'32px'.Overrides the font size of the badge label text. Accepts a number (interpreted as pixels) or a CSS length string such as
'11px'.Condition Keys
Theconditions object matches against events on each day. All specified keys must match at least one event on that day for the badge to appear. The following fields are supported:
A Home Assistant calendar entity ID (or virtual calendar ID). The badge appears on days where at least one event belongs to that calendar.
A substring to match against event titles on a given day. The badge appears on days that have at least one event whose title contains this string. Prefix with
exact: for an exact match or regex: for a regular expression.A substring to match against the event description field. Supports the same
exact: and regex: prefixes as title.A substring to match against the event location field. Supports the same
exact: and regex: prefixes as title.When
true, the badge appears only on days that have at least one all-day event. When false, only days with at least one timed event match.When
true, the badge appears on days where at least one event is in the past. When false, only days with non-past events match.Legacy condition aliases
For backward compatibility, the card silently accepts several alternative spellings of the condition keys above. New configurations should use the canonical names (title, summary, location, calendar, all_day), but the following aliases continue to work:
| Alias | Equivalent to |
|---|---|
title_contains: foo | title: 'contains:foo' |
summary_contains: foo | summary: 'contains:foo' (same as title) |
location_contains: foo | location: 'contains:foo' |
calendar_entity | calendar |
entity_id | calendar |
entity | calendar |
all_day_event | all_day (bidirectional) |
Examples
Show a cake icon on days with birthday events
This badge watchescalendar.birthdays and renders a pink cake icon on any day that calendar has an event.
Show a badge on days with a standup meeting
This badge appears on any day that has an event whose title contains “standup”, making it easy to spot those days at a glance.Mark all-day event days with an indicator
This badge shows a calendar icon on every day that has at least one all-day event.Combine conditions for precise targeting
You can stack multiple conditions in one badge. This example shows a star icon only on days that have an event fromcalendar.work with “review” in the title.
