Sustainability of Digital Formats: Planning for Library of Congress Collections

Introduction | Sustainability Factors | Content Categories | Format Descriptions | Contact
Format Description Categories >> Browse Alphabetical List

iCalendar Electronic Calendar and Scheduling Format

>> Back
Table of Contents
Format Description Properties Explanation of format description terms

Identification and description Explanation of format description terms

Full name iCalendar Electronic Calendar and Scheduling Format
Description

iCalendar, or iCal, is a widely-used format for the exchange of electronic calendaring and scheduling data between applications or systems. Based on the vCalendar format created by the Internet Mail Consortium, iCalendar files can be exchanged through a wide variety of methods including SMTP, HTTP, interactive desktop protocols such as the use of a memory-based clipboard or drag/drop interactions, and others because they are designed to be independent of specific transport protocols. The iCalendar format supports functionality such as requesting, replying to, modifying, and canceling meetings or appointments, to-dos, and journal entries. Through the iCalendar Transport-independent Interoperability Protocol (iTIP) defined in RFC 2446, iCalendar objects can be used to define other calendaring and scheduling operations such as requesting for and replying with free/busy time data.

See Notes for description of the file structure.

Relationship to other formats
    Has subtype hCalendar, HTML Electronic Calendar and Scheduling Format. HTML representation of iCal calendar information
    Affinity to vCard, Virtual Card Format (vCard). The iCal format is based on vCalendar, which shares a relationship with vCard.

Local use Explanation of format description terms

LC experience or existing holdings The Library of Congress has a small amount of iCal files in its collections.
LC preference The Library of Congress has not yet specified a format preference for calendars.  See the Library of Congress Recommended Formats Statement for format preferences for email which is often associated with calendaring applications.

Sustainability factors Explanation of format description terms

Disclosure

Open standards available from Internet Engineering Task Force (IETF).

    Documentation

iCalendar is fully documented though RFC 5545, RFC 2446, and RFC 2447.

Adoption

According to Wikipedia (accessed on May 1, 2014), "iCalendar is used and supported by a large number of products, including Google Calendar, Apple Calendar (formerly iCal), IBM Lotus Notes, Yahoo! Calendar, Evolution (software), eM Client, Lightning extension for Mozilla Thunderbird and SeaMonkey, and partially by Microsoft Outlook and Novell GroupWise."

The iCalendar implementation page on Microformats.com provides details about some modifications for specific implementations including Apple iCal 2.0.5 (date and date-time formatting) and Microsoft Outlook 2003 (where the VEVENTS calendar component is required to have UID, DTSTAMP, and METHOD properties or an error is returned).

    Licensing and patents None
Transparency

The primary content of iCalendar files is straightforward text that can be read by humans or processed by computers. An iCalendar file consists of lines of text, each line limited to 75 octets and delimited by a CRLF sequence. The default character encoding is UTF-8. To facilitate automated parsing, RFC 5545 defines the iCalendar format using ABNF notation, as defined in RFC 5234.

Applications must also read, but are not required to write, US-ASCII.

Calendar objects, such as events, may have binary attachments encoded using the BASE64 encoding defined in RFC 4648 and embedded inline.

Self-documentation

iCalendar has syntax and structure that features well-defined metadata. See Notes for description of the file structure.

External dependencies

None

Technical protection considerations None

Quality and functionality factors Explanation of format description terms


File type signifiers and format identifiers Explanation of format description terms

Tag Value Note
Filename extension ics
ifb

"ics" is used to designate a file containing calendaring and scheduling information consistent with text/calendar MIME content type.

"ifb" is used to designate a file containing free or busy time information consistent with text/calendar MIME content type.

Internet Media Type text/calendar

Registered with IANA

Mac OS file type iCal
iFBf

"iCal" is used to designate a file containing calendaring and scheduling information consistent with text/calendar MIME media type.

"iFBf" is used to designate a file containing free or busy time information consistent with text/calendar MIME media type.

Pronom PUID fmt/388
PRONOM entry for Internet Calendar and Scheduling format. Identification based on internal signifier.
Wikidata Title ID Q284651
See https://www.wikidata.org/wiki/Q284651

Notes Explanation of format description terms

General

At the most basic level, iCalendar files are organized into individual lines of text (called content lines) which are limited to 75 octets in length. Content lines are delimited by a CRLF sequence. Long data items (i.e., longer than 75 octets) can be split between any two characters by inserting a CRLF immediately followed by a single SPACE or TAB white-space character.

At a higher level of structure, the Calendaring and Scheduling Core Object is a collection of calendaring and scheduling information. Typically, this information will consist of an iCalendar stream with a one or more sequentially grouped iCalendar objects together in an iCalendar stream.

Within the iCalendar object, the first line must be "BEGIN:VCALENDAR" and the last line must be "END:VCALENDAR". Between these encapsulating lines is the iCalendar body which consists of a sequence of calendar properties and one or more calendar components. The calendar properties are attributes that apply to the calendar object as a whole. The calendar components are collections of properties that express a particular calendar semantic. For example, the calendar component can specify an event, a to-do, a journal entry, time zone information, free/busy time information, or an alarm.

Within the iCalendar body structure:

  • two calendar properties are required and may not appear more than once: "PRODID" which specifies the identifier for the product that created the iCalendar object and "VERSION" which specifies the identifier corresponding to the highest version number or the minimum and maximum range of the iCalendar specification that is required in order to interpret the iCalendar object. The value "VERSION:2.0" indicates that the data is in iCalendar format as specified in RFC 5545. "VERSION:1.0" is used to specify that data is in the now-defunct vCalendar format;
  • two calendar properties are optional and may not appear more than once: "CALSCALE" which defines the calendar scale used for the calendar information specified in the iCalendar object (default is Gregorian) and "METHOD" which defines the iCalendar object method associated with the calendar object;
  • other calendar properties are optional and may appear more than once.

Applications that import iCalendar objects are expected to support all of the component types defined in RFC 5545. Practically, this means that applications are expected to ignore values they don't recognize and should not silently drop any components as that can lead to user data loss.

Moreover, compliant applications must generate iCalendar streams in the UTF-8 charset and must accept iCalendar streams in UTF-8 or US-ASCII charsets. A different character set can be specified using the "charset" MIME parameter.

iCalendar objects can have attachments. The default value type for the Attach descriptive component property is URI. The value type can also be set to BINARY to indicate inline binary encoded content information.

History

iCalendar is based on the vCalendar format published in 1996 by the Internet Mail Consortium (IMC). RFC 2445, which defined the first iCalendar format, was created by the Internet Engineering Task Force Calendaring and Scheduling Working Group in 1998; the RFC 5545 update and current specification was published by IETF in 2009.


Format specifications Explanation of format description terms


Useful references

URLs


Last Updated: 02/28/2024