Meeting Overlap Finder

Enter your team's cities — up to 5 — and instantly see the only time window where everyone is awake and functional. Sleep hours (23:00–07:00) are automatically excluded for every city. Built for remote teams who value sanity over scheduling.

Add your team locations

💡 Quick tips: Type a city name and press Enter to add it. Hover over city tags to remove them. Use "Load demo" to see a working example with San Francisco, Berlin, and Singapore.
⚙️ How the algorithm works

Understanding how the Overlap Finder reaches its results helps you interpret them with confidence. Here's the step-by-step logic:

  1. Resolve timezones — Each city name is mapped to an IANA timezone identifier (e.g., "San Francisco" → "America/Los_Angeles"). The browser's Intl.DateTimeFormat API provides the current UTC offset, including DST.
  2. Define awake windows — For each city, we mark 07:00–23:00 local time as "awake" and 23:00–07:00 as "sleep hours." These are hard boundaries — no meeting will ever be scheduled during sleep hours.
  3. Find the intersection — We slide a window of your chosen duration (default 2 hours) across all 24 hours, checking whether every city is in their awake window for every minute of the meeting.
  4. Apply working-hour preference — If the intersection contains windows within 09:00–18:00 local time for all cities, we prefer those. If not (common with 4+ cities), we relax to the "least-damaging" option — any time outside sleep hours.
  5. Select the best window — Among all valid windows, we pick the earliest one (in UTC) to minimize ambiguity. The result shows UTC time plus local times and physiological states for each city.

This deterministic approach means you'll always get the same result for the same input, every time. No randomness, no AI, no surprises.

🎯 Common use cases

Daily standup across 3 timezones

Your team spans New York, London, and Berlin. The Overlap Finder shows you at a glance that 15:00–15:30 UTC works for everyone — 11am New York, 4pm London, 5pm Berlin. Quick, clean, no email ping-pong.

Weekly sprint planning with 4 timezones

San Francisco, São Paulo, Berlin, and Mumbai. With 4 cities, the overlap is tight — but the Overlap Finder finds the 2-hour window that works. You see that São Paulo will be "Focused" while Mumbai starts "Getting tired," giving you context for agenda planning.

Client call with external stakeholders

You're in Tokyo, your client is in London, and their partner is in New York. Before sending that calendar invite, run the Overlap Finder to make sure 20:00 JST actually works for everyone — and see that it's 12pm New York and 5pm London.

All-hands meeting across 5+ offices

If the Overlap Finder says "No overlapping window found," that's valuable information. It tells you that this meeting needs to be async. Record it, share the recording, and use async Q&A instead.

🌍 Supported cities & timezones

The Overlap Finder supports 26 major cities covering all primary timezones. If your city isn't listed, choose a nearby city in the same timezone (e.g., "Los Angeles" for Seattle or Vancouver).

CityTimezone (IANA)
New YorkAmerica/New_York
San FranciscoAmerica/Los_Angeles
ChicagoAmerica/Chicago
DenverAmerica/Denver
TorontoAmerica/Toronto
VancouverAmerica/Vancouver
Mexico CityAmerica/Mexico_City
São PauloAmerica/Sao_Paulo
LondonEurope/London
BerlinEurope/Berlin
ParisEurope/Paris
MadridEurope/Madrid
MoscowEurope/Moscow
IstanbulEurope/Istanbul
DubaiAsia/Dubai
MumbaiAsia/Kolkata
SingaporeAsia/Singapore
TokyoAsia/Tokyo
SeoulAsia/Seoul
ShanghaiAsia/Shanghai
Hong KongAsia/Hong_Kong
BeijingAsia/Shanghai
SydneyAustralia/Sydney
MelbourneAustralia/Melbourne
AucklandPacific/Auckland

Missing a city? Let us know and we'll consider adding it in a future update.

🧠 Physiological state reference

Each participant receives a label based on their local time during the meeting window. These labels help you understand not just when people are available, but how they're likely to feel:

Local TimeLabelBest forAvoid
06:00–09:00Just woke upStandups, quick syncsComplex decision-making, creative brainstorming
09:00–12:00FreshStrategic discussions, planning, creative workRoutine status updates (save these for low-energy time)
12:00–14:00Lunch zoneQuick check-ins, async-friendly discussionsLong presentations, workshops
14:00–17:00FocusedCode reviews, design critiques, decisionsBrainstorming (do this in the "Fresh" window)
17:00–20:00Getting tiredShort standups, clear agenda items onlyComplex discussions, confrontational topics
20:00–23:00Evening family timeEmergency calls onlyRegular meetings — respect personal time
23:00–06:00❌ ExcludedNever scheduled. Sleep is non-negotiable.
📖 How to use
  1. Add cities — Type a city name and click "Add City" or press Enter. Add up to 5 cities where your team members are located. Choose from 26 supported timezones.
  2. Set duration — Choose how long your meeting should be. The default is 2 hours, but you can adjust from 30 minutes to 3 hours.
  3. Read the results — The tool shows the best overlapping window in UTC time, plus local times and physiological states ("Fresh", "Focused", "Getting tired") for each city.
  4. Send to Invite Generator — Click "Send to Invite Generator" to automatically populate the invite tool with the same time and cities.

Example input: San Francisco, Berlin, Singapore

Typical result: "16:00–18:00 UTC" → 9am in San Francisco, 5pm in Berlin, midnight in Singapore. This is the most balanced option for these three cities.

If no perfect window exists, we show the least-damaging option — relaxing the working-hour constraint while still protecting everyone's sleep hours. Sleep is always the hard constraint.

🎯 Demo case

Default demo: San Francisco + Berlin + Singapore

San Francisco is UTC-7 (PDT), Berlin is UTC+2 (CEST), Singapore is UTC+8 (no DST). The tool finds the best overlap: 16:00–18:00 UTC.

With this window:

  • San Francisco: 9am–11am PDT → "Fresh" — peak morning energy for discussion
  • Berlin: 5pm–7pm CEST → "Getting tired" — keep the meeting focused
  • Singapore: 12am–2am SGT → Night time (excluded by default)

In this case, the tool finds 16:00–18:00 UTC as the best compromise. It's a reminder that with 3 cities spanning 15 hours of timezone difference, there's always someone at a less-than-ideal time. The label helps you understand who that is and plan accordingly.

❓ FAQ
Why doesn't it support more than 5 cities? +
With 6+ timezones, the probability of finding any usable overlap drops below 40%. We cap at 5 to avoid frustration. For larger teams, we recommend using async communication or splitting into regional sub-groups. Our research shows that 5-timezone teams already struggle — beyond that, synchronous meetings become counterproductive.
Can I customize the sleep hours (23:00–07:00)? +
Not in the current version. Sleep hours are fixed at 23:00–07:00 local time for each city. This is based on general circadian science — most people's sleep windows fall within this range. Custom sleep schedules may be available in a future version if enough users request it.
Does it account for public holidays? +
No, the current version does not integrate holiday calendars. Public holidays vary by country, region, and even city. Please manually check for holidays in your team members' locations before scheduling important meetings.
What does the "physiological state" label mean? +
Each city gets a label based on the local time of the meeting window — e.g., "Fresh" (9am–12pm), "Focused" (2pm–5pm), or "Getting tired" (5pm–8pm). These labels give you a quick sense of each participant's likely energy level during the meeting. Use them to plan your agenda — put important decisions in the "Fresh" window and routine updates in lower-energy windows.
Does it handle Daylight Saving Time correctly? +
Yes. We use the browser's built-in Intl.DateTimeFormat API, which automatically accounts for DST transitions. Whether a city is on standard time or daylight time is handled transparently — you never need to think about it. This is particularly important for cities like New York and London that change their offsets twice a year.
Does it store my city data? +
No. All calculations happen in your browser. No data is sent to any server or stored anywhere. No cookies are used for this tool. When you refresh the page, everything resets — this is intentional and by design for your privacy.
Can I send the result to the Invite Generator? +
Yes! After finding your overlap, click "Send to Invite Generator" in the result box. It opens the Invite Generator page with the time and cities pre-filled via URL parameters. This seamless workflow saves you time and reduces errors from manual re-entry.
Why does the algorithm sometimes show a time outside 9-to-5? +
The algorithm uses a two-phase approach. First, it searches within 09:00–18:00 local time for all cities. If no window exists (common with 4+ cities), it falls back to the "least-damaging" option — any time outside sleep hours (07:00–23:00). Sleep protection is always the hard constraint that cannot be relaxed.
How accurate are the timezone offsets? +
The tool uses your computer's built-in timezone database via the Intl.DateTimeFormat API, which is the same database used by operating systems worldwide. It's accurate to the minute and accounts for historical and current DST rules. The offsets reflect the current time — if you're scheduling for a future date, the offset may change due to DST transitions.