This page follows RFC 5545 (2009), with RFC 7986 and RFC 5546, all read 2026-11-12. Line syntax, value types and parameters are on values and parameters.
Components
| Component | In | Required properties | Meaning |
|---|---|---|---|
VCALENDAR | top | PRODID, VERSION (2.0) | The calendar object. Optional CALSCALE (only GREGORIAN) and METHOD. |
VEVENT | VCALENDAR | DTSTAMP, UID; DTSTART unless a METHOD is given | An event. Ends at DTEND or after DURATION, not both. |
VTODO | VCALENDAR | DTSTAMP, UID | A task, with DUE or DURATION, not both; DURATION needs a DTSTART. |
VJOURNAL | VCALENDAR | DTSTAMP, UID | A note attached to a date. |
VFREEBUSY | VCALENDAR | DTSTAMP, UID | Free and busy times, with FREEBUSY properties. |
VTIMEZONE | VCALENDAR | TZID, and at least one STANDARD or DAYLIGHT | A time zone’s rules. |
STANDARD, DAYLIGHT | VTIMEZONE | DTSTART, TZOFFSETFROM, TZOFFSETTO | One observance, usually with an RRULE and TZNAME. |
VALARM | VEVENT, VTODO | ACTION, TRIGGER; DESCRIPTION for DISPLAY and EMAIL; SUMMARY and ATTENDEE for EMAIL | A reminder. DURATION and REPEAT go together. |
Names starting X- are private components and properties; IANA can
register more. Applications must ignore components and parameters they do not
recognise.
Properties
| Property | Value | Used in |
|---|---|---|
ATTACH | URI, or BINARY with ENCODING=BASE64;VALUE=BINARY | Event, to-do, journal, alarm |
CATEGORIES | Comma-separated TEXT | Event, to-do, journal |
CLASS | PUBLIC (default), PRIVATE, CONFIDENTIAL | Event, to-do, journal |
COMMENT | TEXT | Most components |
DESCRIPTION | TEXT | Event, to-do, journal, alarm |
GEO | Two FLOATs: latitude;longitude | Event, to-do |
LOCATION | TEXT | Event, to-do |
PERCENT-COMPLETE | INTEGER 0–100 | To-do |
PRIORITY | INTEGER 0–9: 0 undefined, 1 highest, 9 lowest | Event, to-do |
RESOURCES | TEXT list | Event, to-do |
STATUS | Event: TENTATIVE, CONFIRMED, CANCELLED. To-do: NEEDS-ACTION, COMPLETED, IN-PROCESS, CANCELLED. Journal: DRAFT, FINAL, CANCELLED. | Event, to-do, journal |
SUMMARY | TEXT: the title | Event, to-do, journal, alarm |
COMPLETED | DATE-TIME in UTC | To-do |
DTEND, DUE, DTSTART | DATE-TIME or DATE | Event; to-do; most |
DURATION | DURATION | Event, to-do, alarm |
FREEBUSY | PERIOD list, FBTYPE parameter | Free/busy |
TRANSP | OPAQUE (default, blocks time) or TRANSPARENT | Event |
TZID, TZNAME, TZOFFSETFROM, TZOFFSETTO, TZURL | TEXT; UTC-OFFSET; URI | Time zones |
ATTENDEE, ORGANIZER | CAL-ADDRESS (mailto:) | Event, to-do, journal, free/busy; ATTENDEE also in email alarms |
CONTACT | TEXT | Event, to-do, journal, free/busy |
RECURRENCE-ID | DATE-TIME or DATE: which occurrence this overrides | Event, to-do, journal |
RELATED-TO | TEXT (a UID), RELTYPE parameter | Event, to-do, journal |
URL | URI | Event, to-do, journal, free/busy |
UID | TEXT, globally unique | Event, to-do, journal, free/busy |
EXDATE, RDATE | DATE-TIME, DATE (RDATE also PERIOD) lists | Recurring components, observances |
RRULE | RECUR | Recurring components, observances |
ACTION | AUDIO, DISPLAY, EMAIL | Alarm |
REPEAT | INTEGER | Alarm |
TRIGGER | DURATION (relative to start, or end with RELATED=END) or a UTC DATE-TIME | Alarm |
CREATED, DTSTAMP, LAST-MODIFIED | DATE-TIME in UTC | Event, to-do, journal (DTSTAMP also free/busy) |
SEQUENCE | INTEGER, the revision number | Event, to-do, journal |
REQUEST-STATUS | Code, text and data, such as 2.0;Success | Scheduling replies |
RFC 7986 adds NAME, DESCRIPTION, UID,
URL, LAST-MODIFIED, CATEGORIES,
REFRESH-INTERVAL, SOURCE, COLOR and
IMAGE to the calendar itself, COLOR and
IMAGE to events, to-dos and journals, and CONFERENCE to
events and to-dos.
Methods
A METHOD makes the file a scheduling message (iTIP,
RFC 5546); RFC 5545 requires
the text/calendar media type’s method parameter to match
it. The methods are PUBLISH, REQUEST,
REPLY, ADD, CANCEL, REFRESH,
COUNTER, DECLINECOUNTER. A plain calendar file has no
method.