Skip to main content

iCalendar (ICS) to JSON Converter

Parse .ics calendar files into structured JSON — typed dates, RRULE recurrence rules, organizer/attendee addresses, and an optional recurrence-preview expansion.

Input

Drop a file or browse
One file · text
Or

Options

Output

JSON Output
 
Was this helpful?

Guides

What does this tool do?

It parses a .ics calendar file — the standard format used by Google Calendar, Outlook, Apple Calendar, and most scheduling tools — into structured JSON. Useful for extracting event data from a calendar export without writing your own RFC 5545 parser.

How this tool works

  1. Paste ICS content into the text box, or upload a .ics file.
  2. Toggle the parsing options:
    • Pretty-print — indent the JSON output, or minify it.
    • Flat events array — output just the VEVENT entries as a flat array, skipping the full VCALENDAR component tree.
    • Parse dates — convert DTSTART/DTEND/DTSTAMP and similar properties into a structured { iso, isDate, isUtc, tzid } object instead of the raw ICS date string.
    • Include raw values — keep the original unparsed property text alongside the parsed value.
    • Expand RRULE — generate a preview list of upcoming occurrence dates for recurring events, capped at Max occurrences to preview.

What gets parsed

Long folded lines are unfolded per the ICS line-folding rule. Each property's parameters and value are parsed according to the ICS grammar (including quoted parameter values). RRULE becomes a structured recurrence-rule object; ORGANIZER/ATTENDEE become { calAddress, email }; GEO becomes { lat, lon }; TRIGGER (alarm offsets) becomes a duration string plus its offset in seconds; nested components like VALARM and VTIMEZONE are preserved in a components array.

About the RRULE preview

The recurrence expander supports DAILY/WEEKLY/MONTHLY/YEARLY frequencies with INTERVAL, COUNT, UNTIL, and BYDAY — enough to preview the vast majority of real-world recurring events. It's a preview, not a full RFC 5545 recurrence engine: edge cases like BYMONTHDAY or BYSETPOS aren't expanded. The cap on occurrences prevents open-ended rules (no COUNT or UNTIL) from generating an unbounded list.

Common uses

  • Extracting event data from an exported calendar for import into another system
  • Debugging a malformed or unexpected .ics file
  • Building a preview of upcoming occurrences for a recurring event without a full calendar library
  • Converting calendar data into JSON for use in a script or API

Privacy

This tool runs entirely in your browser. Your calendar data is never uploaded to a server.

icalendaricscalendarjsonconverterrrule

More ways to use this tool

REST API

curl -X POST https://api.iotools.cloud/v1/tool/icalendar-ics-to-json-converter \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "icsSource": "BEGIN:VCALENDAR\nVERSION:2.0\nPRODID:-//iotools.cl…",
    "prettyPrint": "true",
    "flatEvents": "true",
    "parseDates": "true",
    "includeRaw": "",
    "expandRecurrence": "",
    "recurrenceLimit": "10"
  }'

Swap in your own key from your account. The tool's fields are the body — no wrapper.

Ask an AI agent

Use the IOTools `icalendar-ics-to-json-converter` tool (iCalendar (ICS) to JSON Converter) on this input:

YOUR_INPUT_HERE

Paste this at any agent connected to the IOTools MCP server, then add your input.

Embed widget

<iframe
  src="https://iotools.cloud/embed/icalendar-ics-to-json-converter/"
  width="100%" height="520" frameborder="0" scrolling="no" loading="lazy"
  title="iCalendar (ICS) to JSON Converter — iotools.cloud"
  sandbox="allow-scripts allow-forms allow-same-origin allow-downloads allow-popups allow-popups-to-escape-sandbox"
  allow="clipboard-write"
  style="width:100%;border:1px solid #e5e7eb;border-radius:12px;overflow:hidden"></iframe>
<script src="https://iotools.cloud/embed.js" async></script>

Drop this into your own page — free, no key required, just a link back.

Cost per callFrom 5 credits

Also available with

Love the tools? Lose the ads.

One payment clears every ad from your account, for good. No subscription, no tracking.