Find a time that works,
across every timezone.
CalChat is a free, shareable availability planner for groups spread across timezones. Send one link, everyone drags the hours they're free in their own timezone, and CalChat shows you the overlap. No sign-up, no calendar import.
Free · No account · Up to 22 people · Any week through next year
How CalChat works
Three steps, and nobody has to convert a single time in their head.
- 01
Create a link
Give the call a name — or don't — and CalChat hands you a URL. No account, no email, nothing to install.
- 02
Everyone marks their hours
Each person opens the link, picks their own timezone, and drag-selects the hours they're free on a 7-day by 30-minute grid. Quick-add can apply a whole day-range and time-range at once, repeating up to 52 weeks ahead.
- 03
Read the overlap
CalChat intersects everyone's availability and draws the windows where the group is free — rendered in each viewer's own local time, so nobody has to do the arithmetic.
What you get
CalChat is deliberately narrow: it does group availability, and it does the awkward parts of it properly.
Three ways to read the week
A group-overlap heatmap that splits every cell into one colored stripe per participant; a common-times calendar that positions each overlap block at its real time and sizes it by duration; and a personal edit mode for your own hours.
Recurring sweet spots
A heatmap that aggregates every week in the event to surface the patterns underneath — the view that tells you Tuesday evenings work nearly every week.
Filter by participant
See the overlap for any subset of the group, so you can check what opens up if one person sits this one out.
One link, any week
The same URL covers every week from now through next year. Jump by week, by month, or with the date picker, and plan more than one call from a single link.
22 unique colors
Participants pick from a 22-color palette and the server enforces uniqueness, so no two people are ever the same color and a stripe is always readable at a glance.
Notes and multi-device
Leave an attributed note only you can edit, and claim your entry on a second device with a click — still no password, still no account.
How the timezone math works
Availability is never stored as a wall-clock time. Every free block is an integer UTC 15-minute slot index — floor(epochMilliseconds / 900000) — because 15 minutes is the finest granularity any real-world IANA timezone uses. Nepal sits at UTC+5:45, so a coarser grid would simply fail to represent it.
Each 30-minute cell in the grid maps to exactly two consecutive slots, and finding the group's overlap is set intersection on those integers. Daylight saving transitions, half-hour offsets, and blocks that cross midnight into the next day stop being special cases and become ordinary arithmetic.
A worked example
- Monday 8:30 PM in America/New_York
- Tuesday 6:00 AM in Asia/Kolkata
- Tuesday 8:30 AM in Asia/Shanghai
Three people, three different days-of-week on their own calendars. CalChat reports a 60-minute three-way overlap, and each of them sees that same UTC window rendered in their own local time.
About the background
The scene behind this page is built with React Three Fiber. Translucent calendar shards drift through three concentric timezone-dial rings, each marked with 24 hour ticks and turning against the others. As you scroll, the shards resolve into a week grid and one column condenses into a terracotta block while the dials lock onto a shared phase — the product's whole idea, with no words in it. Move your cursor and nearby shards drift toward it; click anywhere off the interface for a ripple. If your system asks for reduced motion, it renders as a single still frame instead.
Built with
- Next.js 14 — App Router, TypeScript, file-based metadata
- Tailwind CSS — warm-dark surface, terracotta reserved for overlap
- React Three Fiber + three.js — the scroll-reactive background scene
- Luxon — every IANA timezone Node reports is selectable
- Upstash Redis — event storage, with an in-memory dev fallback
- Vercel + Cloudflare — hosting and DNS
The source is on GitHub, and there's a longer write-up on the project page.
Frequently asked questions
- What is CalChat?
- CalChat is a free, shareable, timezone-aware availability planner. One person creates a link and sends it to the group, everyone marks the hours they're free in their own timezone, and CalChat shows the windows where those hours overlap. It's built for casual scheduling — friend groups, study groups, and small distributed teams.
- Is CalChat free, and do I need an account?
- It's free and there is no account. You don't sign up, enter an email, or install anything. Anyone holding the link can add their availability, and the link itself is the only thing you need to keep.
- How does CalChat handle timezones and daylight saving?
- Every free block is stored as an integer 15-minute UTC slot rather than a wall-clock time, so nothing depends on the timezone it was entered in. Daylight saving transitions, half-hour and quarter-hour offsets, and blocks that cross midnight into the next day all resolve correctly because finding overlap is just set intersection on those integers.
- How many people can join one CalChat event?
- Up to 22 — that's the size of the participant color palette, and the server keeps every participant's color unique so the overlap views stay readable.
- Can CalChat handle recurring or multi-week scheduling?
- Yes. One link covers any week from the current week through the following year. Quick-add can repeat a time block across up to 52 consecutive weeks, and the recurring sweet-spots heatmap aggregates across every week to show which slots are reliably open.
- Does CalChat connect to Google Calendar or Outlook?
- No, and that's deliberate. There's no calendar import, no OAuth, and no permissions to grant — you mark the hours you're willing to be called, which is usually a much shorter list than the hours your calendar says are technically free.
Make a link and send it to the group
Nothing to sign up for. Scroll back to the top, or head straight in.
Create a shareable link