Add your file
Choose or drop a .ics file. You can paste the contents instead.
Open an .ics file or paste iCalendar text to see what the calendar actually contains. The viewer lists every VEVENT, VTODO, VJOURNAL and VFREEBUSY component with its UID, summary, start and end, and says whether the end came from DTEND, DUE or DURATION. A timeline shows every occurrence in UTC or in your device time zone, with the zone named next to each time. Recurring series are expanded from RRULE and RDATE with EXDATE exclusions and RECURRENCE-ID overrides applied, embedded VTIMEZONE rules are used first to resolve offsets, and organizers and attendees are listed with their CN, PARTSTAT and role. A diagnostics table records malformed lines, invalid dates and unsupported rules, and you can download the original source and a JSON structure of the parsed calendar.
or drop a file here
Choose or drop a .ics file. You can paste the contents instead.
The file is read and parsed in this browser — nothing is uploaded.
Look over what came back, then copy it, download it, or move on.
Want to know how files are handled? Read the privacy notice →
Drop the .ics file on this page or paste its text, and every event and to-do is listed with its start, end, time zone and recurrence, with nothing imported. The Timeline panel orders occurrences by date, the Components table keeps the file's own order with UIDs and line numbers, and the Render time zone option switches the timeline between UTC and your device's zone.
No. The .ics file is parsed by code running in your browser tab, so the events, attendee addresses and notes inside it are not sent anywhere for processing. Reading the file makes no network request, and the calendar data is not written to localStorage, IndexedDB or cookies; closing the tab discards it. General principles are on the site-wide privacy page.
Open this page in Edge, Chrome, Firefox or Safari on Windows or macOS and select the .ics file; nothing has to be installed and no Outlook, Apple Calendar or Google account is needed. Because nothing is imported, you can check a file's dates and attendees first and only then decide whether to add it to the calendar you actually use.
Yes: save the .ics attachment to Files on iPhone or Downloads on Android, then pick it from this page in the phone's browser, or copy the invitation text and paste it. Phones usually offer only an 'Add to calendar' sheet; here you see the organizer, attendee list, time zone and recurrence rule as written. On a narrow screen the wide tables scroll sideways.
The first non-blank line must be BEGIN:VCALENDAR and the text must be valid UTF-8, so a file that starts with anything else or uses a legacy encoding is rejected. Typical causes are an HTML error page saved under an .ics name, an export in Windows-1252, or a component whose END line does not match its BEGIN. Re-save the file as UTF-8, or paste the raw MIME part with its Content-Type: text/calendar header so its charset and base64 or quoted-printable encoding are decoded.
Files and pasted text up to 20 MB (20,000,000 bytes) are accepted, and larger input is rejected before parsing starts. The source panel shows the first 150,000 characters and offers the original download only when the whole text fits; the timeline lists up to 5,000 rows, and components may be nested at most 10 levels deep.
Each recurring series is expanded to at most 1,000 occurrences and no further than 100 years past its start, and a notice names the last date that was expanded. An RRULE whose COUNT is above 1,000 is refused instead of being cut short, and rules using BYSETPOS, BYWEEKNO, BYYEARDAY, BYHOUR, BYMINUTE or BYSECOND are marked unsupported. FREQ, INTERVAL, COUNT, UNTIL, BYDAY, BYMONTHDAY, BYMONTH and WKST are handled, together with RDATE, EXDATE and RECURRENCE-ID. One known gap: a YEARLY rule pairing BYMONTHDAY with a numbered BYDAY (for example BYMONTHDAY=1;BYDAY=1MO) and no BYMONTH ignores the number, so it can list extra dates such as every month's 1st that falls on a Monday; an embedded time zone defined that way can get a wrong offset.
The timeline uses UTC unless you choose your device time zone, and the zone is named beside every time, so a gap of whole hours is usually just the rendering zone. Times with no TZID and no Z are floating and marked 'no time zone in file'; a TZID that is neither defined in the file nor a known IANA name, such as a Windows zone name, stays unresolved with no guessed offset. Recurring dates are this viewer's own computation, so a client that treats a rule differently can show other dates.
This viewer cannot tell you whether an invitation is genuine or malicious; it shows the file's contents as inert text so you can judge them yourself. Links, ATTACH targets and attendee addresses appear as plain text and are never loaded, nothing is sent back to the organizer, and ORGANIZER and ATTENDEE values are labelled as claims. Values hiding extra calendar lines, HTML descriptions with scripts or javascript: links, and attachment paths like ../../etc/passwd are flagged, but no malware scan is done.
Yes: the Structure panel offers a .structure.json download with every parsed component, time, recurrence result, participant and diagnostic, and the Source panel downloads the original .ics unchanged. The JSON describes what was parsed and is not a format another calendar can import; when the input was a MIME part, the source download is the decoded calendar text.