Tips for Working Across Time Zones, and How to Schedule Meetings
Working across time zones works when the team writes things down, keeps a short overlap window for live talk, says the zone with every time, and lets tools deliver messages in each person's working hours. Ten habits, a follow-the-sun handoff note, the Slack settings that help, and a script that shows your team's local times.
On this page
The short version: default to writing, keep two shared hours a day for live talk, put a time zone on every time you write, and let tools deliver your messages during the other person's working day. Everything else on this page follows from those four habits. The hardest part is not the clock; it is that a question sent at the end of your day waits a full day for an answer unless you write it so it can be answered without you.
The Slack settings we name were checked in the Slack desktop app on 28 September, and the script below was run the same day.
Across time zones, your Slack dot also says less than people think. It turns grey 10 minutes after your last keyboard or mouse input, so a colleague in another zone may see you as away in the middle of your day.
10 habits for teams across time zones
- Default to async. Write a question so it can be answered without a call: the context, what you already tried, and what you need by when. "Can we chat?" costs a day; "Should the export include deleted rows? I lean no because of X. Need an answer by Thursday" does not.
- Agree on overlap hours. Pick one or two hours a day when everyone is online, and keep meetings inside them. How to find that window is in the meeting section below.
- Say the zone every time. "Friday 5 PM CET", not "end of day". "EOD" means three different moments in a team of three.
- Schedule, do not ping at night. Write the message when you think of it, and schedule it to arrive at 9 AM their time. See how to delay and schedule Slack messages.
- Show your working hours. Set them in Slack and in your calendar, so people can see when you will answer without asking.
- Hand off with a note. At the end of your day, write what is done, what is blocked, and what the next person should do first.
- Rotate the bad slot. If one region always takes the 10 PM call, move it around every few weeks.
- Record and summarize meetings for the people who were asleep, and give them a day to comment before decisions are final.
- Write deadlines in UTC, or in a form that each reader sees in their own time.
- Watch daylight saving weeks. Europe and the US change clocks on different dates, so for a few weeks a year the gap moves by an hour.
- • Pick the hour that fits most people, and record the meeting for the one who cannot join.
- • Split it. One meeting for the Americas and London, one for London and Bangalore, with London as the link, is usually fairer than rotating one person into the night.
- • Go async. A written update in a Slack thread, answered in each person's morning, often replaces the meeting.
- • Google Calendar. In Settings, Time zone, turn on a secondary time zone to see two columns side by side. When you create an event, open the details and click Time zone to set the meeting in another zone, and use Find a time to see guests' free and busy blocks.
- • Outlook. In calendar settings you can show additional time zones next to your own. In a new event, Time zones lets you set a start and end zone, which helps for a meeting booked in the host's city. The Scheduling Assistant shows attendees' free and busy time.
- • Microsoft Teams. Teams meetings live in your Outlook calendar and use its time zone. Use the Scheduling Assistant in the new meeting form to see who is free.
- • Slack. Click a teammate's name to see their local time on their profile, covered in how to see someone's time zone in Slack. Make sure your own zone is right before a trip: how to change time zone in Slack.
How to schedule a meeting across time zones
Write down each person's working hours in UTC, pick the hour where the most people are inside their working day, and send the invite from a calendar that shows every guest their own time. If no hour works for everyone, rotate the late slot. Here is a team of four with 9 AM to 6 PM local hours, on Wednesday 4 November 2026:
| Person | Local hours | Same hours in UTC |
|---|---|---|
| Ana, San Francisco (PST, UTC-8) | 9 AM to 6 PM | 17:00 to 02:00 |
| Ben, New York (EST, UTC-5) | 9 AM to 6 PM | 14:00 to 23:00 |
| Chloe, London (GMT, UTC+0) | 9 AM to 6 PM | 09:00 to 18:00 |
| Dev, Bangalore (IST, UTC+5:30) | 9 AM to 6 PM | 03:30 to 12:30 |
At 17:00 UTC three of the four are inside their day. Dev would be at 10:30 PM. No hour covers all four, because San Francisco and Bangalore are 13 and a half hours apart. Then you have three options:
Daylight saving weeks move the gap
Europe and the US change clocks on different dates, so for about three weeks a year the gap between them is one hour shorter. We checked these dates with Python's zoneinfo on October 6, 2026:
| Period | New York to London |
|---|---|
| Until 24 October 2026 | 5 hours |
| 25 to 31 October 2026 | 4 hours |
| 1 November 2026 to 13 March 2027 | 5 hours |
| 14 to 27 March 2027 | 4 hours |
| From 28 March 2027 | 5 hours |
India does not use daylight saving, and most of Australia moves its clocks in the opposite season. A recurring meeting set in one person's zone stays fixed for them and moves by an hour for everyone else in those weeks.
Send the invite so everyone sees their own time
Calendar invites store the meeting as an absolute moment, so each guest sees it in their own zone. The mistakes happen in the text around it. Write times with a zone ("5 PM GMT / 9 AM PT"), never "3 o'clock".
Find the best hour with a script
This Python script checks a date and lists the three UTC hours where the most people are inside their working day. It uses only the standard library (Python 3.9 or newer for zoneinfo):
from datetime import date, datetime, timezone
from zoneinfo import ZoneInfo
TEAM = {
"Ana (San Francisco)": "America/Los_Angeles",
"Ben (New York)": "America/New_York",
"Chloe (London)": "Europe/London",
"Dev (Bangalore)": "Asia/Kolkata",
}
WORK_START, WORK_END = 9, 18 # local working hours, 9 AM to 6 PM
def best_slots(day):
rows = []
for hour in range(24):
start = datetime(day.year, day.month, day.day, hour, tzinfo=timezone.utc)
local = {name: start.astimezone(ZoneInfo(tz)) for name, tz in TEAM.items()}
inside = [n for n, t in local.items() if WORK_START <= t.hour < WORK_END]
rows.append((len(inside), start, local, inside))
rows.sort(key=lambda r: (-r[0], r[1]))
return rows
day = date(2026, 10, 28)
for count, start, local, inside in best_slots(day)[:3]:
times = ", ".join(f"{n.split()[0]} {t:%H:%M}" for n, t in local.items())
print(f"{start:%H:%M} UTC {count}/{len(TEAM)} in hours {times}")
We ran it on October 6, 2026 with Python 3.14. For Wednesday 28 October it prints:
16:00 UTC 3/4 in hours Ana 09:00, Ben 12:00, Chloe 16:00, Dev 21:30
17:00 UTC 3/4 in hours Ana 10:00, Ben 13:00, Chloe 17:00, Dev 22:30
09:00 UTC 2/4 in hours Ana 02:00, Ben 05:00, Chloe 09:00, Dev 14:30
With the date set to 4 November, the order changes:
17:00 UTC 3/4 in hours Ana 09:00, Ben 12:00, Chloe 17:00, Dev 22:30
09:00 UTC 2/4 in hours Ana 01:00, Ben 04:00, Chloe 09:00, Dev 14:30
10:00 UTC 2/4 in hours Ana 02:00, Ben 05:00, Chloe 10:00, Dev 15:30
16:00 UTC drops out because London's clocks went back on 25 October and the US clocks follow on 1 November, so on 4 November it is 8 AM in San Francisco. Edit TEAM with IANA zone names such as Europe/Berlin or Asia/Tokyo, and change WORK_START and WORK_END to your hours. Our free Slack time zone converter shows the same overlap without code.
Follow-the-sun handoffs
When a team covers most of the 24 hours, work can move with the sun: one region picks up where the last one stopped. It only works with a written handoff, because the person who knows the context is asleep. A handoff note that fits in a Slack thread:
Handoff, Mon 18:00 GMT (Chloe)
Done: migrated 3 of 5 customer exports, logs in #data-ops
Blocked: export 4 fails on a null date, waiting for Ben's answer in the thread above
Next: Dev, please rerun export 5 first, it has no dependency on 4
Three lines are enough. Post it in the same thread or channel every day so people know where to look.
Never appear "away" on Slack again
Cloud-based. No downloads. Works 24/7 even when your laptop is off.
Slack settings that help across time zones
See your team's local times in a terminal
A quick check before you message someone: this Python script prints each teammate's local time and whether they are inside working hours. It uses only the standard library (Python 3.9 or newer):
from datetime import datetime
from zoneinfo import ZoneInfo
TEAM = {
"Ana": "America/Los_Angeles",
"Ben": "America/New_York",
"Chloe": "Europe/London",
"Dev": "Asia/Kolkata",
"Mei": "Asia/Tokyo",
}
WORK = range(9, 18) # 9 AM to 6 PM local
now = datetime.now(ZoneInfo("UTC"))
for name, tz in TEAM.items():
local = now.astimezone(ZoneInfo(tz))
state = "working" if local.hour in WORK and local.weekday() < 5 else "off"
print(f"{name:<6} {local:%a %H:%M} {local.tzname():<5} {state}")
When we ran it on Monday at 02:03 UTC it printed:
Ana Sun 19:03 PDT off
Ben Sun 22:03 EDT off
Chloe Mon 03:03 BST off
Dev Mon 07:33 IST off
Mei Mon 11:03 JST working
Only Mei in Tokyo was working. Ben's Sunday evening message would have waited for his Monday anyway. Edit TEAM with IANA zone names and change WORK to your hours.
Common mistakes
FAQ
How do I show my working hours in Slack?
Preferences, Availability, Working hours. Add the After hours automatic status so people see when a reply may wait.
What is the best meeting time for the US and Europe?
Usually 11 AM to noon Eastern, which is 4 to 5 PM in London and 8 to 9 AM in San Francisco. In the daylight saving weeks above, London is one hour closer.
What is a good overlap for a remote team?
Two hours a day is enough for most teams. More than that is hard between the US and Asia.
Should I answer messages outside my working hours?
Not by default. Set working hours so notifications pause, and reply in your morning.
Stop Jiggling Your Mouse.
Join hundreds of remote workers who never worry about their Slack status. Set it up once, stay green forever.
Related Articles
Slack Bot Scopes: The Scope Each API Method Needs, Measured on 44 Methods
We gave a Slack bot one scope, called 44 common Web API methods, and read the needed field of every missing_scope error. Then we added the scopes and called them again. The table shows which scope clears each method.
Slack File Size Limit: 1 GB Is Exactly 1,073,741,824 Bytes, Tested
We uploaded files of 50 MB, exactly 1 GiB and 1 GiB plus one byte to Slack through its upload API. The limit is 1,073,741,824 bytes, and a failed upload can still leave a broken file behind.
Slack Dark Mode: Where the Setting Is, and Which Custom Emoji Disappear
Slack's dark mode is under Preferences > Appearance > Color Mode, with Light, Dark and System. We switched modes in Slack web with three test emoji and measured which ones vanish.