A booking confirmation can look right in an email and land at a surprising time in a calendar. The useful place to start is the downloaded .ics file.

IndieICS reads that file and explains its event times and recurrence. Choose one file or paste its contents. The inspection happens locally in your browser. The file is never uploaded, added to a URL, or saved as lookup history.

Three ways to describe a time

A date-time such as 20260908T100000Z names 10:00 UTC. The final Z matters.

A date-time with TZID=Europe/Berlin names a timezone. An iCalendar file can include a VTIMEZONE component that defines its offset changes. IndieICS identifies that definition when it is present. Without it, the checker labels the zone unresolved. It does not silently replace the missing definition with the visitor’s own timezone.

A date-time with neither Z nor TZID is floating. It names a wall-clock time without fixing a worldwide instant. That can be intentional, but it needs attention when a booking is supposed to happen at one shared moment.

All-day events are different again. They use dates, and their DTEND is exclusive. An event starting September 8 and ending September 10 covers September 8 and 9.

Repeats need more than a frequency

RRULE describes a repeating pattern. RDATE can add dates, and EXDATE can remove them. A weekly rule with five occurrences can produce fewer visible events after exclusions.

IndieICS shows up to ten occurrences from the original start, within a ten-year horizon. It does not claim that this preview is a total count or a list of upcoming events from today. A two-second processing limit stops a difficult recurrence from tying up the page.

Files with recurrence overrides get an explicit limitation in this first release. Their event components are inspected separately, and their occurrence previews are withheld so an unadjusted schedule cannot look authoritative.

A useful inspection has limits

The checker handles up to 50 event components in a UTF-8 calendar of at most 256 KiB. It reports common date and structure problems. It does not validate every rule in the standard, inspect alarms or tasks, or guarantee identical behavior across calendar apps.

The interpretation uses ical.js and RFC 5545. Those sources stay linked beside the result.

The core is free. No account, card, premium plan, or upgrade prompt. Cookieless analytics measures traffic without receiving the contents of your calendar.