Introduction

iCalendar is a standard method of transferring calendar information between computer systems. The standard allows products from many vendors to transfer calendar information between each other.  iCalendar files typically have the file extension ".ical" ".ics" ".ifb"  or ".icalendar" with a MIME type of "text/calendar".

The iCalendar open standard should not be confused with iCal, the former name for the commercial product "Calendar" developed by Apple Computer.

History

iCalendar was first defined as a standard as RFC 2445 in 1998 by the Internet Engineering Task Force (IETF). This document was authored by Frank Dawson of Lotus Notes Corporation (now owned by IBM) and Derik Stenerson of Microsoft Corporation. The pairing of these two individuals from competing software companies highlighted the need at that time for companies to work together to provide interoperability standards between calendar products.  This interoperability continues to the present day extending support to new technologies such as web site calendar services, smart phones and tablets.

The iCalendar standard was refined in 2009 as RFC 5545 and edited by Bernard Desruisseaux of Oracle Corporation. This resolved some ambiguities from the original standard as well as deprecated a few features that were no longer needed. RFC 5545 is now considered the iCalendar standard and supersedes the previous RFC. RFC 7986 was published in 2016 and adds to the original iCalendar RFC by defining new properties to support conferencing systems and to the main VCALENDAR object including a calendar name, description and refresh interval.

Today, iCalendar is used to import and synchronize events on various platforms, including smart phones, computer and web applications.  Web applications include Microsoft Office 365, Apple Calendar, Google Calendar, and Yahoo Calendar.

iCalendar File Format

Here is a sample iCalendar file containing a single event.

BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//ZContent.net//Zap Calendar 1.0//EN
CALSCALE:GREGORIAN
METHOD:PUBLISH
BEGIN:VEVENT
SUMMARY:Abraham Lincoln
UID:c7614cff-3549-4a00-9152-d25cc1fe077d
SEQUENCE:0
STATUS:CONFIRMED
TRANSP:TRANSPARENT
RRULE:FREQ=YEARLY;INTERVAL=1;BYMONTH=2;BYMONTHDAY=12
DTSTART:20080212
DTEND:20080213
DTSTAMP:20150421T141403
CATEGORIES:U.S. Presidents,Civil War People
LOCATION:Hodgenville\, Kentucky
GEO:37.5739497;-85.7399606
DESCRIPTION:Born February 12\, 1809\nSixteenth President (1861-1865)\n\n\n
 \nhttp://AmericanHistoryCalendar.com
URL:http://americanhistorycalendar.com/peoplecalendar/1,328-abraham-lincol
 n
END:VEVENT
END:VCALENDAR

An iCalendar file consists of sections starting with "BEGIN:" and ending with "END:".  The "VCALENDAR" is the global section that holds all other sections.  Other sections include "VEVENT" for events, "VTODO" for to-do items, "VJOURNAL" for journal entries, and "VTIMEZONE" for time zone information.  Multiple sections of the same type can be repeated.  For example, multiple "VEVENT" sections can occur in an iCalendar file to describe multiple events.

CalDAV: Remote Event Management

The WebDAV standard enables editing web sites remotely.  This standard has been extended to create the CalDAV standard.  Similar to the WebDAV standard, CalDAV enables the management of events from a remote location.  Calendar clients such as Mozilla's Sunbird and Apple's Calendar applications allow editing of events that reside on a remote server.  

Extending the iCalendar Standard

Although the iCalendar specification is very detailed and covers many aspects of calendaring and scheduling, users have found some features lacking in the standard.  Fortunately, the standard is extensible and provides a method of adding additional information to an iCalendar data stream.  Since these features are not part of the standard, support for them will vary from vendor to vendor. A few of these extensions are listed here.

HTML In Event Descriptions

The original iCalendar standard allowed only plain text as part of an event description.  HTML markup, such as font attributes (bold, underline) and layout (div, table) was not allowed in the text description field.  First seen in Microsoft Outlook, the X-ALT-DESC parameter provides a method to add HTML to an event description.  "X-" fields are allowed for non-standard, experimental parameters. This field has become the method of choice when including HTML in a description.  When using HTML, both fields must be included so that iCalendar readers that do not support the X-ALT-DESC field can still read the text version.

Detailed Location/Venue Information

The original iCalendar standard provided a single element for a location description.  This proved inadequate for some who wanted to include additional information about the location, including address, contact information and a description of the location.  A draft proposal entitled, "Internet Calendaring and Scheduling Venue Component Specification" was published in 2007 by Charles Norris of Eventful.com and Jeff McCullough of the University of California, Berkley, to address these issues.  Although it was never fully adopted as an RFC, this document provides a standard method for transferring venue information where the iCalendar standard is lacking.