If you find Calendar Card Pro useful, consider supporting its development:
ย
This README covers installation and a quick start. Everything else โ every configuration option, all features and worked examples โ lives on the documentation site, which is searchable and always matches the latest release.
| ๐ Installation | Set the card up via HACS or manually |
| ๐ Usage | Add the card and configure it visually |
| โจ Features & Configuration | Weather, templates, layout, actions, and more |
| ๐ Configuration Options | Complete reference for every option |
| ๐ก Examples | Ready-made configurations to copy |
| ๐ Release Notes | Full history of every release |
ย
Calendar Card Pro was inspired by a beautiful calendar design using button-card and Hass calendar add-on shared in the Home Assistant community. While the original design was visually stunning, implementing it with button-card and card-mod led to performance issues.
This motivated me to create a dedicated calendar card that excels in one thing: displaying upcoming events beautifully and efficiently.
Built with performance in mind, the card leverages intelligent refresh mechanisms and smart caching to ensure a smooth experience, even when multiple calendars are in use.
- ๐จ Sleek & Minimalist Design โ Clean, modern, and visually appealing layout.
- โ Multi-Calendar Support โ Display multiple calendars with unique styling.
- ๐ Compact & Expandable Views โ Adaptive views to suit different dashboard needs.
- โ๏ธ Visual Configuration Editor โ Intuitive interface for effortless card setup.
- ๐ง Highly Customizable โ Fine-tune layout, colors, event details, and behavior.
- ๐ฆ๏ธ Weather Integration โ Display weather forecasts alongside your calendar events.
- โก Optimized Performance โ Smart caching, progressive rendering, and minimal API calls.
- ๐ก Deep Home Assistant Integration โ Theme-aware with native ripple effects.
- ๐ Multi-Language Support โ Available in 35 languages, community contributions welcome!
Calendar Card Pro requires at least one calendar entity in Home Assistant. It is compatible with any integration that generates calendar.* entities, with CalDAV and Google Calendar being the primary tested integrations.
The easiest way to install Calendar Card Pro is via HACS (Home Assistant Community Store).
- Ensure HACS is installed in Home Assistant.
- Go to HACS โ Frontend โ Custom Repositories.
- Add this repository:
https://github.com/alexpfau/calendar-card-proas typeDashboard - Install Calendar Card Pro from HACS.
- Clear your browser cache and reload Home Assistant.
๐ Click to expand manual installation instructions
-
Download both files from the latest release:
๐ calendar-card-pro.js and editor.js -
Put both files into a folder of their own under
www:
/config/www/calendar-card-pro/The card ships as two files:
calendar-card-pro.jsandeditor.js. Both must sit in the same folder, andcalendar-card-pro.jsis the only one you name as a resource โ the card loads the editor itself, when you open it. Use a subfolder rather than/config/www/directly: that folder is shared by every hand-installed card, andeditor.jsis a common enough name that another file can take it. HACS does all of this for you, which is why it is the recommended route. -
Navigate to: Home Assistant โ Settings โ Dashboards โ Resources โ Add Resource
-
Add the resource to your Lovelace Dashboard:
url: /local/calendar-card-pro/calendar-card-pro.js
type: module- Clear cache & refresh your browser to apply changes.
Add the card from your dashboard's โ Add Card picker โ search for "Calendar" โ then click
the three dots (โฎ) โ Configure to open the visual editor.
Shortcut (Home Assistant 2026.6+): In the card picker, switch to the By entity tab and pick any
calendar.*entity. Calendar Card Pro is offered under Community, already pointed at that calendar and previewed with its real events.
Prefer YAML? This is a complete, working configuration:
type: custom:calendar-card-pro
entities:
- calendar.family
days_to_show: 3
show_location: false
show_month: falseSwap calendar.family for one of your own calendar.* entities and you have a working card.
โก๏ธ From here, Usage walks you through multiple calendars, per-calendar colors and compact mode. Every available option is listed in the Configuration reference, and more ready-made setups are in Examples.
โก๏ธ View the Full Release Notes for a complete list of features.
- ๐ง Shared Events, Clearly Marked: Merged duplicates show every contributing calendar's label instead of only the first; set
duplicate_accent_colorto give shared events a color of their own - ๐ Countdowns Follow Calendar Dates: Countdowns now say "tomorrow" for the next date and stop skipping days between later dates; same-day starts keep clock countdowns, while distant dates retain natural month/year wording
- ๐ Allowlists & Blocklists Work Together: Combined filters now keep only events that match the allowlist and escape the blocklist, rather than silently ignoring the blocklist
- ๐ท๏ธ All-Day Events, as a Pill:
allday_badgedraws a rounded pill in each calendar's own color, around the event title the way Google and Apple Calendar do, or beside the clock,allday_badge_styleoffers four shapes andallday_badge_colorpicks the color they are drawn in โ each calendar's own, the row's own text color, or one you name. Off by default; tryallday_badge: titlefirst - ๐จ Follow Home Assistant's Calendar Colors and Icons: Set
accent_colortohome-assistantand each calendar takes the color Home Assistant holds for it. Set itslabelthe same way for that calendar's icon - ๐ง A Person's Photo in Front of Their Calendar: Set a calendar's
labelto a person entity ID and the card shows that person's picture โ faces instead of words on a household dashboard - ๐๏ธ Split One Calendar by Event Type:
event_typetakesall,timedorall_day, card-wide or per calendar โ list one calendar twice for a color on each, and Duplicate in the editor builds it for you - ๐ Two New Per-Calendar Filters:
allday_expires_atretires an all-day event partway through the day, so a bin collection stops sitting on the card until midnight, anddays_of_weekkeeps one calendar to weekdays or weekends - ๐ Ages on Birthdays, Counts on Anniversaries: Write
YEAR=1976in a birthday event's description and the card appends the age to the title โ nothing to configure, and it stays right every year - โ๏ธ Rewrite What an Event Says:
replace_pattern,replace_withandreplace_fieldrewrite one field of a calendar's events as the card draws them, leaving the calendar untouched. One Calendar, Many Purposes puts this and three of the options above into a single card
- ๐๏ธ Column View: Lay the days side by side, one column each, instead of stacking them โ the same agenda, rotated, with its own per-view overrides and a responsive fallback to the list layout
- โ๏ธ Rebuilt Visual Editor: Nine panels built on Home Assistant's own form components, with a search box that finds any setting by name or YAML key, a customized-only filter, per-calendar settings, and per-view exceptions
- โก 41% Smaller to Download: The editor moved into a file the card fetches only when you open it, taking it and all its translations off the path every dashboard pays for
- โก Fewer Round-Trips on Every Page Load: One card load asked Home Assistant for the same events up to four times; requests are now deduplicated, and two display-only switches no longer discard a valid cache entry
- ๐ Eleven Editor Languages: Nine newly translated in full โ German, Estonian, Italian, Latvian, Lithuanian, Norwegian Bokmรฅl, Polish, Slovak and Swedish โ alongside US and British English, with per-string fallback so a partial translation still renders
- ๐ Dates, Clocks and Week Numbers: Week numbers were wrong for one date in seven outside UTC, the clock format disagreed with Home Assistant's own locale data for 33 of its 64 languages, and
first_day_of_week: systemreturned Monday to everyone โ ๏ธ Breaking: Manual installs now copy two files,event_icon_vertical_alignmentdefaults totop, and weather badges are styled through custom properties instead of inline styles
- ๐ A Documentation Site: The full manual now lives at calendar-card-pro.alexpfau.com โ a page per feature, a complete configuration reference, and ready-made examples
- ๐ One Stray Line of YAML Broke the Card: A bare
-left in theentities:list replaced the whole calendar with a red error box; malformed entries are now discarded - ๐ Per-Calendar Settings Applied Late: Editing a per-calendar label, colour or toggle did nothing until the cache expired โ edits now apply immediately
- ๐ Disappearing and Ellipsised Text: Titles gained a
โฆwhen nothing had been truncated, and long words in descriptions and locations were clipped mid-character with no warning - ๐ Multi-Day Countdowns: Each row of a split multi-day event counted differently; every row now counts whole calendar days to its own date
Older releases are covered in the Full Release Notes.
Want to improve Calendar Card Pro? I welcome contributions of all kinds โ whether it's fixing bugs, improving performance, or adding new features!
git clone https://github.com/alexpfau/calendar-card-pro.git
npm install
npm run devThen open a Pull Request against the dev branch.
- ๐ Contributing guide โ full workflow, coding standards, and how to add a translation
- ๐๏ธ Architecture documentation โ module responsibilities, data flow, and performance design
- ๐ Adding a translation? The card speaks 35 languages and the visual editor 11 โ new ones are always welcome.
๐ก Got a feature request? Open a GitHub Issue or start a discussion!
- Original design inspiration from Calendar Add-on & Calendar Designs by @kdw2060.
- Interaction patterns inspired by Home Assistant's Tile Card, which is licensed under the Apache License 2.0.
- Material Design ripple interactions, originally by Google, used under the Apache License 2.0.
Calendar Card Pro is released under the MIT License. Full third-party attributions are listed in NOTICE.

