The syntax of RFC 5545, sections 3.1 to 3.3, read 2026-11-12. A similar line syntax is used by vCard.
Content lines
- A line is
NAME *(";" param) ":" value, ending with CR LF. Names are not case-sensitive. A parameter isNAME=value[,value…]; a parameter value with:,;or,is put in double quotes. - Lines should be at most 75 octets. A longer line is folded by inserting CR LF and a single space or tab; unfolding removes the CR LF and that one character. The RFC notes that simple writers may fold in the middle of a UTF-8 character, so unfold before decoding.
- In TEXT values,
\\,\;,\,and\nor\N(new line) are escapes. A colon must not be escaped. - The default character set is UTF-8. The media type is
text/calendar.
Value types
| Type | Form | Example |
|---|---|---|
BINARY | Base64, with ENCODING=BASE64 | SGVsbG8= (the bytes of “Hello”) |
BOOLEAN | TRUE or FALSE | TRUE |
CAL-ADDRESS | A URI, usually mailto: | mailto:jane@example.com |
DATE | YYYYMMDD | 20261112 |
DATE-TIME | YYYYMMDDTHHMMSS: floating (local wherever you are), with Z for UTC, or with a TZID parameter | 20261112T213000Z |
DURATION | [+|-]P then weeks (nW) or days and time (nD, T, nH, nM, nS) | PT1H30M, -P1D |
FLOAT | Decimal number | 51.5072 |
INTEGER | Signed 32-bit | 3 |
PERIOD | start/end or start/duration | 20261112T090000Z/PT1H |
RECUR | A recurrence rule | FREQ=WEEKLY;BYDAY=MO,WE |
TEXT | Escaped text | Room 2\, first floor |
TIME | HHMMSS[Z] | 213000 |
URI | RFC 3986 URI | https://example.com/ |
UTC-OFFSET | +HHMM[SS] or -HHMM[SS] | -0500 |
Each property has a default type; VALUE= chooses another allowed one,
such as DTSTART;VALUE=DATE:20261112 for an all-day event.
Recurrence rules
| Part | Values |
|---|---|
FREQ | Required: SECONDLY, MINUTELY, HOURLY, DAILY, WEEKLY, MONTHLY, YEARLY. |
UNTIL or COUNT | End date or number of occurrences; not both. Neither means forever. |
INTERVAL | Every n periods; default 1. |
BYSECOND, BYMINUTE, BYHOUR | Lists of 0–60, 0–59, 0–23. |
BYDAY | MO, TU, WE, TH, FR, SA, SU, with an optional number: 1MO first Monday, -1FR last Friday. |
BYMONTHDAY | 1 to 31 or −31 to −1. |
BYYEARDAY | 1 to 366 or −366 to −1. |
BYWEEKNO | 1 to 53 or −53 to −1 (with YEARLY). |
BYMONTH | 1 to 12. |
BYSETPOS | Picks occurrences within each period: -1 the last. |
WKST | First day of the week, default MO. |
Example: RRULE:FREQ=MONTHLY;BYDAY=MO,TU,WE,TH,FR;BYSETPOS=-1 is the
last working day of each month.
RFC 7529 adds
RSCALE (a CLDR calendar system, such as CHINESE) and
SKIP (OMIT, BACKWARD or
FORWARD) for non-Gregorian calendars.
Parameters
| Parameter | Values and meaning |
|---|---|
ALTREP | A URI of an alternative representation, such as HTML. |
CN | Common name of a calendar user. |
CUTYPE | INDIVIDUAL (default), GROUP, RESOURCE, ROOM, UNKNOWN. |
DELEGATED-FROM, DELEGATED-TO | Calendar addresses. |
DIR | URI of a directory entry. |
ENCODING | 8BIT (default) or BASE64. |
FMTTYPE | Media type of an attachment. |
FBTYPE | FREE, BUSY (default), BUSY-UNAVAILABLE, BUSY-TENTATIVE. |
LANGUAGE | A language tag, such as en-GB. |
MEMBER | Groups the user belongs to. |
PARTSTAT | NEEDS-ACTION (default), ACCEPTED, DECLINED, TENTATIVE, DELEGATED, and for to-dos COMPLETED, IN-PROCESS. |
RANGE | THISANDFUTURE. |
RELATED | START (default) or END, for a TRIGGER. |
RELTYPE | PARENT (default), CHILD, SIBLING. |
ROLE | CHAIR, REQ-PARTICIPANT (default), OPT-PARTICIPANT, NON-PARTICIPANT. |
RSVP | TRUE or FALSE (default). |
SENT-BY | Who acts for the user. |
TZID | A time zone defined in a VTIMEZONE (or, with a leading /, a globally known one). |
VALUE | One of the value types. |