ICS Calendar Recurrence Rule Expander

Expand RRULE-based VEVENT recurrence into concrete occurrences and export them as JSON or a flattened ICS calendar

Paste a full .ics payload or a single VEVENT block, then expand its RRULE into concrete event instances. The tool understands common RRULE parts including FREQ, INTERVAL, COUNT, UNTIL, BYDAY, and BYMONTHDAY.

How to fill the form:

  • ICS or VEVENT Input: paste the calendar text directly
  • ICS File: upload a .ics file instead of pasting
  • Timezone Override: optionally attach a timezone label to the exported calendar header
  • Holiday Dates: provide YYYY-MM-DD dates, one per line, to exclude occurrences on those days
  • Max Occurrences: safety cap for expansion when the RRULE has no COUNT
  • Output Format: return JSON, ICS, or both in the result payload

Current scope:

  • Expands the first VEVENT found in the input
  • Supports DAILY, WEEKLY, MONTHLY, and YEARLY frequencies
  • Uses UTC-style normalization for generated output

Example Results

1 examples

Expand a weekly team calendar rule

Turn a VEVENT with BYDAY-based weekly recurrence into explicit meeting instances and optionally skip public holidays.

{
  "result": {
    "occurrences": [
      {
        "start": "2026-04-01T09:00:00.000Z"
      }
    ]
  }
}
View input parameters
{ "icsInput": "BEGIN:VEVENT\nDTSTART:20260401T090000Z\nDTEND:20260401T100000Z\nRRULE:FREQ=WEEKLY;BYDAY=MO,WE;COUNT=6\nSUMMARY:Team sync\nUID:team-sync-1\nEND:VEVENT", "timezoneOverride": "Asia/Shanghai", "holidayDates": "2026-04-08", "maxOccurrences": 20, "outputFormat": "both" }

Click to upload file or drag and drop file here

Maximum file size: 5MB Supported formats: text/calendar, text/plain, application/octet-stream, .ics

Key Facts

Category
Math, Date & Finance
Input Types
textarea, file, text, number, select
Output Type
json
Sample Coverage
4
API Ready
Yes

Overview

The ICS Calendar Recurrence Rule Expander is a practical utility designed to convert RRULE-based VEVENT recurrences into concrete, individual event instances. Whether you need to flatten a complex calendar schedule into a simple JSON array or generate a static ICS file without recurrence rules, this tool processes your input instantly. It supports daily, weekly, monthly, and yearly frequencies while allowing you to exclude specific holiday dates, apply timezone overrides, and set safety caps for infinite recurring events.

When to Use

  • When you need to extract a flat list of explicit dates and times from a complex iCalendar recurrence rule (RRULE).
  • When migrating calendar data to a system, database, or legacy CRM that does not natively support parsing RRULE logic.
  • When you want to generate a static calendar file that automatically skips specific holidays or blackout dates.

How It Works

  • Paste your raw ICS text, a single VEVENT block, or upload an .ics file containing the recurrence rule.
  • Optionally define a timezone override, set a maximum occurrence limit, and list specific holiday dates (YYYY-MM-DD) to exclude.
  • Select your preferred output format (JSON, ICS, or both) and run the tool.
  • The tool parses the RRULE, calculates the concrete event instances, and outputs the flattened schedule.

Use Cases

Flattening a recurring weekly team meeting into a JSON array for a custom dashboard display.
Converting a yearly subscription renewal schedule into explicit billing dates for a database import.
Generating a static ICS file for a school semester schedule that automatically excludes public holidays.

Examples

1. Extracting weekly syncs excluding holidays

Project Manager
Background
A project manager needs a list of dates for a weekly Monday and Wednesday team sync, but wants to skip an upcoming public holiday.
Problem
Manually calculating the dates and removing the holiday is tedious and error-prone.
How to Use
Paste the VEVENT block with FREQ=WEEKLY;BYDAY=MO,WE, enter the holiday date in the Holiday Dates field, and select JSON output.
Example Config
Holiday Dates: 2026-04-08
Max Occurrences: 20
Output Format: JSON
Outcome
A clean JSON array containing the exact timestamps for the next 20 meetings, with the April 8th holiday successfully skipped.

2. Flattening a recurring event for legacy systems

Software Developer
Background
A developer is importing calendar data into a legacy CRM that cannot parse iCalendar RRULE strings.
Problem
The CRM requires explicit start and end times for every single instance of a recurring event.
How to Use
Upload the .ics file, set the Timezone Override if needed, and choose ICS as the output format.
Example Config
Timezone Override: America/New_York
Output Format: ICS
Outcome
A new, flattened .ics file where the single recurring VEVENT is replaced by multiple individual VEVENT blocks, ready for import.

Try with Samples

json, text, file

Related Hubs

FAQ

Which recurrence frequencies are supported?

The tool supports DAILY, WEEKLY, MONTHLY, and YEARLY frequencies, including common rule parts like INTERVAL, COUNT, UNTIL, BYDAY, and BYMONTHDAY.

Can I process multiple events at once?

Currently, the tool parses and expands only the first VEVENT block found in your input.

How do the holiday exclusions work?

By entering dates in YYYY-MM-DD format (one per line), the tool will automatically skip generating an occurrence if it falls on any of those specified dates.

What happens if my recurrence rule goes on forever?

If your RRULE lacks a COUNT or UNTIL parameter, the tool uses the 'Max Occurrences' setting (defaulting to 100) as a safety cap to prevent infinite loops.

What output formats can I choose?

You can export the expanded occurrences as a structured JSON array, a flattened static ICS calendar file, or both simultaneously.

API Documentation

Request Endpoint

POST /en/api/tools/ics-calendar-recurrence-rule-expander

Request Parameters

Parameter Name Type Required Description
icsInput textarea No -
icsFile file (Upload required) No -
timezoneOverride text No -
holidayDates textarea No -
maxOccurrences number No -
outputFormat select No -

File type parameters need to be uploaded first via POST /upload/ics-calendar-recurrence-rule-expander to get filePath, then pass filePath to the corresponding file field.

Response Format

{
  "key": {...},
  "metadata": {
    "key": "value"
  },
  "error": "Error message (optional)",
  "message": "Notification message (optional)"
}
JSON Data: JSON Data

AI MCP Documentation

Add this tool to your MCP server configuration:

{
  "mcpServers": {
    "elysiatools-ics-calendar-recurrence-rule-expander": {
      "name": "ics-calendar-recurrence-rule-expander",
      "description": "Expand RRULE-based VEVENT recurrence into concrete occurrences and export them as JSON or a flattened ICS calendar",
      "baseUrl": "https://elysiatools.com/mcp/sse?toolId=ics-calendar-recurrence-rule-expander",
      "command": "",
      "args": [],
      "env": {},
      "isActive": true,
      "type": "sse"
    }
  }
}

You can chain multiple tools, e.g.: `https://elysiatools.com/mcp/sse?toolId=png-to-webp,jpg-to-webp,gif-to-webp`, max 20 tools.

Supports URL file links or Base64 encoding for file parameters.

If you encounter any issues, please contact us at [email protected]