Buddy Code
Create account ↗
All tools
Free to use · No sign-up

Calendar conflict checker

Find overlapping ICS events and trace generated, excluded or overridden occurrences to their source calendar lines.

0 calendars selected · 10 files / 2 MB combined · 366 days. Floating times and all-day events use UTC. Named zones require embedded VTIMEZONE. Recurrences, exclusion dates and individual overrides are supported; future-range overrides are rejected. Cancelled and transparent events do not block time. The report also explains generated, excluded, moved and cancelled occurrences with original source lines. Up to 5,000 explanations; UID length 512 characters.

What it does

Find overlapping ICS events and trace generated, excluded or overridden occurrences to their source calendar lines.

How to use it

  1. Import 1–10 ICS files, 2 MB combined, at most 2,000 event definitions. Choose up to 366 inclusive UTC dates.
  2. Expansion is capped at 50,000 steps, 5,000 occurrence explanations, 5,000 busy occurrences and 10,000 conflicts, with a cancellable 15-second worker deadline. Unsupported or over-limit input returns an error rather than a partial report.
  3. Review overlapping pairs and the first 200 occurrence explanations, following source lines for recurrence rules, exclusions and overrides. Download the complete bounded JSON report. Inputs remain on your device.

Example

Events 10:00–11:00 and 10:30–11:30 conflict; an event beginning exactly at 11:00 does not overlap the first.

Methodology

ICAL.js expands recurrence rules and explicit dates; individual recurrence overrides replace their original occurrence. An explanation timeline links generated, excluded, moved, cancelled, transparent, duplicate and zero-duration occurrences to source properties and original physical lines. A sorted interval scan compares only busy occurrences.

Limitations

1–10 files / 2 MB combined upload and 2 million text characters; 2,000 definitions, 366 inclusive UTC dates, 50,000 expansion steps, 5,000 explanation rows, 5,000 busy occurrences and 10,000 conflicts. UIDs need 1–512 characters; EXDATE/RDATE values total at most 5,000 per series. Cancellable 15-second worker; unsupported/over-limit inputs fail without a partial report. Floating/all-day values use UTC; named zones require embedded VTIMEZONE. THISANDFUTURE and RDATE periods are rejected. Identical UID/start/end occurrences are deduplicated. No remote sync.

Automation

This tool runs in your browser. No upload API or MCP endpoint is available.

View capabilities and documentation

Reference updated

Join the conversation

Helpful tips, questions, and ideas for making this tool better.

Loading discussion…