Recurrence · 10 minute guide
RRULE, RDATE, EXDATE and RECURRENCE-ID Explained
A repeating calendar event is usually not stored as hundreds of copies. It starts with one master VEVENT and a set of rules and exceptions. Understanding the relationship between DTSTART, RRULE, RDATE, EXDATE and RECURRENCE-ID is the key to editing, splitting or repairing a recurring series without losing dates.
Published and reviewed by Whitle · September 26, 2026
Quick answer
What matters most.
- DTSTART anchors the series; RRULE generates dates from that starting point.
- EXDATE removes an occurrence, while RDATE adds one outside the main pattern.
- RECURRENCE-ID identifies one occurrence that has been changed or cancelled separately from the master series.
01
The five pieces of a recurring event
| Property | Plain-language role | Example |
|---|---|---|
| DTSTART | The first event and recurrence anchor | 20261005T090000 |
| RRULE | The pattern that generates more dates | FREQ=WEEKLY;BYDAY=MO;COUNT=5 |
| RDATE | One or more additional included dates | 20261110T090000 |
| EXDATE | One or more dates removed from the set | 20261012T090000 |
| RECURRENCE-ID | The original identity of a changed instance | 20261019T090000 |
02
A weekly series with one skipped date
The rule asks for five Mondays beginning October 5. EXDATE removes the October 12 occurrence from the final recurrence set. COUNT belongs to the rule generation step; removing one generated occurrence does not automatically increase COUNT to replace it.
BEGIN:VEVENT
UID:weekly-team@example.test
DTSTAMP:20260926T140000Z
DTSTART;TZID=America/Toronto:20261005T090000
DTEND;TZID=America/Toronto:20261005T093000
RRULE:FREQ=WEEKLY;BYDAY=MO;COUNT=5
EXDATE;TZID=America/Toronto:20261012T090000
SUMMARY:Weekly team meeting
END:VEVENT03
How a moved occurrence is stored
Suppose the October 19 meeting moves from 09:00 to 11:00. Calendar software can store a second VEVENT with the same UID and a RECURRENCE-ID equal to the original scheduled occurrence. DTSTART on that exception contains its new time.
BEGIN:VEVENT
UID:weekly-team@example.test
RECURRENCE-ID;TZID=America/Toronto:20261019T090000
DTSTAMP:20260926T150000Z
DTSTART;TZID=America/Toronto:20261019T110000
DTEND;TZID=America/Toronto:20261019T113000
SUMMARY:Weekly team meeting — moved
END:VEVENT04
COUNT versus UNTIL
Always preview a finite window before distributing a new rule. Monthly patterns such as day 31 may skip months that do not contain that date rather than moving to the last day of the month.
- COUNT limits the number of occurrences generated by the rule, including the DTSTART occurrence when it matches the rule.
- UNTIL sets the last possible recurrence boundary and must use a value compatible with the DTSTART form.
- An RRULE should not contain both COUNT and UNTIL.
- An endless rule has neither; use it only when an open-ended series is genuinely intended.
05
Common rule parts
| Part | Meaning | Example |
|---|---|---|
| FREQ | Base frequency | DAILY, WEEKLY, MONTHLY or YEARLY |
| INTERVAL | Repeat every N frequencies | INTERVAL=2 means every two weeks for a weekly rule |
| BYDAY | Limit to weekdays | BYDAY=MO,WE,FR |
| BYMONTHDAY | Limit to days of the month | BYMONTHDAY=1,15 |
| BYMONTH | Limit to months | BYMONTH=3,9 |
| BYSETPOS | Choose positions after other filters | BYDAY=FR;BYSETPOS=-1 for the last Friday |
06
Safely edit or move a series
- Keep the master event and all components sharing its UID together.
- Match EXDATE and RECURRENCE-ID value types and timezone meaning to the recurrence they identify.
- Do not deduplicate a recurring exception merely because it shares the master's UID.
- Preview dates across month boundaries and daylight-saving changes.
- When splitting a calendar, keep the recurrence family intact unless you intentionally rewrite it.
Common questions
A few direct answers.
What does RRULE mean in an ICS file?
RRULE is the recurrence rule that generates repeating dates from an event's DTSTART, using parts such as FREQ, INTERVAL, BYDAY, COUNT and UNTIL.
What is the difference between EXDATE and RECURRENCE-ID?
EXDATE removes a generated occurrence. RECURRENCE-ID appears on a separate event component that represents a changed or cancelled occurrence and identifies its original place in the series.
Can an RRULE contain COUNT and UNTIL?
No. RFC 5545 says UNTIL and COUNT must not occur together in the same recurrence rule.
Primary sources.
- RFC 5545 section 3.8.5.3: Recurrence Rule ↗
- RFC 5545 section 3.8.5.1: Exception Date-Times ↗
- RFC 5545 section 3.8.4.4: Recurrence ID ↗
Provider interfaces and limits can change. We review official documentation when this guide is materially updated.
Tools for this job.
Build a Repeat Rule
Choose a repeat pattern and get the rule for use inside a calendar event.
Explain a Repeat Rule
Understand a repeat rule in plain language and preview its scheduled dates.
Recurrence Validator
Check RRULE, exceptions and bounded occurrence behavior.
Create a Repeating Event
Set up an event that repeats daily, weekly, monthly or yearly.