Paste your raw iCalendar data below and this tool will attempt to parse it and display it in a human-readable table.
Notes
I wrote the original version of this tool as a naive regex-based parser in PHP.
I’ve since switched over to Mozilla’s ical.js, which is a JavaScript library. There are two advantages to using the JavaScript library:
-
Your data never leaves the browser and remains private
-
The parser is of much higher quality and understands more of RFC5545 than my previous tool
It hope this has been helpful.
My fantasy replacement
I propose that iCalendar is painfully close to being a good format. With just a little more effort, it could have been made both human-readable and parseable at the same time.
Imagine this:
===CALENDAR START=== Type: Event From: Mr. Bigshot <bigshot@example.com> Subject: Meet about BFG marketing presentation (corrected) When: 2018-June-10 at 13:30 (1:30 PM) MST Duration: 1:30:00 (1 hour, 30 minutes) Where: Conference Room B Invited: Peggy Sue <psue@example.com> Invited: Lard Williams <lw@example.com> Invited: Max Powers <mpow@example.com> Oops! Sorry about the mistake in the previous one. Please be prepared to bring your meeting notes from the previous meeting about this coming meeting. I will bring donuts, but if anybody wants something healthy, they will have to provide it themselves. Date-UTC: 2018-06-10T13:30:00Z Date-TZ: 2018-06-10T08:30:00-0700 TZ: UTC-07:00 (MST) Created: 2018-06-03T21:17:52Z Generator: SuperMailer9000 v1.32 Locale: en-us UID: 5d1800c3405778564594bf292b234ed0de305232 Replaces: 9c707e038f0a89fcd4761f849a9878a97ae600ea Version: 1.0.0 ===CALENDAR END===
Instead of this:
BEGIN:VCALENDAR PRODID:-//Microsoft Corporation//Outlook 16.0 MIMEDIR//EN VERSION:2.0 METHOD:REQUEST X-MS-OLK-FORCEINSPECTOROPEN:TRUE BEGIN:VTIMEZONE TZID:US Mountain Standard Time BEGIN:STANDARD DTSTART:16010101T000000 TZOFFSETFROM:-0700 TZOFFSETTO:-0700 END:STANDARD END:VTIMEZONE BEGIN:VEVENT ATTENDEE;CN="Peggy Sue";RSVP=TRUE:mailto:psue@example.com ATTENDEE;CN="Lard Williams";RSVP=TRUE:mailto:lw@example.com ATTENDEE;CN="Max Powers";RSVP=TRUE:mailto:mpow@example.com CLASS:PUBLIC CREATED:20180607T165307Z DESCRIPTION: Oops! Sorry about the mistake in the previous one.\n\nPlease be p epared to bring your meeting notes from the previous meeting about this co ming meeting.\n\nI will bring donuts, but if anybody wants something healt hy, they will have to provide it themselves. DTEND;TZID="US Mountain Standard Time":20180614T160000 DTSTAMP:20180607T165307Z DTSTART;TZID="US Mountain Standard Time":20180614T150000 LAST-MODIFIED:20180607T165307Z LOCATION:Conference Room B ORGANIZER;CN="Mr. Bigshot":mailto:bigshot@example.com PRIORITY:5 SEQUENCE:0 SUMMARY;LANGUAGE=en-us:Meet about BFG marketing presentation TRANSP:OPAQUE UID:040000008200E00074C5B7101A82E00800000000B0AE095645FED301000000000000000 01000000082948C58D788E54D9A63EBE846BA420F X-ALT-DESC;FMTTYPE=text/html:<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-mic rosoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/ 12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Co ntent-Type content="text/html\; charset=us-ascii"><meta name=Generator con tent="Microsoft Word 15 (filtered medium)"><style><!--\n/* Font Definition <...many more lines of HTML garbage truncated...> X-MICROSOFT-CDO-BUSYSTATUS:TENTATIVE X-MICROSOFT-CDO-IMPORTANCE:1 X-MICROSOFT-CDO-INTENDEDSTATUS:BUSY X-MICROSOFT-DISALLOW-COUNTER:FALSE X-MS-OLK-AUTOSTARTCHECK:FALSE X-MS-OLK-CONFTYPE:0 BEGIN:VALARM TRIGGER:-PT15M ACTION:DISPLAY DESCRIPTION:Reminder END:VALARM END:VEVENT END:VCALENDAR
Mind you, some of that is Outlook-specific. But that’s a pretty fair representation of what we actually get in our inboxes.
My fantasy format, by contrast adheres to a strict format for computers and humans and aligns and orders the information by importance for humans. I believe the result is something that works really well for both.
(By the way, I find the alternative HTML content in the above Outlook invite to be particularly wrong-headed. I know the ship has sailed on HTML email, so I’m not going to harp on that. But I put my foot down on calendaring and scheduling. If there was ever a time for absolute clarity with absolutely no messin' around, it’s when one or more humans are trying to agree on a time and place to meet!)