How to use the rrule recurrence rule builder and expander
- Pick the first date of the event.
- Choose how it repeats, such as weekly, and tick the weekdays. For monthly or yearly rules you can pick a position like the last Friday, give days of the month or limit the months.
- Choose how it ends: after a number of times, on a date or never.
- Read the rule, the list of dates and the calendar lines to copy. To check a rule you already have, paste it in the advanced box.
Formula
RRULE:FREQ=WEEKLY;INTERVAL=2;BYDAY=MO,WE;COUNT=10
FREQ is DAILY, WEEKLY, MONTHLY or YEARLY, INTERVAL steps the period, COUNT or UNTIL ends the rule
BYDAY, BYMONTHDAY, BYMONTH and BYSETPOS choose the days within each period
The rule is the recurrence rule of the iCalendar standard, RFC 5545. This tool works with whole days.
Every Monday and Wednesday, ten times, from October 12, 2026
The rule FREQ=WEEKLY;BYDAY=MO,WE;COUNT=10 starting on Monday, October 12, 2026 gives Monday, October 12, then Wednesday, October 14, Monday, October 19, Wednesday, October 21, and so on, ending with Wednesday, November 11, 2026.
The last Friday of each month is FREQ=MONTHLY;BYDAY=-1FR. Starting from October 10, 2026 it gives October 30, November 27, December 25, 2026, then January 29 and February 26, 2027. The first Monday of each month, FREQ=MONTHLY;BYDAY=1MO, starting on October 12, 2026 gives November 2, December 7, 2026 and January 4, 2027.
How the dates are made
Each repeat period, a day, a week, a month or a year stepped by the interval, makes a set of days from the rules for that period. Days before the first date are dropped, BYSETPOS can pick from the set, and COUNT or UNTIL stops the list. A month without the day you ask for, such as the 31st in June, makes no date for that month, and February 29 appears only in leap years. Skipped dates are removed after COUNT is applied, so a rule that says ten times with two skipped dates lists eight.
If the dates are not what you expected, look at the first date. A weekly rule with no weekdays repeats on the weekday of the first date, and a monthly rule with no days repeats on its day of the month.
Using the output
The calendar lines at the bottom of the result can be pasted into the event of an iCalendar file. A full event also needs a UID, a timestamp and a summary, which your calendar app can add. To merge calendar files, use the ICS Calendar File Merger, and for a quick link to add a single event use the Add to Calendar Link Generator.
If you are looking for repeating charges rather than building a schedule, the Recurring Charge Finder searches a bank statement. For the nth working day of a month, which a rule cannot express, see the Nth Business Day of Month Calculator.
Assumptions and limits
- Only date-based rules are handled. Times of day, time zones, BYYEARDAY, BYWEEKNO and the hour, minute and second parts are not.
- The first date is part of the list only when it fits the rule.
- At most 100 dates are listed. A rule that makes no date within 400 years is reported as empty.
- Calendar apps differ in small ways when they read rules, so check the first few dates in your own app.
Frequently asked questions
What does BYDAY=-1FR mean?
It means the last Friday of the month. A number before the day picks the nth one, so 2TU is the second Tuesday and -2SA is the second to last Saturday.
What is the difference between COUNT and UNTIL?
COUNT stops after that many dates. UNTIL stops after a last possible date. A rule can use one of them, not both.
Why does a monthly rule on the 31st skip some months?
Months with fewer days have no 31st, so the rule makes no date for them. Use BYMONTHDAY=-1 for the last day of every month.
Can I paste a rule from another app?
Yes. Paste it in the advanced box, with or without the RRULE: prefix. Unsupported parts are named so you know what was not read.