ICS Calendar Viewer & Recurrence Expander
An .ics file is the attachment your calendar app knows what to do with and you do not. Opening it in a text editor gives you folded lines, escaped commas and a line like RRULE:FREQ=MONTHLY;BYDAY=-1FR;BYSETPOS=-1 that tells you nothing about which Fridays are meant. This viewer unfolds the file properly, shows every event with its times, location, organiser, attendees and status, and then does the part no one can do in their head: it expands the recurrence rule into the actual dates. Weekly on Mondays and Wednesdays, the last working day of each month, every second Tuesday counting from a start date — you see the list, with the dates removed by EXDATE taken out and any extra RDATE folded in. Times can be shown as written with the event's own zone, converted to your zone, or in UTC. Recurrence is expanded on the wall clock, the way the standard defines it, so a 09:00 meeting stays at 09:00 across a daylight-saving change instead of drifting an hour. The file is read in your browser and nothing is uploaded, which matters here — a calendar export usually carries other people's names and email addresses.
Drop or paste an .ics file to read it.
How to use
- Drop an .ics or .ical file, or paste the text of one.
- Read the event list: times, duration, location, organiser, attendees and status.
- For a repeating event, check the expanded dates under the rule.
- Switch the time zone to see the same events as written, in your zone, or in UTC.
- Copy the plain-text summary if you need to paste it somewhere.
Frequently asked questions
- What does a rule like FREQ=MONTHLY;BYDAY=-1FR mean?
- The last Friday of every month. Rather than explain the grammar, the tool expands the rule and lists the dates it produces, which is the answer you actually wanted.
- Which parts of RRULE are supported?
- FREQ (daily, weekly, monthly, yearly), INTERVAL, COUNT, UNTIL, BYDAY including ordinals like 2TU and -1FR, BYMONTHDAY including negatives, BYMONTH, BYSETPOS and WKST, plus EXDATE and RDATE. The rare BYYEARDAY, BYWEEKNO and BYHOUR parts are not expanded.
- Why does the time not shift when the clocks change?
- Because the standard defines recurrence on the wall clock. A 09:00 daily meeting is 09:00 before and after a daylight-saving change; the gap between two occurrences is what changes, not the time on the invitation.
- What is a floating time?
- A start time written with no zone and no trailing Z. It means the same wall clock wherever the reader happens to be, which is how all-day reminders and some exports are written.
- Why are the lines in my file broken mid-word?
- The format folds any line past 75 octets by continuing it on the next line with a leading space. The viewer joins them back together before reading anything, which is why a description looks correct here and mangled in a text editor.
- Is my calendar uploaded?
- No. The file is parsed in your browser and never sent anywhere. That matters more than usual with calendar files, which normally list other people's names and email addresses.
Related tools
ICS (iCalendar) Event Builder
Generate a downloadable .ics calendar event with title, start/end, location, attendees, recurrence (daily/weekly/monthly/yearly) and a reminder — fully RFC 5545 compliant, generated in your browser.
Plist Viewer (binary & XML)
Open an Apple property list — binary or XML — and read it as a tree, or convert it to JSON or XML plist.
Excel (XLSX) to CSV, JSON & Markdown
Open an .xlsx workbook in the browser and export any sheet as CSV, JSON or a Markdown table — the file never leaves your device.
EPUB Viewer, Metadata & Text Extractor
Open an .epub in your browser: metadata, chapter list with word counts, the plain text, and the structure checks that explain why a reader rejects a book.
PNG Chunk Inspector
Drop a `.png` file and see every chunk it contains — IHDR, IDAT, tEXt metadata, IEND — with sizes, CRCs, and the critical/ancillary/safe-to-copy flags.
vCard (.vcf) File Parser & Inspector
Drop or paste any vCard 2.1, 3.0, or 4.0 .vcf export and read all the contacts as cards — names, phone numbers, emails, addresses, organizations, URLs, birthdays, notes, embedded photos, and any custom X- fields, all parsed locally in your browser.