Open ICS File

Information, tips and instructions

ICF Format

iCalendar information is stored in plain text form and by default uses UTF-8 character set. Information in iCalendar format is typically transferred either in ICS of IFB files. ICS files store information about calendar events and IFB files store free and busy information. Lines in iCalendar files are limited to 75 octets (1 character could be encoded by multiple octets) and are terminated by CR+LF.

The main purpose of iCalendar format is to transmit events and other calendar objects. It doesn’t contain any information on what to do with events or how to process. This is left to an application working with iCalendar data to decide.

Every ICS file has VCALENDAR object at the top level of its hierarchy. One ICS file can store multiple VCALENDAR objects but that is rarely done. Each object should start with BEGIN clause and end with END clause. For example, VCALENDAR object will be stored as:

[Calendar information]

Several types of components could be stored inside VCALENDAR. They include: VEVENT for events, VTODO for To-dos, VJOURNAL for Journal Entry, VFREEBUSY for Free/busy time, VAVAILABILITY for availability information, VTIMEZONE for time zones, VALARM for alarms. Typical ICS file will contain only VEVENT objects as these objects supported by almost all scheduling and calendar software.

Below is an example of VEVENT object:

UID:[email protected]
ORGANIZER;CN=Test User:MAILTO:[email protected]
DTSTART: 20190412T120000Z
DTEND: 20190412T140000Z
SUMMARY:Test Event

VEVENT object most important properties are:

  • UID - identifies unique identifier for an event
  • DTSTAMP - date and time of event creation
  • ORGANIZER – details about event organizer
  • DTSTART and DTEND – date and time of event start and end
  • SUMMARY – event description

iCalendar objects may also contain child objects. For example, VEVENT can contain VALARM object which will define alarms set for that specific event.

IFB files typically contain VFREEBUSY objects. VFREEBUSY object can contain request for free/busy time, response to free/busy time request or publicly available free/busy information.

For a full specification on iCalendar format visit Internet Calendaring and Scheduling Core Object Specification page.