Click in the header bar to configure your calendar — pick a country for holidays, then load your events via URL, file, or demo data.
?

How to use

Settings
Click in the header bar to open the settings panel. All configuration — holidays, event sources, filters, and sharing — lives here. Close it by clicking ×, pressing Escape, or clicking outside the panel.
Year navigation
Use the < and > buttons in the header bar to move between years.
Holidays
In settings, choose your country from the Holidays dropdown. The selection is saved and holiday data is cached locally for 30 days.
Events
In settings, each event band has a dropdown with four options: URL — enter a webcal:// or https:// calendar link and click Fetch; File — upload a .ics file from your computer; Demo — load sample data to see how the calendar looks; Clear — remove loaded events. Committed (green) is for confirmed events; Possible (yellow) is for tentative ones. URLs are saved and automatically reloaded on your next visit.
Event filtering
The calendar is designed for multi-day all-day events (trips, conferences, vacations). If you load a shared calendar that also contains appointments and single-day events, those are filtered out by default. Two checkboxes in settings control what appears: Include single-day all-day events — shows events like birthdays and holidays that span exactly one day; Include recurring all-day events — expands recurring events (e.g., weekly team days) to show all occurrences. The first occurrence of any recurring event always appears regardless of this setting.
Reading the calendar
Each row is one ISO week (Mon–Sun). Red text = public holiday. Blue background = first of the month. Green = committed event. Yellow = possible event. When green and yellow overlap, the cell is green with a yellow border. Bold red text in the Possible column = date conflicts with a committed event.
Font size
Use A− / A+ in the header bar. Range: 10–24px.
Printing
All controls and this help section are hidden when you print. Colors are preserved.
Sharing
When you have URL-based calendars loaded, a Share button appears in settings. Click it to copy a link that pre-configures the app with your calendar URLs and country. The link encodes your settings in the URL fragment (#), which never leaves your browser — it is not sent to any server. If you also have a file-based calendar loaded, you’ll need to share that file separately.

Privacy & data

Your data stays in your browser
This app stores your preferences (country, calendar URLs) and cached holiday data in your browser's local storage. This data is purely functional — it exists so the app works between visits. It is not used for tracking, analytics, or advertising, and is never sent to third parties.
Calendar URL proxy
When you fetch a calendar by URL, the request is routed through this site's server to work around browser security restrictions (CORS). The server forwards the request to your calendar provider and returns the data to your browser. The server does not store, log, or retain your calendar URLs or event data. If your URL contains authentication tokens (as iCloud URLs do), be aware the server briefly sees them in transit.
Holiday API
Holiday data is fetched from Nager.Date, a free public API. Requests go directly from your browser to their servers. Results are cached in your browser for 30 days to minimize API calls.

Calendar layout inspired by DSri Seah's Compact Calendar. Built by Brian "bex" Exelbierd. Feedback & ideas.

↑ Back to calendar