Live clocks for cities worldwide. Click any cell in the meeting slider to find the best time for everyone.
Each row is a 24-hour scale for one time zone. Green cells mark the working hours (default 9 AM–5 PM, configurable in the header). Orange marks edge hours (~2 h before/after), grey is off-hours. When green stacks vertically across all rows, it's a good meeting slot.
Click any cell to highlight that hour across all rows. The +1 / −1 indicator shows when a cell already belongs to the next/previous calendar day. DST transitions are handled automatically.
The world clock runs entirely in your browser. No data is sent to servers, no tracking, no cookies (only localStorage for your chosen cities). Time calculations use the native Intl.DateTimeFormat API, which correctly handles every IANA time zone including DST rules.
A time zone is much more than "UTC plus X hours". It is a rule for mapping the absolute time line (UTC) onto a local wall-clock display — including every historical change, DST transition, and political shift. The IANA time-zone database (also "Olson database" or just "tzdata") has collected these rules since 1986 and is updated several times per year; the Europe/Berlin entry, for instance, contains DST transitions from the German Empire in 1916, the second summer time of 1980, and the post-1990 unification with the former East. Browsers and operating systems hook into this database directly — calling Intl.DateTimeFormat('en-US', {timeZone: 'Asia/Kolkata'}) returns the correct current Indian time (UTC+5:30) without you having to maintain any rules yourself.
EU summer time is governed by Directive 2000/84/EC: on the last Sunday in March, clocks move forward one hour at 01:00 UTC (in Germany 02:00 → 03:00), and on the last Sunday in October they move back at 01:00 UTC (03:00 → 02:00). These days are asymmetric — on the spring Sunday one hour is skipped entirely; on the autumn Sunday, local 02:00 to 03:00 occurs twice. The proposal to abolish DST (EU 2018/921) has been frozen for years. Outside Europe the picture is more varied: Russia, China, India, Japan, and Argentina do not switch at all; in Australia only some states do; the US has switched on the second Sunday in March and first Sunday in November since 2007.
Some zones have offsets that surprise many travellers: India is at UTC+5:30, Nepal at UTC+5:45, Iran at UTC+3:30 (in winter), Newfoundland at UTC−3:30, the Chatham Islands at UTC+12:45. Large countries often span several zones — the US has six (Eastern, Central, Mountain, Pacific, Alaska, Hawaii), Russia eleven, while China officially uses only one (Asia/Shanghai) despite geographically covering five. This world clock reads the current DST rule directly from the browser's tzdata store and therefore adapts automatically to political changes (such as Mexico's 2022 vote) as soon as the browser receives an update.
A local time in a zone is always mediated by UTC: local = UTC + offset(tz, date). The offset is date-dependent because DST raises (in Europe) or lowers (Southern Hemisphere) the summer value by one hour. Example: 9 June 2026 12:00 UTC is 14:00 in Berlin (CEST = UTC+2) and 21:00 in Tokyo (JST = UTC+9). In winter Berlin switches to CET = UTC+1, so the same UTC moment shows as 13:00 Berlin time. For meeting planning, first convert every participant to UTC, then find the common window. Difference between two zones: Δ = offset(tz_a) − offset(tz_b). Tokyo − Berlin in summer = 9 − 2 = 7 hours; in winter = 9 − 1 = 8 hours.
Real constellations for distributed teams:
Be careful at DST transitions: a local time like 2026-10-25 02:30 Berlin is ambiguous — it occurs twice, once as CEST and once as CET. Booking systems typically pick the first instance or store UTC directly. Also: the browser's tzdata is only as current as the browser itself. To correctly display a recently changed zone (Iran 2022, Mexico 2022, Morocco 2018), keep the operating system up to date. The Y2038 boundary does not affect the browser directly (JavaScript uses double-precision milliseconds) but it does affect old embedded systems. Leap seconds are ignored here — this clock is not built for second-accurate satellite tracking. For UI purposes (meetings, travel, log correlation) it is entirely sufficient.
Intl.DateTimeFormat with the zone as parameter — the browser knows the DST rule from tzdata and jumps automatically at the transition. You do not have to adjust anything.