Try out our new RRULE tool for creating RRULE compatible strings.

Component Name



Provide a grouping of calendar properties that describe a to-do.

Format Definition: A "VTODO" calendar component is defined by the following notation:

 todoc      = "BEGIN" ":" "VTODO" CRLF
              todoprop *alarmc
              "END" ":" "VTODO" CRLF

 todoprop   = *(
            ; The following are REQUIRED,
            ; but MUST NOT occur more than once.
            dtstamp / uid /
            ; The following are OPTIONAL,
            ; but MUST NOT occur more than once.
            class / completed / created / description /
            dtstart / geo / last-mod / location / organizer /
            percent / priority / recurid / seq / status /
            summary / url /
            ; The following is OPTIONAL,
            ; but SHOULD NOT occur more than once.
            rrule /
            ; Either 'due' or 'duration' MAY appear in
            ; a 'todoprop', but 'due' and 'duration'
            ; MUST NOT occur in the same 'todoprop'.
            ; If 'duration' appear in a 'todoprop',
            ; then 'dtstart' MUST also appear in
            ; the same 'todoprop'.
            due / duration /
            ; The following are OPTIONAL,
            ; and MAY occur more than once.
            attach / attendee / categories / comment / contact /
            exdate / rstatus / related / resources /
            rdate / x-prop / iana-prop


A "VTODO" calendar component is a grouping of component properties and possibly "VALARM" calendar components that represent an action-item or assignment. For example, it can be used to represent an item of work assigned to an individual; such as "turn in travel expense today".

The "VTODO" calendar component cannot be nested within another calendar component. However, "VTODO" calendar components can be related to each other or to a "VEVENT" or to a "VJOURNAL" calendar component with the "RELATED-TO" property.

A "VTODO" calendar component without the "DTSTART" and "DUE" (or "DURATION") properties specifies a to-do that will be associated with each successive calendar date, until it is completed.


The following is an example of a "VTODO" calendar component that needs to be completed before May 1st, 2007. On midnight May 1st, 2007 this to-do would be considered overdue.

 SUMMARY:Submit Quebec Income Tax Return for 2006

The following is an example of a "VTODO" calendar component that was due before 1:00 P.M. UTC on July 9th, 2007 and was completed on July 7th, 2007 at 10:00 A.M. UTC.

 SUMMARY:Submit Revised Internet-Draft

This document was automatically converted to XHTML using an RFC to HTML converter with the original text document at the Internet Engineering Task Force web site at .  The original text document should be referred to if there are any errors or discrepancies found in this document.

Need to test your iCalendar feeds?

The iCalendar Validator provides developers and testers a method to validate their iCalendar feeds, which can take data from either a URL, file or text snippet and compare it against the RFC 5545 specification.  We believe we have one of the best iCalendar validation tools available on the internet. More information about the validator can be found here.