.ICS iCalendar
.ics

iCalendar

An ICS (iCalendar) file stores calendar events, meeting invitations, and scheduling data in a plain-text format defined by RFC 5545. It is universally supported by Google Calendar, Apple Calendar, Outlook, and all major calendar applications.

File structure
Header schema
Records structured data
Text formatRFC 5545Calendar exchangeVEVENT / VTODORecurrence rules
By FileDex
Not convertible

Calendar data format. Conversion is not applicable.

Common questions

Can I subscribe to an ICS calendar URL instead of importing?

Yes. Most calendar apps support subscribing to an ICS URL, which automatically syncs updates. In Google Calendar, use 'From URL' under Other calendars. This is how public holiday and sports calendars are distributed.

What is the difference between VEVENT and VTODO?

VEVENT represents calendar events with start and end times. VTODO represents tasks or to-do items with optional due dates and completion status. Both are components within a VCALENDAR container.

How do recurring events work in ICS?

ICS uses RRULE (recurrence rule) properties like RRULE:FREQ=WEEKLY;BYDAY=MO,WE,FR to define repeating patterns. EXDATE excludes specific dates from the recurrence set.

What makes .ICS special

What is an ICS file?

ICS (iCalendar) is the standard file format for calendar data exchange, defined in RFC 5545. ICS files contain event information including dates, times, locations, descriptions, and attendees. They are universally supported by calendar applications and are the backbone of calendar sharing and meeting invitations.

Continue reading — full technical deep dive

How to open ICS files

  • Google Calendar (Web) — Import or subscribe
  • Apple Calendar (macOS, iOS) — Double-click to add
  • Microsoft Outlook (Windows, macOS) — Import events
  • Any text editor — ICS files are plain text

Technical specifications

Property Value
Standard RFC 5545 (iCalendar)
Encoding UTF-8
Components VEVENT, VTODO, VJOURNAL, VFREEBUSY
Recurrence RRULE (RFC 5545 recurrence rules)
Time Zones VTIMEZONE or TZID references

Common use cases

  • Meeting invitations: Email-based calendar invites.
  • Calendar subscriptions: Subscribing to shared calendars.
  • Event export: Exporting events from calendar apps.
  • Scheduling: Booking systems and appointment tools.

.ICS compared to alternatives

.ICS compared to alternative formats
Formats Criteria Winner
.ICS vs .CSV
Calendar data interchange
ICS preserves recurrence rules, time zones, attendees, and alarms that CSV cannot represent
ICS wins
.ICS vs .JCAL (RFC 7265)
Web API compatibility
jCal is a JSON representation of iCalendar, better suited for REST APIs and JavaScript processing
JCAL wins
.ICS vs .VCF
PIM data exchange
ICS handles calendar/scheduling data while VCF handles contact data; they are complementary standards
ICS wins

Technical reference

MIME Type
text/calendar
Developer
IETF
Year Introduced
1998
Open Standard
Yes — View specification

Binary Structure

ICS is a plain-text format using BEGIN:VCALENDAR and END:VCALENDAR delimiters. Events are nested as VEVENT components with DTSTART, DTEND, SUMMARY, and other properties. Supports recurrence via RRULE and time zones via VTIMEZONE.

OffsetLengthFieldExampleDescription
Line 1 16 bytes BEGIN marker BEGIN:VCALENDAR Start of the iCalendar data stream
Line 2 variable VERSION VERSION:2.0 iCalendar specification version (always 2.0 for RFC 5545)
Line 3 variable PRODID PRODID:-//Google Inc//Google Calendar//EN Product identifier of the application that created the file
Last line 14 bytes END marker END:VCALENDAR End of the iCalendar data stream
1998RFC 2445 defines the original iCalendar specification2004CalDAV protocol extends iCalendar for server-based calendar sync2009RFC 5545 replaces RFC 2445 as the current iCalendar standard2011RFC 6321 defines xCal, an XML representation of iCalendar2014RFC 7265 defines jCal, a JSON representation of iCalendar
Count events in an ICS file other
grep -c 'BEGIN:VEVENT' events.ics

Counts the number of VEVENT components by matching BEGIN:VEVENT delimiters

Extract event summaries from ICS other
grep '^SUMMARY' events.ics | sed 's/SUMMARY://'

Extracts the SUMMARY (title) of each event in the ICS file

Validate ICS with Python icalendar other
python3 -c "from icalendar import Calendar; cal=Calendar.from_ical(open('events.ics','rb').read()); print(f'{len(list(cal.walk("VEVENT")))} events parsed')"

Parses the ICS file and reports the number of valid VEVENT components found

ICS CSV export lossy Tabular export for spreadsheet analysis of event data
ICS JSON export lossy Machine-readable format for web APIs and calendar integrations
LOW

Attack Vectors

  • Malicious URLs in DESCRIPTION or URL properties leading to phishing sites
  • Oversized ICS files with thousands of VEVENT entries causing denial-of-service on import

Mitigation: FileDex does not open, execute, or parse these files. Reference page only.

icalendar library
Python library for parsing and generating iCalendar data (RFC 5545)
ical.js library
JavaScript parser for iCalendar and jCal data formats
Google Calendar service
Google's calendar service with ICS import, export, and subscription support
CalDAV spec
Protocol for syncing iCalendar data over WebDAV (RFC 4791)