HOME

TheInfoList



OR:

The Internet Calendaring and Scheduling Core Object Specification (iCalendar) is a
media type A media type (also known as a MIME type) is a two-part identifier for file formats and format contents transmitted on the Internet. The Internet Assigned Numbers Authority (IANA) is the official authority for the standardization and publication o ...
which allows users to store and exchange calendaring and scheduling information such as events, to-dos, journal entries, and free/busy information, and together with its associated standards has been a cornerstone of the standardization and interoperability of
digital calendar A digital calendar is a collaborative or personal time management software with a calendar that can be used to keep track of planned events. The calendar can also contain an appointment book, address book or contact list. Common features of di ...
s across different vendors. Files formatted according to the specification usually have an
extension Extension, extend or extended may refer to: Mathematics Logic or set theory * Axiom of extensionality * Extensible cardinal * Extension (model theory) * Extension (predicate logic), the set of tuples of values that satisfy the predicate * Ext ...
of .ics. With supporting software, such as an email reader or calendar application, recipients of an iCalendar data file can respond to the sender easily or counter-propose another meeting date/time. The file format is specified in a proposed Internet standard (RFC 5545) for calendar data exchange. iCalendar is used and supported by many products, including
Google Calendar Google Calendar is a time-management and scheduling calendar service developed by Google. It became available in beta release April 13, 2006, and in general release in July 2009, on the web and as mobile apps for the Android and iOS platforms ...
, Apple Calendar (formerly iCal),
HCL Domino HCL Notes (formerly IBM Notes and Lotus Notes; see Branding below) and HCL Domino (formerly IBM Domino and Lotus Domino) are the client and server, respectively, of a collaborative client-server software platform formerly sold by IBM, now by HC ...
(formerly IBM Notes and Lotus Notes),
Yahoo! Calendar Yahoo Calendar is a Web-based calendar service from Yahoo!. It can read calendar feeds and events syndicated from sites that make use of the published Yahoo calendar programming interfaces. While users are not required to have a Yahoo Mail accoun ...
, GNOME Evolution,
eM Client eM Client is a Windows and macOS based email client for sending and receiving emails, managing calendars, tasks, contacts, and notes. Live chat is integrated as well. It was developed as a user-friendly alternative to existing email clients and c ...
,
Lightning Lightning is a naturally occurring electrostatic discharge during which two electrically charged regions, both in the atmosphere or with one on the ground, temporarily neutralize themselves, causing the instantaneous release of an average ...
extension for
Mozilla Thunderbird Mozilla Thunderbird is a free and open-source cross-platform email client, personal information manager, news client, RSS and chat client developed by the Mozilla Foundation and operated by subsidiary MZLA Technologies Corporation. The proje ...
and
SeaMonkey SeaMonkey is a free and open-source Internet suite. It is the continuation of the former Mozilla Application Suite, based on the same source code, which itself grew out of Netscape Communicator and formed the base of Netscape 6 and Netscape ...
, and partially by Microsoft Outlook and
Novell GroupWise GroupWise is a messaging and collaboration platform from Micro Focus that supports email, calendaring, personal information management, instant messaging, and document management. The GroupWise platform consists of desktop client software, whi ...
. iCalendar is designed to be independent of the transport protocol. For example, certain events can be sent by traditional email or whole calendar files can be shared and edited by using a
WebDav WebDAV (Web Distributed Authoring and Versioning) is a set of extensions to the Hypertext Transfer Protocol (HTTP), which allows user agents to collaboratively author contents ''directly'' in an HTTP web server by providing facilities for conc ...
server, or
SyncML SyncML (Synchronization Markup Language) is the former name for a platform-independent information synchronization standard. The project is currently referred to as ''Open Mobile Alliance Data Synchronization and Device Management''. The purpose o ...
. Simple web servers (using just the HTTP protocol) are often used to distribute iCalendar data about an event and to publish busy times of an individual. Publishers can embed iCalendar data in web pages using
hCalendar hCalendar (short for ''HTML iCalendar'') is a microformat standard for displaying a semantic (X)HTML representation of iCalendar-format calendar information about an event, on web pages, using HTML classes and ''rel'' attributes. It allows pa ...
, a 1:1
microformat Microformats (μF) are a set of defined HTML classes created to serve as consistent and descriptive metadata about an element, designating it as representing a certain type of data (such as contact information, geographic coordinates, event ...
representation of iCalendar in semantic
(X) An emoticon (, , rarely , ), short for "emotion icon", also known simply as an emote, is a pictorial representation of a facial expression using characters—usually punctuation marks, numbers, and letters—to express a person's feelings, m ...
HTML The HyperText Markup Language or HTML is the standard markup language for documents designed to be displayed in a web browser. It can be assisted by technologies such as Cascading Style Sheets (CSS) and scripting languages such as JavaScript ...
.


History and design

iCalendar was first created in 1998 by the Calendaring and Scheduling Working Group of the
Internet Engineering Task Force The Internet Engineering Task Force (IETF) is a standards organization for the Internet and is responsible for the technical standards that make up the Internet protocol suite (TCP/IP). It has no formal membership roster or requirements and a ...
, chaired by Anik Ganguly of
Open Text Corporation OpenText Corporation (also written ''opentext'') is a Canadian company that develops and sells enterprise information management (EIM) software. OpenText, headquartered in Waterloo, Ontario, Canada, is Canada's fourth-largest software company ...
, and was authored by Frank Dawson of
Lotus Development Corporation Lotus Software (called Lotus Development Corporation before its acquisition by IBM) was an American software company based in Massachusetts; it was "offloaded" to India's HCL Technologies in 2018. Lotus is most commonly known for the Lotus 1-2- ...
and Derik Stenerson of
Microsoft Corporation Microsoft Corporation is an American multinational technology corporation producing computer software, consumer electronics, personal computers, and related services headquartered at the Microsoft Redmond campus located in Redmond, Washingt ...
. iCalendar is heavily based on the earlier
vCalendar The Internet Calendaring and Scheduling Core Object Specification (iCalendar) is a media type which allows users to store and exchange calendaring and scheduling information such as events, to-dos, journal entries, and free/busy information, a ...
by the
Internet Mail Consortium The Internet Mail Consortium (IMC) was an organization between 1996 and 2002 that claimed to be the only international organization focused on cooperatively managing and promoting the rapidly expanding world of electronic mail on the Internet. The ...
(IMC). iCalendar data files are
plain text In computing, plain text is a loose term for data (e.g. file contents) that represent only characters of readable material but not its graphical representation nor other objects ( floating-point numbers, images, etc.). It may also include a lim ...
files with the
extension Extension, extend or extended may refer to: Mathematics Logic or set theory * Axiom of extensionality * Extensible cardinal * Extension (model theory) * Extension (predicate logic), the set of tuples of values that satisfy the predicate * Ext ...
.ics or .ifb (for files containing availability information only). RFC 5545 replaced RFC 2445 in September 2009 and now defines the standard. iCalendar data have the
MIME Multipurpose Internet Mail Extensions (MIME) is an Internet standard that extends the format of email messages to support text in character sets other than ASCII, as well as attachments of audio, video, images, and application programs. Message ...
content type ''text/calendar''. The filename extension of ics is to be used for files containing calendaring and scheduling information, ifb for files with free or busy time information consistent with this MIME content type. The equivalent file
type code The resource fork is a fork or section of a file on Apple's classic Mac OS operating system, which was also carried over to the modern macOS for compatibility, used to store structured data along with the unstructured data stored within the data fo ...
s in Apple Macintosh operating system environments are iCal and iFBf. By default, iCalendar uses the
UTF-8 UTF-8 is a variable-length character encoding used for electronic communication. Defined by the Unicode Standard, the name is derived from ''Unicode'' (or ''Universal Coded Character Set'') ''Transformation Format 8-bit''. UTF-8 is capable of e ...
character set Character encoding is the process of assigning numbers to graphical characters, especially the written characters of human language, allowing them to be stored, transmitted, and transformed using digital computers. The numerical values that ...
; a different character set can be specified using the "charset" MIME parameter (if the transport method used supports MIME, such as
Email Electronic mail (email or e-mail) is a method of exchanging messages ("mail") between people using electronic devices. Email was thus conceived as the electronic (digital) version of, or counterpart to, mail, at a time when "mail" meant ...
or
HTTP The Hypertext Transfer Protocol (HTTP) is an application layer protocol in the Internet protocol suite model for distributed, collaborative, hypermedia information systems. HTTP is the foundation of data communication for the World Wide Web, w ...
). Each line is terminated by CR+ LF (in
hexadecimal In mathematics and computing, the hexadecimal (also base-16 or simply hex) numeral system is a positional numeral system that represents numbers using a radix (base) of 16. Unlike the decimal system representing numbers using 10 symbols, hexa ...
: 0D0A). Lines should be limited to 75
octets Octet may refer to: Music * Octet (music), ensemble consisting of eight instruments or voices, or composition written for such an ensemble ** String octet, a piece of music written for eight string instruments *** Octet (Mendelssohn), 1825 compo ...
(not characters) long. Where a data item is too long to fit on a single line it can be continued on following lines by starting the continuation lines with a space character (in hex: 20) or a tab character (in hex: 09). Actual line feeds in data items are encoded as a backslash followed by the letter n or N (the bytes 5C 6E or 5C 4E in UTF-8).


Limitations and future

The iCalendar format is designed to transmit calendar-based data, such as events, and intentionally does not describe what to do with that data. Thus, other programming may be needed to negotiate what to do with this data. iCalendar is meant to "provide the definition of a common format for openly exchanging calendaring and scheduling information across the Internet". While the features most often used by users are widely supported by iCalendar, some more advanced capabilities have problems. For example, most vendors do not support Journals (VJOURNAL). VTODOs have had conversion problems as well. iCalendar's calendar is also not compatible with some non- Gregorian calendars such as the
lunar calendar A lunar calendar is a calendar based on the monthly cycles of the Moon's phases ( synodic months, lunations), in contrast to solar calendars, whose annual cycles are based only directly on the solar year. The most commonly used calendar, the Gre ...
s used in
Israel Israel (; he, יִשְׂרָאֵל, ; ar, إِسْرَائِيل, ), officially the State of Israel ( he, מְדִינַת יִשְׂרָאֵל, label=none, translit=Medīnat Yīsrāʾēl; ), is a country in Western Asia. It is situated ...
and
Saudi Arabia Saudi Arabia, officially the Kingdom of Saudi Arabia (KSA), is a country in Western Asia. It covers the bulk of the Arabian Peninsula, and has a land area of about , making it the List of Asian countries by area, fifth-largest country in Asia ...
. The memo "Calendar Access Protocol" ( RFC 4324) was an initial attempt at a universal system to create real-time calendars, but was eventually abandoned. Instead, iCalendar saw some adoption for such purposes with ''ad hoc'' extensions such as GroupDAV and
CalDAV Calendaring Extensions to WebDAV, or CalDAV, is an Internet standard allowing a client to access and manage calendar data along with the ability to schedule meetings with users on the same or on remote servers. It lets multiple users in differ ...
emerging as informal standards and seeing some adoption in both client and server
software Software is a set of computer programs and associated documentation and data. This is in contrast to hardware, from which the system is built and which actually performs the work. At the lowest programming level, executable code consists o ...
packages. A first effort to simplify iCalendar standards by the
IETF The Internet Engineering Task Force (IETF) is a standards organization for the Internet and is responsible for the technical standards that make up the Internet protocol suite (TCP/IP). It has no formal membership roster or requirements and a ...
"Calendaring and Scheduling Working Group" (ietf-calsify WG) ended in January 2011 without seeing adoption. The work was then picked up by the "Calendaring Extensions Working Group" (ietf-calext WG).


Technical specifications


Core object

The top-level element in iCalendar is the Calendaring and Scheduling Core Object, a collection of calendar and scheduling information. Typically, this information will consist of a single iCalendar object. However, multiple iCalendar objects can be grouped together. The first line must be BEGIN:VCALENDAR, and the last line must be END:VCALENDAR; the contents between these lines is called the "icalbody".
The body must include the "PRODID" and "VERSION" calendar properties. In addition, it must include at least one calendar component. Note that while this article frequently uses an email style UID, this is now considered bad practice and a UUID should be used instead. VERSION is 2.0 for the current iCalendar format as of 2016. VERSION:1.0 was used to specify that data is in the old vCalendar format. The body of the iCalendar object (the icalbody) contains single-line ''Calendar Properties'' that apply to the entire calendar, as well as one or more blocks of multiple lines that each define a ''Calendar Component'' such as an event, journal entry, alarm, or one of the other types described below. Here is a simple example of an iCalendar object with a single calendar containing a single ''Calendar Component'', a "
Bastille Day Bastille Day is the common name given in English-speaking countries to the national day of France, which is celebrated on 14 July each year. In French, it is formally called the (; "French National Celebration"); legally it is known as (; "t ...
Party" event starting at 5pm on July 14, 1997, and ending at 4am the following morning.
BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//hacksw/handcal//NONSGML v1.0//EN
BEGIN:VEVENT
UID:[email protected]
DTSTAMP:19970714T170000Z
ORGANIZER;CN=John Doe:MAILTO:[email protected]
DTSTART:19970714T170000Z
DTEND:19970715T040000Z
SUMMARY:Bastille Day Party
GEO:48.85299;2.36885
END:VEVENT
END:VCALENDAR


Date and time format

The most common representation of date and time is a ''tz timestamp'' such as 20010911T124640Z with the format TZ for a total fixed length of 16 characters. ''Z'' indicates the use of UTC (referring to its "''Zulu''" time zone). When used in DTSTART and DTEND properties, start times are inclusive while end times are not. This allows an event's end time to be the same as a consecutive event's start without those events overlapping and potentially creating (false) scheduling conflicts.


Events (VEVENT)

VEVENT describes an event, which has a scheduled amount of time on a calendar. Normally, when a user accepts the calendar event, this will cause that time to be considered busy. A VEVENT may include a VALARM which allows an alarm. Such events have a DTSTART which sets a starting time, and a DTEND which sets an ending time. If the calendar event is recurring, DTSTART sets up the start of the first event. A VALARM code (reminder 1 day before):
BEGIN:VALARM
TRIGGER:-PT1440M
ACTION:DISPLAY
DESCRIPTION:Reminder
END:VALARM
VEVENT also is used for calendar events without a specific time, such as anniversaries and daily reminders. If the user needs to send in a cancellation for an event, the UID should be the same as the original event, and the component properties should be set to cancel.
METHOD:CANCEL
STATUS:CANCELLED
For sending an UPDATE for an event the UID should match the original UID. The other component property to be set is:
SEQUENCE:
I.e., for the first update:
SEQUENCE:1
In Microsoft Outlook, the SUMMARY corresponds to the "Subject" entry in the "Appointment" form, and DESCRIPTION to the descriptive text below it. In addition, Outlook 2002 and Outlook 2003 demand a UID and a DTSTAMP.


To-do (VTODO)

VTODO explains a to-do item, i.e., an action-item or assignment. Not all calendar applications recognize VTODO items. In particular, Outlook does not export Tasks as VTODO items, and ignores VTODO items in imported calendars. The following is an example of a to-do due on April 15, 1998. An audio alarm has been specified to remind the calendar user at noon, the day before the to-do is expected to be completed and repeat hourly, four additional times. The SEQUENCE element shows this to-do has been modified twice since it was initially created.
BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//ABC Corporation//NONSGML My Product//EN
BEGIN:VTODO
DTSTAMP:19980130T134500Z
SEQUENCE:2
UID:[email protected]
DUE:19980415T235959
STATUS:NEEDS-ACTION
SUMMARY:Submit Income Taxes
BEGIN:VALARM
ACTION:AUDIO
TRIGGER:19980414T120000
ATTACH;FMTTYPE=audio/basic:http://example.com/pub/audio-
 files/ssbanner.aud
REPEAT:4
DURATION:PT1H
END:VALARM
END:VTODO
END:VCALENDAR


Journal entry (VJOURNAL)

VJOURNAL is a journal entry. They attach descriptive text to a particular calendar date, may be used to record a daily record of activities or accomplishments, or describe progress with a related to-do entry. A "VJOURNAL" calendar component does not take up time on a calendar, so it has no effect on free or busy time (just like TRANSPARENT entries). In practice, few programs support VJOURNAL entries. The following is an example of a journal entry:
BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//ABC Corporation//NONSGML My Product//EN
BEGIN:VJOURNAL
DTSTAMP:19970324T120000Z
UID:[email protected]
ORGANIZER:MAILTO:[email protected]
STATUS:DRAFT
CLASS:PUBLIC
CATEGORIES:Project Report, XYZ, Weekly Meeting
DESCRIPTION:Project xyz Review Meeting Minutes\n
 Agenda\n1. Review of project version 1.0 requirements.\n2.
 Definition 
 of project processes.\n3. Review of project schedule.\n
 Participants: John Smith\, Jane Doe\, Jim Dandy\n-It was
  decided that the requirements need to be signed off by
  product marketing.\n-Project processes were accepted.\n
 -Project schedule needs to account for scheduled holidays
  and employee vacation time. Check with HR for specific
  dates.\n-New schedule will be distributed by Friday.\n-
 Next weeks meeting is cancelled. No meeting until 3/23.
END:VJOURNAL
END:VCALENDAR
(Note: This example is taken from RFC 2445 with the correction of changing the word 'CATEGORY' to 'CATEGORIES', which is a mistake in the original RFC)


Free/busy time (VFREEBUSY)

VFREEBUSY is a request for free/busy time, is a response to a request, or is a published set of busy time. The following is an example of published busy time information:
BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//RDU Software//NONSGML HandCal//EN
BEGIN:VFREEBUSY
DTSTAMP:20151013T080000Z
UID:[email protected]
ORGANIZER:MAILTO:[email protected]
DTSTART:19980313T141711Z
DTEND:19980410T141711Z
FREEBUSY:19980314T233000Z/19980315T003000Z
FREEBUSY:19980316T153000Z/19980316T163000Z
FREEBUSY:19980318T030000Z/19980318T040000Z
URL:http://www.example.com/calendar/busytime/jsmith.ifb
END:VFREEBUSY
END:VCALENDAR


Other component types

Other component types include VAVAILABILITY, VTIMEZONE (time zones) and VALARM (alarms). Some components can include other components (VALARM is often included in other components).


Distributing updates

The UID field distributes updates when a scheduled event changes. When the event is first generated a globally unique identifier is created. If a later event is distributed with the same UID, it replaces the original one.


Calendar extensions

vCalendar and iCalendar support private software extensions, with a "X-" prefix, a number of which are in common usage. Some of these include: * X-RECURRENCE-ID - vCalendar 1.0 extension which mimics the iCalendar 2.0 RECURRENCE-ID (Nokia S60 3rd Edition) * X-EPOCAGENDAENTRYTYPE - defines the client calendar type * X-FUNAMBOL-AALARMOPTIONS * X-FUNAMBOL-ALLDAY - All Day event flag * X-MICROSOFT-CDO-ALLDAYEVENT - Microsoft Outlook all day event flag * X-MICROSOFT-CDO-BUSYSTATUS - Microsoft Outlook status information * X-MICROSOFT-CDO-INTENDEDSTATUS * X-WR-CALNAME - The display name of the calendar * X-WR-CALDESC - A description of the calendar * X-WR-RELCALID - A globally unique identifier for the calendar * X-WR-TIMEZONE * X-PUBLISHED- TTL - Recommended update interval for subscription to the calendar * X-ALT-DESC - Used to include HTML markup in an event's description. Standard DESCRIPTION tag should contain non-HTML version.


vCalendar 1.0

iCalendar's design was based on the previous file format vCalendar created by the Internet Mail Consortium (IMC). Here is an example of information in vCalendar format:
BEGIN:VCALENDAR
VERSION:1.0
BEGIN:VEVENT
CATEGORIES:MEETING
STATUS:TENTATIVE
DTSTART:19960401T033000Z
DTEND:19960401T043000Z
SUMMARY:Your Proposal Review
DESCRIPTION:Steve and John to review newest proposal material
CLASS:PRIVATE
END:VEVENT
END:VCALENDAR
It has the .vcs file extension. After iCalendar was released, the Internet Mail Consortium stated that it "hopes that all vCalendar developers take advantage of these new open standards and make their software compatible with both vCalendar 1.0 and iCalendar."


Representations


xCal

xCal is an
XML Extensible Markup Language (XML) is a markup language and file format for storing, transmitting, and reconstructing arbitrary data. It defines a set of rules for encoding documents in a format that is both human-readable and machine-readable. T ...
representation of iCalendar data, as defined in .


jCal

jCal is a
JSON JSON (JavaScript Object Notation, pronounced ; also ) is an open standard file format and data interchange format that uses human-readable text to store and transmit data objects consisting of attribute–value pairs and arrays (or other se ...
representation of iCalendar data, as defined in .


hCalendar

hCalendar hCalendar (short for ''HTML iCalendar'') is a microformat standard for displaying a semantic (X)HTML representation of iCalendar-format calendar information about an event, on web pages, using HTML classes and ''rel'' attributes. It allows pa ...
is an
(x)HTML Extensible HyperText Markup Language (XHTML) is part of the family of XML markup languages. It mirrors or extends versions of the widely used HyperText Markup Language (HTML), the language in which Web pages are formulated. While HTML, prior t ...
representation of a subset of iCalendar data using
microformat Microformats (μF) are a set of defined HTML classes created to serve as consistent and descriptive metadata about an element, designating it as representing a certain type of data (such as contact information, geographic coordinates, event ...
s.


hEvent

hEvent is an HTML representation of a subset of iCalendar data using
Microformats Microformats (μF) are a set of defined HTML classes created to serve as consistent and descriptive metadata about an element, designating it as representing a certain type of data (such as contact information, geographic coordinates, event ...
addressing some accessibility concerns with the hCalendar format.


See also

*
CalDAV Calendaring Extensions to WebDAV, or CalDAV, is an Internet standard allowing a client to access and manage calendar data along with the ability to schedule meetings with users on the same or on remote servers. It lets multiple users in differ ...
, a standard for scheduling, sharing, searching and synchronizing calendar data with users on the same or on remote servers. Uses the iCalendar format for the calendar data. * GroupDAV, an alternative to CalDav. Servers may support both. *
hCalendar hCalendar (short for ''HTML iCalendar'') is a microformat standard for displaying a semantic (X)HTML representation of iCalendar-format calendar information about an event, on web pages, using HTML classes and ''rel'' attributes. It allows pa ...
(HTML iCalendar), a standard for displaying iCalendar events on web pages through (X)HTML representation * Scheduling OSID, a software interface abstraction for integration of calendar system using different calendaring protocols *
vCard vCard, also known as VCF (Virtual Contact File), is a file format standard for electronic business cards. vCards can be attached to e-mail messages, sent via Multimedia Messaging Service (MMS), on the World Wide Web, instant messaging, NFC o ...
(VCF), an electronic business card file format * xCal, an XML representation of the iCalendar standard *
Webcal Webcal is a uniform resource identifier (URI) scheme for accessing iCalendar files. WebCal allows you to create and maintain an interactive events calendar or scheduling system on a Web site or app. The webcal scheme was devised for use with the ...
, an unofficial
Uniform Resource Identifier A Uniform Resource Identifier (URI) is a unique sequence of characters that identifies a logical or physical resource used by web technologies. URIs may be used to identify anything, including real-world objects, such as people and places, conc ...
(URI)
scheme A scheme is a systematic plan for the implementation of a certain idea. Scheme or schemer may refer to: Arts and entertainment * ''The Scheme'' (TV series), a BBC Scotland documentary series * The Scheme (band), an English pop band * ''The Schem ...


Notes


References


External links

* Internet Calendaring and Scheduling Core Object Specification (iCalendar) (replaces ) * iCalendar Transport-Independent Interoperability Protocol (iTIP) (replaces ) * iCalendar Message-Based Interoperability Protocol (iMIP) (replaces ) * xCal: The XML format for iCalendar (iCalendar XML Representation) * update of the data formats for including certain characters, forbidden by the existing specification, in parameter values * jCal: The JSON Format for iCalendar * New Properties for iCalendar (additional properties to the iCalendar specification) * * - This describes the relationship of vCard, vCalendar, and iCalendar, and includes IMC's request for implementors to support both vCalendar and iCalendar. * - A list of resources for iCalendar and related standards. {{DEFAULTSORT:Icalendar Computer file formats Calendaring standards Internet Standards