AnyFormat

00 ICS → JSON

ICS to JSON

Structured events, ready for a script.

01ICS in
02JSON out
  • No upload The conversion runs in this tab. Your file never travels — not to us, and not to the advertising.
  • No sign-up, no email, no daily cap There is no account system to sign up to.
  • No size limit we invented Only your device's memory — about ~2 GB on a desktop browser, ~400 MB on a phone.
  • Turn your Wi-Fi off and convert anyway The conversion needs nothing but this page. Ads will not load without a connection; your file will still convert. That is the whole claim, and it takes five seconds to check.

Parses a calendar into JSON — one object per event, with attendees as an array and dates as ISO 8601 strings. For anything that needs to read a calendar programmatically without pulling in an iCalendar library.

The shape you get

Each event is an object with uid, summary, description, location, start, end, allDay, tz, organizer, attendees, categories, status, rrule, url, created and lastModified. Every key is always present, so consuming code never has to check.

Dates are ISO 8601. A timed event gives 2026-08-17T09:00:00 with the zone in tz; a UTC event ends in Z; an all-day event is a bare 2026-09-01 with allDay: true.

Organiser and attendees keep the display name alongside the address — Ada Lovelace <ada@example.com> — because dropping the name loses information the file had.

The line-folding problem this solves

iCalendar wraps any line longer than 75 octets and continues it with a leading space. A naive line-by-line parse therefore truncates every long description and mangles every long summary — and because it only bites on long values, it passes casual testing and fails on real calendars.

Folding is undone before anything else happens, along with the escaping (\n, \,, \;) that the format layers on top.

Recurrence is passed through, not expanded

The rrule field holds the rule exactly as written — FREQ=WEEKLY;BYDAY=MO,WE. Expanding it correctly means handling UNTIL, COUNT, BYSETPOS, EXDATE exceptions and moved instances, which is a library rather than a conversion. Handing you the rule intact lets you use one if you need it.

Other names for this

Also searched as “icalendar to json”, “parse ics file”.

Questions

Are recurring events expanded into occurrences?
No. The repeat rule is passed through in the rrule field so you can expand it with a library that handles exceptions properly.
How are all-day events represented?
As a bare date with allDay: true. That is genuinely different from an event starting at midnight, and conflating the two causes off-by-one-day bugs.
Are to-dos included?
No — only VEVENT. If the file contains VTODO or VJOURNAL entries you are told how many were skipped.
Is my file uploaded?
No. Everything runs in this tab. That matters more here than almost anywhere else on the site — a calendar is your movements, an address book is other people’s personal data, and a GPS track is where you live and where you run. None of it is sent anywhere.