Skip to content

ICS calendar parser

Turn a pasted .ics calendar file into a readable list of events.

Input
Output

ICS calendar parser

Paste the contents of an .ics calendar file and this tool lists every event it contains in plain, readable form. It reads RFC 5545 iCalendar data the way Outlook, Google Calendar and Apple Calendar export it — wrapped lines are unfolded and escaped characters are restored automatically, so a title that was split across two physical lines in the source file reads as one line here.

Choose which columns you want: title, start, end, duration, location, organizer, description, status and UID. Convert times into a specific time zone, or leave them as the file wrote them. Turn on "Expand recurring events" to unroll an RRULE (daily, weekly, monthly or yearly, with INTERVAL, COUNT and UNTIL) into its next occurrences instead of showing just the one stored event. Sort by start time and narrow the result to a date range with the from/to fields. Pick table, CSV or JSON as the output shape depending on whether you're reading the calendar or feeding it into another tool.

The parser is deliberately forgiving: a VALARM or an unrecognized property inside an event is skipped rather than rejected, an event missing an end time defaults to one hour (or one day for all-day events), and a stray line that isn't valid calendar syntax is ignored instead of stopping the whole file. RRULE expansion covers FREQ, INTERVAL, COUNT and UNTIL; the BYDAY/BYMONTHDAY-style refinements are not applied, so an unusual recurrence pattern still produces occurrences, just spaced by the plain interval.

Everything runs in your browser — the calendar file you paste, including any attendee names or private notes it contains, is never uploaded anywhere. When you're done, copy the result, download it as a .txt file, or send the output to another tool to keep working on it.

FAQ

What calendar formats does it read?
Standard RFC 5545 .ics / iCalendar data — the format exported by Google Calendar, Outlook, Apple Calendar and most scheduling tools. Paste the raw text of the file.
How does recurring-event expansion work?
When "Expand recurring events" is on, an event with an RRULE (FREQ=DAILY/WEEKLY/MONTHLY/YEARLY, with INTERVAL, COUNT and UNTIL) is unrolled into its next occurrences, up to the number you set. More specific rules like BYDAY are not applied — the spacing follows the plain interval.
Can it convert event times to my time zone?
Yes, when the source time has a known zone — either a UTC timestamp or a TZID naming an IANA zone. A "floating" time with no zone information at all is shown exactly as written, since there is nothing to convert it from.
Why doesn't a date range filter show an event?
The from/to filter compares each event's start time. An event that starts outside the range is excluded even if it runs into the range — widen the "from" date to include it.
Is my calendar file uploaded anywhere?
No. Parsing runs entirely in your browser — the file you paste, and everything in it, never leaves your device.