ICS to CSV Converter

Turn an .ics calendar export into a spreadsheet, or a spreadsheet of events into an .ics file you can import. Runs in your browser: your calendar is never uploaded.

Why this runs in your browser

A calendar export is a record of where you will be and when, who you are meeting, and often their email addresses. It should not be uploaded to a converter you know nothing about. This page converts the file inside your browser and never sends it anywhere; it works offline once it has loaded.

How the conversion works

An .ics file — the iCalendar format that Google Calendar, Apple Calendar and Outlook all export — holds one block per event, from BEGIN:VEVENT to END:VEVENT. Each event becomes one row of the CSV: its title, start and end, location, description, repeat rule, status, categories and link, plus a few columns that only some events need.

Long lines in the file are folded across several lines, and commas, semicolons and line breaks inside a description are escaped with backslashes; both are undone so that the CSV holds the text as it reads in your calendar. Going the other way, they are put back.

Three kinds of time

iCalendar has three different ways of saying when something happens, and they mean different things, so the CSV keeps them apart:

  • A time in a named zone, such as 09:30 in Europe/London. The start column holds 2026-10-05T09:30:00 and the timezone column holds Europe/London. Most events from a real calendar look like this.
  • A time in UTC, written with a trailing Z: 2026-10-20T15:00:00Z, and no time zone name.
  • A floating time, with neither: 2026-11-01T07:00:00. That means 07:00 wherever you happen to be, which is the right meaning for something like a morning run.

All-day events are written as plain dates, such as 2026-12-24, with all_day set to yes. Converting back writes each kind out again the way it came in.

Repeating events

A repeating event is one row, not one row per occurrence: its repeat rule is kept as written in the rrule column — for example FREQ=WEEKLY;BYDAY=MO,WE,FR — and the dates it skips are in exdate. A single occurrence that was moved or changed is its own row, sharing the event's uid and naming the occurrence it replaces in recurrence_id. Nothing about the repetition is lost, but a spreadsheet will not expand it into separate dates; the page says so whenever a file has a repeating event.

What else is kept

Attendees, the organizer, reminders, and everything else with no column of its own go into an extra column word for word, and come back out when the CSV is converted to .ics again. The time zone definitions an .ics file carries at the top are not copied: the events keep their zone names, and calendar apps know what those mean. To-dos and other entries that are not events are skipped, and the page counts them.

A CSV from a spreadsheet converts to .ics too. It needs a start column; dates may be written with a space instead of the T, and a row with only a date is an all-day event. A row with no uid is given one. The result imports into Google Calendar, Apple Calendar and Outlook.

Is my calendar uploaded?

No. The file is converted inside your browser and never leaves your device.

Are recurring events kept?

Yes. Each repeating event is one row with its repeat rule in the rrule column and skipped dates in exdate. The page tells you when a file has recurring events, because a spreadsheet will not expand them into separate dates.

What happens to time zones?

Each event keeps its zone name in the timezone column, with its start and end as the local wall-clock time. UTC times keep a trailing Z, and floating times have neither. The time zone definitions at the top of the file are not copied, because calendar apps resolve zone names themselves.

Are attendees and reminders kept?

Yes, in the extra column, along with anything else that has no column of its own. They come back when you convert the CSV to .ics.

Can I make an .ics file from my own spreadsheet?

Yes. Use the column names this page writes — at least summary and start — and convert from CSV to ICS. A date on its own makes an all-day event, and an event without a uid is given one.

Updated October 1, 2026

This site is vibe coded. The tools here were built largely by AI, so treat what they tell you as a starting point rather than an answer — double-check anything that matters before you rely on it.

Crunchify.net — 139 free tools, no ads, no tracking.