The .ics file format, also known as iCalendar, is a universal, open standard for exchanging and sharing calendaring and scheduling information between different platforms and applications.
An .ics file is a plain text file that contains details about events, to-dos, journal entries, and other calendar data. It serves as a common "language" that allows calendar applications from different vendors—like Google Calendar, Apple Calendar, and Microsoft Outlook—to seamlessly read and interpret the same event information.
Structure of an .ics file
An .ics file is structured as a hierarchical text file, containing one or more "components" nested within a main VCALENDAR object. The data is organized into logical blocks, each starting with BEGIN: and ending with END:.
The main VCALENDAR component
Every .ics file must begin and end with BEGIN:VCALENDAR and END:VCALENDAR, respectively. The header of this component also includes several required properties:
VERSION: Specifies the version of the iCalendar specification being used. For the current standard (RFC 5545), the value is2.0.PRODID: A property that identifies the product or company that created the iCalendar object.CALSCALE: Defines the calendar system used. The default and most common isGREGORIAN.METHOD: A property that defines the iCalendar object's purpose, such asPUBLISHfor a public calendar,REQUESTfor a meeting invitation, orCANCELto remove an event.
Core components and properties
Inside the VCALENDAR block, the file contains one or more calendar components, which hold the specific data for events, tasks, or other calendar items.
The VEVENT componentThe most common component is VEVENT, which represents a single calendar event. A VEVENT block contains properties describing the event:
UID: A globally unique identifier for the event. This is crucial for updating and managing events across different platforms.DTSTAMP: The date and time the iCalendar file was created.DTSTART/DTEND: The start and end date and time of the event.SUMMARY: The title or subject of the event.DESCRIPTION: A detailed description of the event. This can be plain text and, through extensions likeX-ALT-DESC, can also include HTML.LOCATION: The physical location of the event.ATTENDEE: Can be used to list the email addresses of event attendees.RRULE: A powerful property that defines recurrence rules for repeating events (e.g., daily, weekly, monthly).
Other common components
VTODO: Represents a "to-do" item or task. It can include properties for priority, due date, and completion status.VJOURNAL: A journal entry, which can be used to track and record information associated with a specific date.VTIMEZONE: Provides information about time zones. A file can contain multipleVTIMEZONEcomponents to accurately handle daylight saving time and different regions.
Example of an .ics file
BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//Calendar Product//EN
CALSCALE:GREGORIAN
METHOD:PUBLISH
BEGIN:VEVENT
SUMMARY:Team Meeting
DTSTART:20250915T140000Z
DTEND:20250915T150000Z
DTSTAMP:20250829T090000Z
UID:c7614cff-3549-4a00-9152-d25cc1fe077d
LOCATION:Conference Room B
DESCRIPTION:Discuss Q3 results and project next steps.
END:VEVENT
END:VCALENDAR
Use code with caution.
How .ics files are used
The versatility of the .ics format allows it to be used in several ways:
- Email invitations: When a user receives a meeting request, the
.icsfile is attached to the email. The calendar program reads the file and displays a button to "Accept" or "Decline" the event, or simply adds it to the user's calendar. - Web downloads: Websites often provide "Add to Calendar" links that download an
.icsfile. This is common for event pages, webinars, or public holiday schedules. - Calendar synchronization: The iCalendar standard is the foundation for protocols like CalDAV, which enable live, two-way synchronization of calendar data between clients and servers. This is how a change made in one application (e.g., on a phone) can be reflected in another (e.g., on a desktop).
The evolution and importance of iCalendar
The iCalendar standard (first defined in RFC 2445 and later updated by RFC 5545) was developed by the Internet Engineering Task Force (IETF) to solve a fundamental problem: interoperability between different calendar systems. By creating an open, text-based format, competing companies were able to create products that could share and understand the same calendar data, ultimately benefiting the end user. While manual .ics file imports can sometimes be cumbersome, the format's underlying principles are what enable the seamless, real-time sync of modern digital calendars via other protocols.