TimeFair Meeting Planner
Find fair meeting times across time zones, with DST-exact local times and rotation.
Try an example: Berlin, New York, Bengaluru, Kathmandu · San Francisco, London, Sydney (no comfortable slot → rotation)
How it works
Enter participants with their IANA time zone and working hours. TimeFair scores every candidate slot by how far it falls outside each person’s working day (extra penalty at night), ranks slots by total and worst-case inconvenience, and builds a rotation plan for recurring meetings so the pain is shared. Exports an .ics calendar file.
- Time zones are IANA names validated with Intl.DateTimeFormat; every UTC↔local conversion uses the runtime’s tz database, so DST changes and +05:30 / +05:45 offsets are exact for each individual minute.
- Candidate slots start at the organiser’s local midnight of the first day and step by the chosen granularity (in UTC) until the last slot ends before midnight after the last day.
- Inconvenience per participant = weight × (minutes outside the working window + 2 × minutes outside the window between 22:00 and 07:00 local) ÷ 60, i.e. 1 point per hour outside working hours and 3 points per hour at night. A day that is not a working day counts entirely as outside.
- Overnight windows (end earlier than start) belong to the day they start on; e.g. 22:00–06:00 on a Friday covers Friday 22:00 to Saturday 06:00.
- Fairness cost of a slot = total + 1 × worst individual inconvenience + 0.5 × standard deviation (population). Lower is better; ties go to the earliest slot.
- Rotation (deterministic greedy): the 48 lowest-cost slots form the pool; each occurrence repeats the slot’s organiser-local wall time every N days, re-scored for that exact date (DST-aware). For each occurrence the slot minimising the worst cumulative burden, then the total cumulative burden, then its own cost, then start time, is picked.
- The .ics file uses UTC (Z) times, RFC 5545 escaping and 75-octet line folding; UID is a SHA-256 hash of the slot, participants and title (stable across re-imports); DTSTAMP is the computation time.
Sources
For scripts and AI agents
- JSON API:
POST https://timefair.usefulweb.site/api/v1/calculate(same calculation as this page) - Interface description: OpenAPI 3.1 · AI guide: llms.txt
- MCP server (Streamable HTTP):
https://timefair.usefulweb.site/mcp· tool nametimefair
Example request
curl -s -X POST https://timefair.usefulweb.site/api/v1/calculate \
-H 'content-type: application/json' \
-d '{"title":"Platform sync","startDate":"2026-10-19","days":5,"durationMinutes":60,"granularity":"30","recurrences":4,"participants":[{"name":"Anna","timeZone":"Europe/Berlin","workStart":"09:00","workEnd":"17:30"},{"name":"Ben","timeZone":"America/New_York","workStart":"09:00","workEnd":"17:00"},{"name":"Chitra","timeZone":"Asia/Kolkata","workStart":"10:00","workEnd":"18:30"},{"name":"Dev","timeZone":"Asia/Kathmandu","workStart":"10:00","workEnd":"17:00"}]}'Related tools
- RuleDate Deadline Calculator – Business-day and deadline maths with public holidays and a step-by-step rule trace.