Meeting Planner

The fairest time to meet across time zones, for up to 12 people — each with their own hours, working days and days off. Answer first: ranked slots showing everyone's local time and local date, an overlap grid as proof, and a calendar file to send. Nothing you type leaves your browser.

Find a meeting time

The first participant is the organizer: dates and the grid axis are read in their calendar.

Participants

Add at least one participant and choose a date.

Finding the best time to meet across time zones

Two zones are easy; three is where scheduling stops being arithmetic. A New York–London pair shares a comfortable window every weekday (9 AM–noon Eastern is 2–5 PM in the UK). Add Singapore and the shared window disappears entirely, because Singapore's working day ends before New York's begins. That is not a failure of planning — it is the shape of the planet — and the useful answer is not "no overlap" but which compromise costs the least, and who pays it.

So this planner does not hunt for a magic hour when everyone is at their desk. It scores every possible start time against every participant, individually, and ranks the results. Each person contributes their own zone, the hours they prefer to work (9:00–17:00 by default), the hours they will accept under protest (7:00–21:00 by default, and a hard boundary — nothing outside it is ever proposed), their working days, and any dates they are simply out.

What the ranking actually measures

For every participant at every candidate slot, the planner measures five things separately rather than collapsing them into one vague score:

  • Minutes before preferred hours — how much of the meeting lands before their day normally starts, at 1 point per minute.
  • Minutes after preferred hours — the same for the evening side.
  • Sleep intrusion — minutes inside 23:00–06:00 local, weighted 6× heavier, because a 3 AM call is not simply "six hours early".
  • Weekend and non-working days — checked against that person's local calendar, and reported as two separate facts: the calendar weekend, and their own declared working week.
  • Local-date displacement — whether the slot falls on a different date for them than for the organizer.

Those weights are our conventions, not a standard — nobody has established what an hour of someone's evening is worth. They are published on the methodology page and shown on every result, so you can disagree with the arithmetic rather than with a black box.

The ranking itself is deliberately fairness-first: minimize the worst single person's burden, and only then minimize the total. A slot that costs four people twenty minutes each beats one that costs a single person their whole night, even though the second has a lower total. Every result carries a "why this slot" panel built from the same numbers the ranking used — the explanation is read out of the scoring data, never written separately from it.

"What day will it be for them?"

This is the failure mode that plain hour-math misses, and it has a name here: local-date displacement. Sydney's Monday 9 AM is still Los Angeles' Sunday afternoon. A 4 PM Friday call in San Francisco is Saturday morning in Australia — one participant's Friday is another's Saturday, and the invitation that says "Friday at 4" is telling half the room the wrong day.

Every result on this page prints each participant's local date and weekday next to their local time, and marks the shift explicitly (for example, Sat 09:00 (+1 day)). The overlap grid strikes out whole rows where a person's local day is a weekend or a day off. When you send the .ics file, the times are stored in UTC, so each attendee's calendar renders the correct local day for them automatically — which is the only reliable fix for this problem in the invitation itself.

Getting the slot out of here and into a calendar

Picking the time is half the job; the other half is telling people, and that is where a cross-zone meeting usually goes wrong. So every ranked result carries a hand-off row. We do not send invitations. There is no mailbox here, no account, no address book and no integration — the invite goes out from your own calendar or chat, from your own address, which is also the only way the people you invite will recognise and trust it.

The .ics file is the universal option, and it is listed first for that reason. It is not a Windows thing or an Outlook thing: .ics is iCalendar, the open standard written down in RFC 5545, and Google Calendar, Apple Calendar, Outlook, Thunderbird and Fastmail all import it. The time inside is stored in UTC, so whoever opens it sees the correct local time and the correct local date in their own zone, without anyone having to do the arithmetic in an email.

Next to it is an Add to Google Calendar link. That is a plain URL with the event details in its query string — no API, no sign-in to us, no key, and nothing transmitted from this page. Clicking it takes you to Google's own event composer with the title, both instants and the participant breakdown already filled in; you still press Save yourself, and from that moment you are on Google's site under Google's terms. There is no Outlook button at the time of writing: the Outlook deeplink format is not published by Microsoft and we could not confirm it end to end, and an unverified calendar link that quietly drops the time is worse than no link. The .ics file covers Outlook properly in the meantime.

Finally, Copy invite text gives you the wording for a message, in two lengths. Both list every participant's local time and local date and weekday, because that pair is exactly what invitations get wrong; the detailed version adds the absolute UTC instant and names the people for whom the meeting falls on a different calendar day. What will be copied is shown on the page before you copy it, and if your browser blocks clipboard access the text is selected for you to copy by hand rather than silently lost.

When there is genuinely no good time

San Francisco and Auckland share no office hours at all — the honest answer is that somebody must move. So when nothing is feasible the planner does not simply report failure: it computes the smallest single change that would produce a workable slot, taken from the constraint that actually blocked the nearest miss. "Extend Diego's acceptable hours to 07:00" is a real number derived from a real candidate window, and the instant it unlocks is attached to the suggestion. Shortening the meeting and moving to a nearby date are tested the same way, by re-solving, not by guessing.

For a standing meeting, the fair response to an unavoidable bad slot is to share it. Set the number of occurrences and the planner distributes the burden across the series instead of pinning it to the same person every week — and tells you how much better that is than reusing the single best slot, including when the honest answer is "not at all". That plan is computed for the series in front of you and travels in the share link; there is no stored history of who suffered last time, and the page will not pretend otherwise.

Using it as a time zone meeting planner for a distributed team

Set each teammate up once — their zone, their real working hours, their working week, the days they are out — then copy the share link. The link carries the whole setup, so the next meeting is a matter of changing the date. Your rows are also kept in this browser's local storage, so the form survives a reload without an account. Search a range of up to 14 days when the date is flexible; the planner will tell you which day of that window is least painful, along with everything it ruled out and why.

Older share links still work. The previous version of this page encoded a comparison as ?date=…&a=…&b=…, and any link in that shape still opens here, upgraded to the current defaults.

Frequently asked questions

How do I find the best time to meet across time zones?

Add each person with their own time zone, the hours they prefer to work and the hours they will accept at a push, then pick a date or a range. The planner tests every 30- or 60-minute start in that window, throws out anything outside somebody’s acceptable hours, and ranks what is left so the worst-affected person is as well off as possible. The top result is the fairest workable time, not merely the one that suits the most people.

How do I read the overlap grid?

One row per participant, running across the organizer’s 24-hour day. A solid block is inside that person’s preferred hours; a lighter block is inside their acceptable hours but outside their preference; a struck block is outside their hard limits, a day off, or a date they marked unavailable. The strip underneath counts how many people are comfortable at each hour and marks the winning window. Every grid also has a text version underneath it for screen readers and for anyone who would rather read the numbers.

What day will it be for them?

Often not the same one. A 4 PM Friday call in Los Angeles is already 9 AM on Saturday in Sydney — the meeting is on two different dates at once, and half of scheduling’s worst mix-ups start there. Every result on this page shows each participant’s local DATE and weekday alongside their local time, and marks the shift explicitly, so an invitation that says "Friday" cannot quietly mean Saturday for someone.

Why does it sometimes pick a slot that inconveniences more people?

Because it minimizes the worst individual burden before it minimizes the total. A slot that costs four people twenty minutes of their evening each ranks above one that costs a single person their entire night, even though the second has a lower total. Sharing a small cost is fairer than concentrating a large one; the "why this slot" panel on each result shows the exact numbers that decided it.

Does it know about public holidays?

No, and it will not pretend to. We ship no holiday database, because holiday calendars are national, regional, religious and company-specific all at once, and a wrong one is worse than none. Instead each participant has an "unavailable dates" field: type the dates that person is out and they become hard constraints, exactly as if the hours did not fit.

What happens when there is no workable time at all?

Some spreads genuinely have no answer — San Francisco with Auckland inside normal office hours has none at all. Rather than shrug, the planner computes the smallest single change that would create one: extend one person’s acceptable hours by a specific number of minutes, shorten the meeting to a specific length, allow a specific weekday, or move to a specific nearby date. Each suggestion is derived from the window it would actually unlock, never invented.

How does the weekend and working-day detection work?

Against every participant’s LOCAL calendar, not the organizer’s. A Friday-afternoon call in Los Angeles is Saturday in Sydney, and Sydney’s row says so. Working days are per participant, so a Sunday-to-Thursday week is set by unticking Friday and Saturday and ticking Sunday — there is no assumption that the weekend is Saturday and Sunday everywhere.

Can it rotate who takes the awkward slot?

Yes, for a recurring series. Set the number of occurrences and the planner assigns each one a slot so the cumulative burden across the series is spread as evenly as it can be, and shows you the resulting balance against simply reusing the best slot every time. This is computed for the series in front of you and encoded in the share link — nothing is stored, so there is no memory of what happened at your last meeting.

What does the .ics download do?

It builds an iCalendar file for the chosen slot. This is the universal option, not a Windows or Outlook one: .ics is the open standard defined in RFC 5545, and Google Calendar, Apple Calendar, Outlook, Thunderbird and Fastmail all import it. The time inside is stored in UTC, so whoever opens it sees their own local time and their own local date automatically, which removes the classic "wait, whose 9 AM?" failure from the invitation itself. The file is generated entirely in your browser.

Do you send the invitations?

No. There is no mailbox here, no account and no address book, and nothing on this page contacts your calendar. The hand-off row gives you a calendar file, a link that opens your calendar provider's own event composer with the details pre-filled, and copy-paste invite wording — you send it, from your own address, so the invitation comes from you and the people you invite recognise the sender.

What happens when I click "Add to Google Calendar"?

Your browser goes to calendar.google.com carrying the event details in the link itself — a URL template, not an API call. We hold no key, request no permission and transmit nothing; the event is pre-filled in Google's composer and you still press Save yourself. From the moment you click, you are on Google's site and Google's own privacy terms apply, which is worth knowing because it is the only outbound link the planner produces. There is no Outlook button yet: Microsoft does not publish its deeplink format and we would not ship a calendar link we could not verify end to end. The .ics file covers Outlook, and every other calendar.

Is anything I type sent anywhere?

No. Every calculation runs in your browser against its own IANA time zone data. Participant names, hours and unavailable dates stay on your device — kept in local storage so the form survives a reload — and are only ever transmitted if you choose to copy the share link and send it yourself.

Everything is computed locally in your browser from its IANA time zone data; nothing you enter is transmitted. The one exception is deliberate and under your finger: if you click a calendar link, your browser carries the event details to that provider's site, where their terms apply. There is no holiday database — days off are the ones you enter. See the methodology page for the weights, the fairness policy, and what this tool deliberately does not know.