RRULE / Recurring Event Builder

Build and preview RFC 5545 RRULE strings for recurring calendar events

Ad placeholder (leaderboard)

An RRULE is the compact recurrence rule from the iCalendar standard (RFC 5545) that calendars use to repeat an event without storing every single date. This builder lets you assemble one visually — frequency, interval, weekdays, day of month, months, and an end condition — and shows you the next occurrences so you can confirm the rule does what you expect before pasting it into an .ics file or a calendar API.

How it works

An RRULE is a single string of KEY=VALUE pairs joined by semicolons. The builder constructs it from your selections:

  • FREQ — the base cadence: DAILY, WEEKLY, MONTHLY or YEARLY. This is the only mandatory part.
  • INTERVAL — repeat every N units. FREQ=WEEKLY;INTERVAL=2 is every two weeks. Omitted when the interval is 1 (the default).
  • BYDAY — for weekly rules, the weekdays the event lands on, using two-letter codes MO TU WE TH FR SA SU.
  • BYMONTHDAY — for monthly and yearly rules, the day-of-month number (1–31).
  • BYMONTH — for yearly rules, the month numbers the event occurs in.
  • COUNT or UNTIL — the end condition. COUNT=10 stops after ten occurrences; UNTIL=20261231T235959Z stops on a date. A valid rule uses at most one of these.

The week-start defaults to Monday (WKST=MO), which is the RFC default and matches most calendar apps.

Occurrence preview

The preview expands the rule with plain date arithmetic: it walks forward from your start date, applies the interval, and keeps only dates that match your BYDAY / BYMONTHDAY / BYMONTH qualifiers. Months that don’t contain the requested day (for example, day 31 in February) are skipped, just as a compliant calendar would skip them.

Example

A stand-up every Monday, Wednesday and Friday for 12 occurrences produces:

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

Paired with a start date, the full snippet you paste into an .ics file looks like:

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

Everything runs locally in your browser — no event details are uploaded.

Ad placeholder (rectangle)