ClockOrbit

Calendar tool

Recurring event generator

Turn a repeat pattern into a readable schedule, the next occurrence dates, and an ICS calendar file that uses a real RRULE.

Schedule

Every week on Monday at 11:00 AM UTC

  1. Mon, Nov 9, 2026 11:00 AM UTC
  2. Mon, Nov 16, 2026 11:00 AM UTC
  3. Mon, Nov 23, 2026 11:00 AM UTC
  4. Mon, Nov 30, 2026 11:00 AM UTC
  5. Mon, Dec 7, 2026 11:00 AM UTC
  6. Mon, Dec 14, 2026 11:00 AM UTC
  7. Mon, Dec 21, 2026 11:00 AM UTC
  8. Mon, Dec 28, 2026 11:00 AM UTC
  9. Mon, Jan 4, 2027 11:00 AM UTC
  10. Mon, Jan 11, 2027 11:00 AM UTC
ics
BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//timekit//Recurring Event Generator//EN
CALSCALE:GREGORIAN
METHOD:PUBLISH
X-WR-CALNAME:Team planning
X-WR-CALDESC:Every week on Monday at 11:00 AM UTC
BEGIN:VTIMEZONE
TZID:UTC
END:VTIMEZONE
BEGIN:VEVENT
UID:recurring-20261103T110000000Z@timekit
DTSTAMP:20261102T114555Z
DTSTART:20261103T110000Z
DTEND:20261103T113000Z
SUMMARY:Team planning
DESCRIPTION:Every week on Monday at 11:00 AM UTC
RRULE:FREQ=WEEKLY;BYDAY=MO
TRANSP:OPAQUE
END:VEVENT
END:VCALENDAR
Download ICS

Build repeat rules without hand-writing RRULE

Calendar recurrence rules are compact, but they are not friendly to write by hand. This generator keeps the controls close to the way people describe a schedule: every week, every other Tuesday and Thursday, on the first day of the month, or once a year on the same date. The output is a normal VCALENDAR file, so you can download it and import it into calendar apps that understand ICS recurrence.

Use the timezone selector for the place where the event happens, then check the next ten dates before copying the file. That preview catches common mistakes like choosing Friday instead of Thursday or ending after too few occurrences. The share URL stores only the visible choices in the query string, which makes it practical to send a draft to a teammate before publishing a company calendar, class series, workout plan, or recurring reminder.

For one-off dates, use the countdown maker. For comparing meeting times across cities, use the meeting scheduler.

From plain words to an RRULE line

Each combination of controls maps to one line in the exported file. A few concrete pairings show the shape of the syntax:

You chooseThe file carries
Every week on MondayRRULE:FREQ=WEEKLY;BYDAY=MO
Every other week on Tuesday and ThursdayRRULE:FREQ=WEEKLY;INTERVAL=2;BYDAY=TU,TH
Monthly on day 15RRULE:FREQ=MONTHLY;BYMONTHDAY=15
Yearly on 15 MarchRRULE:FREQ=YEARLY;BYMONTHDAY=15;BYMONTH=3
Daily, 30 occurrencesRRULE:FREQ=DAILY;COUNT=30

Two details keep the output predictable: INTERVAL only appears when it is greater than one, and weekday lists are always written in Monday-first order regardless of the order you clicked them. Reading the generated line against this table is a quick way to learn the notation well enough to sanity-check any calendar file.

Edge cases the ten-date preview catches

A monthly rule pinned to day 29, 30, or 31 skips the months that lack that date, so a day-31 event fires only seven times a year. An every-other-week rule counts its two-week blocks from the start date, which means moving the first occurrence by a week silently moves the entire future schedule. And because occurrences are computed as local wall times in the chosen IANA timezone, a weekly 09:00 event stays at 09:00 through daylight saving changes while its UTC instant moves by an hour. All three of these surprises are visible in the preview before anything reaches a calendar, which is the reason it lists real dates instead of restating the rule. The tool caps the count field at 366 occurrences and the interval at 12, wide enough for anything from daily standups to a biennial review.

Recurring Event Generator: RRULE and ICS | ClockOrbit