iCalendar Viewer

Parse and display iCalendar/vCalendar (*.ics file) data for humans
Created: 2011-02-01 and last updated 2018-06-10
Tagged: tools javascript

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:

  1. Your data never leaves the browser and remains private
  2. 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!)