# Why IndieICS exists

> UTC, floating time, timezone definitions, and recurrence can explain a surprising calendar invite. IndieICS reads those fields locally.

By turushan.

Published: 2026-09-05T00:00:00.000Z

Updated: 2026-09-18T20:13:07Z

Canonical: https://indieics.com/blog/why-indieics-exists/

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](https://kewisch.github.io/ical.js/) and [RFC 5545](https://www.rfc-editor.org/rfc/rfc5545.html). Those sources stay linked beside the result.

The core is free. No account, card, premium plan, or upgrade prompt. Analytics is currently off, so no tracker receives your calendar contents.

Read [the calendar inspection limits](https://indieics.com/#what-does-indieics-not-check). Use [IndieICS](https://indieics.com/) to read an event's recorded timezone and bounded recurrence preview locally.

## Sources

- https://www.rfc-editor.org/rfc/rfc5545.html
- https://kewisch.github.io/ical.js/
