Holiday Mashup Every country's holidays, one calendar

About Holiday Mashup

Holiday Mashup merges the public holidays of any number of countries into one calendar, so a team spread across borders can see which days some or all of them are away.

If you work with people in more than one country, you know the questions. Is anyone off next Thursday? Which week in December is a write-off? Is there an hour tomorrow when all four of us are at our desks? Answering them usually means opening several calendars and doing the arithmetic yourself. This does it in one view, in your browser, with no account and nothing to install.

How overlapping days are counted

Every day shows how many of your selected countries are off. Pick three countries and a day where two of them have a holiday gets a 2/3 chip. Turn on Shared days only to narrow the calendar to the days two or more countries have in common.

A day is marked ALL only when every holiday on it is nationwide. A regional holiday means part of that country is working normally, so the full-closure badge would be wrong in the direction that gets a meeting booked into a day half your colleagues are away.

Turning holidays into time off

A holiday on a Thursday plus one booked day is a four-day break. The Breaks view does that arithmetic across your whole selection. Tell it how many days of leave you have and it lists the spans they buy, best value first, with the exact dates to book. Long weekends that cost nothing are listed too. Each span is drawn a day at a time, so you can see the trade rather than read it: filled squares are public holidays, pale ones the weekend, and outlined ones the days you'd be booking.

Each break says which countries it works for. Turn on Works for everyone to see only the spans where the whole selection is away at the same time, which is the difference between a break and a break where nobody is emailing you. If no such span exists, the view says so and tells you how close the best one came.

Two details the arithmetic depends on. Only nationwide holidays count towards a break, because booking leave around a regional day off you don't actually get is an expensive way to be wrong. And weekends aren't assumed to be Saturday and Sunday: in Israel and much of the Gulf they're Friday and Saturday, and getting that backwards would offer people leave on the days they were already off.

The planner also reads a few weeks either side of the year you're viewing. The Christmas-to-New-Year break is the most valuable one in most calendars and it sits exactly on the boundary, so a view that stopped at 31 December would cut it in half.

Meeting windows across time zones

A free day still needs an hour when everyone is awake. The meeting view works out which hours fall inside working time in every selected country at once, resolving each country's offset on the date you're looking at, so daylight saving is handled rather than approximated. Sometimes there is no such hour, and that gets reported plainly along with how close the best candidate came.

When the clocks change

A meeting window is only true for the date you picked it on. Somewhere between now and the next occurrence a country moves its clocks, and a recurring invite that suited everyone becomes an early morning for someone. The DST view lays out a whole year of clock changes for your selected countries. The meeting view carries a shorter warning: pick a date within a fortnight of a clock change and it tells you what that window turns into afterwards.

Countries spanning more than one offset get a row per zone. Arizona never moves while the rest of the United States does, so a single row for "the US" would have to be wrong about one of them. Underneath, Out of step lists the stretches where two countries sit an unusual distance apart. The United States springs forward three weeks before the European Union and falls back a week after it, so for those weeks New York is an hour closer to Berlin than either side expects. Short windows are highlighted: three weeks is long enough to hold several meetings and short enough that nobody remembers it's happening.

The dates come from your browser's own copy of the IANA time zone database. Each zone is sampled across the year and every change narrowed down to the exact instant, rather than read out of the database's rules, because the rules get exotic and sampling doesn't care. Lord Howe Island shifts by half an hour. Morocco sits on UTC+1 all year and steps back for Ramadan, so its first change of the year runs the opposite way to everyone else's. Both come out right.

Four ways to look at a year

  • Month: a full grid with each country's holidays colour-coded. Click any day for the detail: country, the holiday's English and local name, and whether it's national or regional.
  • Year: all twelve months at once, shaded by how many countries are off each day. This is the view for spotting clusters, and it prints to a single A4 landscape sheet in ink rather than colour, with the shared dates listed underneath.
  • Agenda: the same holidays as a chronological list, for reading rather than scanning.
  • Breaks: where your leave buys the most time off, ranked by value.

Sharing a mashup

Every change is mirrored into the address bar, so a link always reproduces what you were looking at. Copy the URL and the person you send it to sees the same countries, year, view and filters.

ParameterMeaning
cComma-separated ISO country codes
yYear (1970 to 2100)
mMonth, in month view
vmonth, year, agenda, breaks, meet or dst
leaveDays of leave to spend, in breaks view
shared1 when the shared-days filter is on
embed1 for chrome-free rendering in an iframe

A shared link wins over your own saved setup for that visit only, so opening someone else's mashup doesn't overwrite yours. Unknown country codes, out-of-range years and unrecognised views fall back to the defaults instead of erroring.

Adding embed=1 strips the surrounding chrome, which makes the calendar reasonable to drop into a team wiki or dashboard in an iframe.

Exporting to your own calendar

The merged year downloads as a standard .ics file that Google Calendar, Outlook and Apple Calendar all import. It exports whatever is on screen, so with the shared-days filter on you get only the days your countries have in common rather than several hundred entries you don't need.

Exporting from the breaks view gives you the days to book instead of the holidays. A leave planner that handed back the public holidays would be returning the one part of the answer you already had.

Where the holiday data comes from

Public holidays come from Nager.Date, a free and open public-holiday API covering around 100 countries. Your browser calls it directly. Holiday data is messy: countries move observances, declare one-off days and disagree with themselves about regional scope. If a date looks wrong, Nager.Date is where it can be checked and corrected at source.

Privacy

There are no accounts and no advertising or analytics trackers. Your country selection, view, filters and theme are kept in your browser's localStorage so the app remembers you between visits; clearing your site data removes them. The visit counters in the footer use a keyless public counter service that only ever increments a number. No profile, no identifiers.

Accessibility

The calendar is a proper ARIA grid with full keyboard navigation: arrow keys between days, PageUp and PageDown between months, Enter to open a day's details. Dialogs trap focus and return it where it came from, changes are announced to screen readers through live regions, and both the light and dark themes meet WCAG AA contrast.

Questions

How do I find the days my whole team is off?

Select every country your team sits in, then switch on Shared days only. The calendar reduces to the days at least two countries share, and days where everyone is off are marked ALL.

How do I turn one day of leave into four days off?

Open the Breaks view and set your leave budget. It finds the holidays that fall a day away from a weekend and tells you which day to book to join them up, ranked by how much time each day of leave buys.

Why does a day show 2/3 rather than ALL?

Either only two of your three countries have a holiday that day, or all three do but at least one is regional rather than nationwide, which means part of that country is still working.

Can I add these holidays to Outlook or Google Calendar?

Yes. Export the merged year as an .ics file and import it. Whatever filters are active carry through to the export.

Which countries are covered?

Everything Nager.Date covers, which is roughly 100 countries, all listed in the country picker.

Does it cost anything?

No. It's free, with no account and no signup.

Open the calendar →