iCalendar MIME Type
text/calendar and .ics files contain, how iCalendar represents events and recurrence, and how Poly supports them. MIME type details for text/calendar
In active use| MIME type | text/calendar |
|---|---|
| Extensions | .ics.ifb |
| First standardized | 1998 |
| Created by | IETF Calendaring and Scheduling Working Group |
| Browser support | |
| Example applications | Apple Calendar, Google Calendar, Microsoft Outlook |
| Poly support | Yes. Poly recognizes `.ics` files and makes their calendar text available for preview, search, and agent use. It does not turn them into a calendar view or expand recurring events. |
| Indexed by Poly | Yes. Poly indexes iCalendar source text for exact and semantic search, including readable titles, descriptions, locations, and attendee details. |
| Preview in Poly | Partial. iCalendar files open in Poly's text editor as readable source, not as a calendar grid or event form. |
| Poly agent | Yes. The Poly agent can read and reason about iCalendar text. Recurrence rules, time zones, and vendor extensions remain source fields rather than normalized events. |
What does text/calendar mean?
The text/calendar media type identifies iCalendar data, a text format for exchanging events, tasks, journal entries, free/busy information, alarms, and time-zone definitions. It is a data format rather than a calendar service. The same iCalendar object can travel in an email invitation, be downloaded as a file, or be served from a calendar subscription.1
IANA registers .ics for general calendar and scheduling data and .ifb for free/busy data. There is no magic number. A typical file instead begins with BEGIN:VCALENDAR and contains VERSION:2.0, but those text lines are structural markers rather than a binary signature.12
How is an iCalendar file structured?
An iCalendar object is a sequence of content lines inside a VCALENDAR component. Each content line has a property name, optional parameters, a colon, and a value. PRODID identifies the software that created the data, while VERSION:2.0 selects the iCalendar version.2
This small .ics file describes one event:
BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//Example Corp//Calendar Export//EN
BEGIN:VEVENT
UID:[email protected]
DTSTAMP:20260806T180000Z
DTSTART:20260812T170000Z
DTEND:20260812T180000Z
SUMMARY:Project planning
LOCATION:Conference room 2
END:VEVENT
END:VCALENDAR
VEVENT is the component most people encounter, but the standard defines several others:2
| Component | Represents | Common properties |
|---|---|---|
VEVENT | An event or appointment | DTSTART, DTEND, SUMMARY, LOCATION |
VTODO | A task | DUE, STATUS, PERCENT-COMPLETE |
VJOURNAL | A journal entry | SUMMARY, DESCRIPTION |
VFREEBUSY | Availability periods | FREEBUSY, DTSTART, DTEND |
VTIMEZONE | A time-zone definition | TZID, STANDARD, DAYLIGHT |
VALARM | An alarm nested inside an event or task | TRIGGER, ACTION |
The format has a few details that make hand editing less simple than it looks. Lines use CRLF endings. A content line longer than 75 octets should be folded, with each continuation beginning with a space or tab. Text values escape characters such as commas, semicolons, backslashes, and newlines. Current iCalendar streams are generated as UTF-8.2
Where did text/calendar come from?
The IETF Calendaring and Scheduling Working Group standardized iCalendar in RFC 2445 in November 1998. Frank Dawson of Lotus and Derik Stenerson of Microsoft edited that first specification to provide a common, open exchange format for Internet calendaring.3
RFC 5545 replaced RFC 2445 in September 2009 and remains the core specification. It clarified the grammar and interoperability rules while retaining VERSION:2.0. The format was based heavily on the earlier vCalendar industry specification, which is why older files and products may use the similar vCalendar name.12
Newer RFCs extend iCalendar without changing the media type. For example, RFC 7986 added properties for a calendar's name, description, color, image, and refresh interval. Readers are expected to tolerate properties they do not understand, including vendor-defined names beginning with X-, although they may ignore them.4
How do you open an .ics file?
Use a calendar application when you want to see or add the events. Apple Calendar imports and exports .ics files. Google Calendar can import them and documents the required VCALENDAR and VEVENT boundaries. Outlook on the web can upload an .ics file or subscribe to a calendar URL.567
Current web browsers do not provide a standard native iCalendar viewer. Clicking an .ics link normally downloads the file or hands it to a calendar application. A website may offer its own event preview, but that interface is not browser rendering of text/calendar itself.
Importing and subscribing are different:
- Importing copies the events that exist in the file at that moment.
- Subscribing keeps a relationship with a published calendar URL so later updates can be fetched.
Outlook explicitly notes that imported .ics events do not refresh when the source calendar changes, while a subscribed calendar does.7 If continued updates matter, use a trusted subscription URL rather than repeatedly importing snapshots.
Support in Poly
Poly recognizes .ics calendar files and keeps their readable content easy to inspect and find. Titles, descriptions, locations, attendee details, dates, and recurrence fields can participate in exact and meaning-based search. The file opens in Poly's text editor, where you can inspect the original iCalendar source.
The preview is intentionally source-oriented. Poly does not render a month or agenda view, expand an RRULE into every occurrence, resolve every time-zone definition into local display times, or turn each VEVENT into a separate Poly object. It also does not infer the registered .ifb extension as text/calendar from the filename alone.
The Poly agent can read the calendar text and answer questions about its stated events and fields. For ambiguous local times, complex recurrence, or vendor extensions, treat the answer as an interpretation of the source and confirm it in a calendar application that implements the relevant rules.
Time zones and recurring events
iCalendar can express a date-time in three important ways:2
- A value ending in
Z, such as20260812T170000Z, is UTC. - A value with
TZID, such asDTSTART;TZID=America/Los_Angeles:20260812T100000, refers to a named time zone. - A local value without
ZorTZIDis a “floating” time. It is interpreted in the viewer's current time zone.
Recurrence uses RRULE, often with exception dates in EXDATE and additional dates in RDATE. For example, RRULE:FREQ=WEEKLY;COUNT=6 describes six weekly occurrences beginning with DTSTART. The displayed result can still depend on the start time, time-zone definition, daylight-saving transitions, exclusions, and how the receiving application handles unsupported extensions.2
VTIMEZONE component or TZID merely to make a file shorter. Doing so can shift an appointment or turn a wall-clock meeting into a different instant, especially across daylight-saving changes.Converting iCalendar to other formats
Choose a destination based on whether the result must remain calendar-aware:
| Destination | Useful for | Important loss or limitation |
|---|---|---|
Another .ics file | Filtering or combining calendars while retaining iCalendar semantics | Preserve unique IDs, recurrence exceptions, time zones, and unknown extensions |
| CSV | Simple one-row-per-event analysis | Recurrence, alarms, attendees, time zones, and nested components need custom columns or expansion |
| JSON | Application APIs and custom processing | There is no single universal iCalendar-to-JSON mapping |
| PDF or HTML | A fixed human-readable schedule | The result is not importable as a live calendar and does not update |
Export or convert with a calendar-aware library. Renaming .ics to .csv does not convert its content. If recurrence is expanded into rows, record the time zone and the date range used, since an unbounded recurring series has no natural final row.
Security, privacy, and interoperability
Calendar data is often sensitive. An .ics file may expose attendee email addresses, meeting locations, conference links, descriptions, organizer details, travel plans, or availability. RFC 5545 calls calendar information privacy-sensitive and recommends protecting it against eavesdropping, replay, insertion, deletion, and modification during transport.2
The CLASS:PRIVATE property is calendar metadata, not encryption or access control. Share the file through an appropriately protected channel, and inspect the source before publishing it.
iCalendar can also contain external URLs and attachments. Treat unexpected links and imported invitations as untrusted input. A calendar application should place limits on file size, nesting, recurrence expansion, and embedded data, and it should not fetch remote resources without an appropriate trust decision.
Interoperability problems usually come from malformed line folding, incorrect escaping, unsupported vendor extensions, time-zone differences, or applications preserving different subsets of properties. Keep the original file, test important exports in the receiving application, and verify several recurring occurrences around daylight-saving transitions.
Footnotes
- Internet Assigned Numbers Authority.
text/calendarMedia Type Registration. The registration lists the media-type parameters,.icsand.ifbextensions, absence of a magic number, and intended uses. ↩ ↩2 ↩3 - Internet Engineering Task Force. RFC 5545: Internet Calendaring and Scheduling Core Object Specification (iCalendar). The current core specification defines the object model, syntax, components, recurrence, time zones, UTF-8 requirements, and security considerations. ↩ ↩2 ↩3 ↩4 ↩5 ↩6 ↩7 ↩8
- Internet Engineering Task Force. RFC 2445: Internet Calendaring and Scheduling Core Object Specification (iCalendar). The original November 1998 standard records the format's purpose, authors, and working-group origin. ↩
- Internet Engineering Task Force. RFC 7986: New Properties for iCalendar. This extension defines calendar-level name, description, color, image, source, and refresh properties. ↩
- Apple Support. Import or export calendars on Mac. Apple documents importing and exporting
.icscalendars in Calendar. ↩ - Google Calendar Help. Import events to Google Calendar. Google documents
.icsimport and the required iCalendar wrapper and event lines. ↩ - Microsoft Support. Import or subscribe to a calendar in Outlook.com or Outlook on the web. Microsoft documents
.icsupload, calendar subscriptions, and the update difference between them. ↩ ↩2