What’s in your calendar?

Drop a calendar file. Understand its times, repeats, and date problems.

Read on your device. Up to 256 KiB and 50 events.

Or paste calendar text

Your file stays in this browser. No upload, account, or saved history.

The indie shelf

More small tools, ready now.

This tool stays focused on one job. Other tools by turushan are ready for the next small task.

Free for indies. No catch.

Straight answers about IndieICS: what the result means, what to do with it, and why there is no catch.

No asterisks hiding down here

What is an ICS file?

An .ics file is a calendar in the iCalendar format from RFC 5545. It is plain text: a VCALENDAR wrapper around one or more VEVENT components, each with a start, an end or duration, a unique id, and optional repeat rules. Booking confirmations, invitations, and calendar downloads all use it. IndieICS reads one file and explains what each event says about its time.

Why does my calendar event show the wrong time?

Usually the timezone. A start written as 20260908T100000Z is UTC and lands correctly everywhere. A time with a TZID parameter depends on that zone being defined, and a time with neither is a floating time that every reader places in its own local zone. IndieICS labels each event's start as UTC, all-day, floating, defined in the file, or unresolved, and never guesses a conversion for you.

What does an unresolved TZID mean?

The event names a timezone, such as TZID=Europe/Berlin, but the file carries no VTIMEZONE component that defines it. RFC 5545 asks for one per zone the file uses. Many calendar apps recognize the name anyway and fall back to their own zone table, but that is a guess on the reader's side, and a misspelled or vendor-specific name fails. Add the VTIMEZONE block, or write the time in UTC.

How do I read an RRULE?

An RRULE is the repeat rule: FREQ=WEEKLY;BYDAY=MO,WE;COUNT=10 means every week on Monday and Wednesday, ten times. IndieICS turns the rule into a sentence and previews the first ten occurrences from the event's DTSTART, after any EXDATE exclusions, within a ten year horizon. The preview is a sample, not a total count.

A rule with an unsupported field, or an event with recurrence overrides, gets no preview and a note saying why.

What does needs attention mean in the result?

The check found a field that breaks the format or makes the event ambiguous: a missing UID, DTSTAMP, or DTSTART, an end before the start, an all-day start paired with a timed end, both DTEND and DURATION, a rule with both COUNT and UNTIL, a duplicate UID, or an unresolved timezone. Each item names the field, so you can fix it in the software that produced the file and inspect again.

What does IndieICS not check?

It inspects VEVENT components only. Tasks, journal entries, free/busy blocks, and alarms are skipped and named as skipped. It is not a complete RFC 5545 validator, and it cannot promise how Google Calendar, Outlook, or Apple Calendar will display a given file. One calendar at a time, up to 256 KiB and fifty events, with ten previewed occurrences per event.

Is it really free?

Yes. No account, no card, no premium plan, no upgrade nag, no hidden paywall. IndieICS is free, all of it.

What happens to what I check?

There is no public lookup history. A network check sends the public input needed for that check to its named source. Local file tools process file contents in your browser. Analytics is currently off, so no visit or job data is sent to a tracker. Anything the tool saves for you stays in your browser.