# RRULE builder and explainer

Build a recurrence rule from a form, or paste one such as FREQ=WEEKLY;INTERVAL=2;BYDAY=TU to read it back. Either way you get the RFC 5545 RRULE, the rule in plain English ("Every 2 weeks on Tue") and the next 10 dates it falls on. It covers daily, weekly and monthly rules with an interval, chosen weekdays, a day of the month, and an end date (UNTIL) or count (COUNT); parts it cannot schedule, such as BYSETPOS or YEARLY, are named in an error instead of being silently ignored.

Use it: https://nowgetitdone.com/tools/rrule-builder

## Two modes

- Build a rule: https://nowgetitdone.com/tools/rrule-builder
- Explain a rule: https://nowgetitdone.com/tools/rrule-builder?mode=explain&rrule=<your rule>

## How to build an RRULE

1. **Choose how often it repeats.** Pick Daily, Weekly or Monthly, and how many of them between repeats: 2 with Weekly is every other week.
2. **Choose the days.** For a weekly rule tick the weekdays; for a monthly rule enter the day of the month.
3. **Choose when it ends.** Never, on a last day (UNTIL), or after a number of times (COUNT).
4. **Copy the RRULE.** Check the plain-English sentence and the next 10 dates, then copy the RRULE line into your calendar file or code.

## Example rules to explain

- `FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR`
- `FREQ=WEEKLY;INTERVAL=2;BYDAY=TU`
- `FREQ=MONTHLY;BYMONTHDAY=1`
- `FREQ=DAILY;INTERVAL=3;COUNT=10`
- `DTSTART;VALUE=DATE:20270101 RRULE:FREQ=MONTHLY;BYMONTHDAY=31;UNTIL=20271231`

## Cron vs RRULE

| | cron | RRULE |
| --- | --- | --- |
| Written for | A scheduler running jobs on a server clock | Calendars and task managers listing the days a series falls on |
| Starts from | No start date: it matches the clock from now on | DTSTART, the first day the series may fall on |
| Every other week | Not expressible in the five fields | FREQ=WEEKLY;INTERVAL=2 |
| Stops | Never, until the line is removed | On a date (UNTIL) or after a number of times (COUNT) |
| Every weekday | 0 9 * * 1-5 (09:00 Monday to Friday) | FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR |
| Standard | POSIX crontab | RFC 5545 (iCalendar) |

## API

No key: `GET https://nowgetitdone.com/api/tools/rrule-explainer` returns JSON, or Markdown with `Accept: text/markdown`. Reference: https://nowgetitdone.com/docs/free-tools-api

## Questions

### What is an RRULE?

A recurrence rule from RFC 5545, the iCalendar standard. FREQ=WEEKLY;BYDAY=MO,WE means "every week on Monday and Wednesday". Calendar apps, CalDAV servers and task managers use it to store a repeating schedule as one line of text.

### Which rules can it build and explain?

DAILY, WEEKLY and MONTHLY rules with INTERVAL, plain BYDAY weekdays, one BYMONTHDAY, UNTIL or COUNT, and WKST, with an optional DTSTART line when you paste one. Anything else (YEARLY, HOURLY, BYSETPOS, BYMONTH, "1MO"-style positions, EXDATE) is refused by name, because GetItDone tasks cannot store those and you should never get dates for a rule it only half read.

### Why might the dates differ from my calendar app?

Three places where readings differ. GetItDone schedules whole days, so a time in DTSTART or UNTIL is dropped. A monthly rule on the 29th to 31st moves to the last day of a short month, where strict RFC 5545 skips the month. And weeks are counted from Sunday, which matters only for week-skipping rules that list Sunday beside another day: for those the builder adds WKST=SU so every RFC 5545 reader agrees with the dates shown.

### What is the difference between cron and RRULE?

Cron schedules a job at clock times on matching minutes, hours, days of the month, months and weekdays, with no start date, no end and no way to say "every other week". An RRULE describes a calendar series from a start date: it can repeat every N days, weeks or months, and stop on a date (UNTIL) or after a number of times (COUNT).

### How do I use the RRULE in a calendar file?

Put it on an RRULE: line under the event’s DTSTART, for example DTSTART;VALUE=DATE:20261102 followed by RRULE:FREQ=WEEKLY;BYDAY=MO. The DTSTART is the first day the series may fall on.

### Is there an API for the RRULE explainer?

Yes. GET /api/tools/rrule-explainer?rrule=…&tz=… needs no key and returns JSON (or Markdown with Accept: text/markdown), rate limited per IP address, with RFC 9457 problem+json errors.

The same parser runs in the GetItDone task box, where your team and its AI agents share one board of tasks.
