RRULE Generator and Next Occurrence Tester

Build common iCalendar recurrence rules and preview the exact upcoming dates before adding them to an ICS file or scheduling system.

Recurrence builder

Build a common daily, weekly, monthly, or yearly rule.

RRULE:FREQ=WEEKLY;BYDAY=MO,WE,FR;COUNT=12

Next-occurrence tester

Leave the field empty to test the generated rule, or paste a supported RRULE.

  1. #18/10/2026, 10:00:00 PM2026-08-10T22:00:00.000Z
  2. #28/12/2026, 10:00:00 PM2026-08-12T22:00:00.000Z
  3. #38/14/2026, 10:00:00 PM2026-08-14T22:00:00.000Z
  4. #48/17/2026, 10:00:00 PM2026-08-17T22:00:00.000Z
  5. #58/19/2026, 10:00:00 PM2026-08-19T22:00:00.000Z
  6. #68/21/2026, 10:00:00 PM2026-08-21T22:00:00.000Z
  7. #78/24/2026, 10:00:00 PM2026-08-24T22:00:00.000Z
  8. #88/26/2026, 10:00:00 PM2026-08-26T22:00:00.000Z
  9. #98/28/2026, 10:00:00 PM2026-08-28T22:00:00.000Z
  10. #108/31/2026, 10:00:00 PM2026-08-31T22:00:00.000Z

The preview supports common FREQ, INTERVAL, COUNT, UNTIL, plain BYDAY, and BYMONTHDAY rules. It does not expand ordinal weekdays, BYSETPOS, RDATE, EXDATE, or custom calendar extensions.

What is an RRULE?

An iCalendar RRULE describes a repeating set of dates. It is used in ICS files and calendar APIs for meetings, reminders, subscriptions, and scheduled events. The rule works together with a start date; the RRULE alone does not contain the first occurrence's complete local time-zone context.

Common examples

Every weekday for 20 occurrences:

RRULE:FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR;COUNT=20

Every three months on the fifteenth day:

RRULE:FREQ=MONTHLY;INTERVAL=3;BYMONTHDAY=15

COUNT and UNTIL

COUNT limits the complete recurrence set, including the first matching occurrence. UNTIL stops expansion at a date or UTC timestamp. Do not use both in the same generated rule. An event without either value repeats indefinitely until another system-specific limit applies.

Dates that do not exist

A monthly rule for day 31 has no occurrence in a month without that date. It should not silently move to the last day of the month. Yearly events created on February 29 similarly skip non-leap years unless a more complex rule or application behavior says otherwise.

Preview scope and time zones

The tester implements the common FREQ, INTERVAL, COUNT, UNTIL, plain BYDAY, and BYMONTHDAY combinations created by this page. The complete iCalendar grammar also includes ordinal weekdays, BYSETPOS, week numbers, year days, explicit inclusions and exclusions, and calendar-scale extensions. Use a production recurrence library for rules outside the documented subset.

The input is interpreted in the browser's local time zone and each result also shows UTC. Daylight-saving transitions can change UTC offsets while local wall-clock time remains constant.

Recurrence syntax is defined by RFC 5545. Use the ICS Calendar File Generator to package an event, the Cron Expression Debugger for server schedules, or the World Clock to compare time zones. Rule data stays in your browser.

Share this utility

Send the tool, not any text or files you entered. Input is never added to the share URL.