Skip to content

Convert

ICS to CSV

ICS to CSV

Beta

Turn a Google Calendar, Apple Calendar or Outlook .ics export into a CSV with one row per event. Times stay exactly as the file states them, recurrence rules are kept as text, and nothing is uploaded.

Use via API
  • Free, no sign-up
  • REST + MCP
  • Updated
  • Reviewed by Olgun Ozoktas

Adds a UTF-8 byte order mark to the download so Excel shows accented characters correctly. Leave it off for Google Sheets and scripts.

ICS Input
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
CSV Output

One row per event will appear here..

Why Use Our ICS to CSV Converter?

A calendar knows everything about your time and shows almost none of it in a form you can add up. Hours per client for an invoice, meetings per month for a report, every event that mentions one project: each of these is a filter on a table, and a calendar app has no table. The .ics export does. It is a plain text list of events, and this page turns that list into one row per event, so the questions become a spreadsheet filter. The whole conversion runs in your browser. A calendar export is a record of who you met and when, which is exactly the kind of file that should not travel to a server for a format change.

An iCalendar file is a list of components, and each VEVENT is one event with a start, an optional end, a summary, and a handful of optional properties. The format folds long lines at 75 characters, escapes commas and newlines with backslashes, and states each time either as a floating value, in UTC with a trailing Z, or in a named zone through a TZID parameter. This converter reads all of that: it unfolds the lines, unescapes the text, and reads the DTSTART, DTEND, DURATION, SUMMARY, LOCATION, DESCRIPTION, ORGANIZER, STATUS, CATEGORIES, RRULE and UID properties of every event.

The output is one CSV row per event, twelve columns in the Spreadsheet layout: summary, start, end, all_day, timezone, location, description, organizer, status, categories, rrule and uid. Dates are ISO, times are 24-hour, and the timezone column names the zone each time was stated in. Rows are sorted by start unless you turn sorting off. The Google / Outlook import layout writes the nine-column header those calendars accept on import, with US dates and 12-hour times.

Two honesty rules shape the output. No time is converted between zones, because a conversion needs the zone rules of the reader's calendar and a guess would be wrong silently. And no recurrence rule is expanded, because a rule with no end has no last occurrence, and a bounded expansion would be a different tool. What is skipped is counted: to-dos, journal entries and events with no readable start are reported under the output rather than dropped in silence. Everything runs in the browser; the calendar file is never uploaded.

How it compares

Desktop calendar apps can export a CSV of sorts, but each one picks its own columns and date format, and the export often covers one calendar view rather than the whole file. Online converters that upload the .ics hand a full record of your meetings to a server for a format change. This page reads the standard format with its escaping and folding rules, writes a stable set of columns, and keeps the file in the tab.

ICS Conversion Tips

  • Times are written exactly as the file states them. The timezone column carries the zone each time was stated in, so a meeting at 09:30 Europe/Istanbul stays 09:30 and says so. Nothing is converted to your local zone.
  • A recurring event is one row. Its rule, such as FREQ=WEEKLY;BYDAY=TU, is in the rrule column. The tool does not expand it into every future occurrence, so a weekly meeting does not become fifty-two rows.
  • All-day events use dates only, and the end date is the last day of the event, which is what a spreadsheet reader expects. The .ics format stores the day after; the tool corrects for that.
  • An event with a DURATION instead of an end time gets its end computed. An event with neither gets a zero-length end so the start is still on the row.
  • The Google / Outlook import layout writes US dates and 12-hour times because that is what those importers read. Use the Spreadsheet layout for anything else.

Frequently Asked Questions

How do I export an .ics file from Google Calendar, Apple Calendar or Outlook?

Google Calendar: open Settings, choose Import & export, and click Export; you get a zip with one .ics per calendar. Apple Calendar: select the calendar and choose File > Export > Export. Outlook desktop: File > Save Calendar, and choose the date range and detail level in the More Options dialog. Outlook on the web: Settings > Calendar > Shared calendars > Publish a calendar gives an ICS link you can download.

Are the times converted to my local time zone?

No. Each time is written exactly as the file states it, and the timezone column names the zone it was stated in: a TZID such as Europe/Istanbul, UTC for times that end in Z, or empty for floating times. Converting would need the zone rules of the reader's calendar, and a silent guess is worse than a labelled value you can convert in the spreadsheet if you need to.

What happens to recurring events?

A recurring event is one row, and its rule is written as text in the rrule column, for example FREQ=WEEKLY;BYDAY=TU;UNTIL=20261231. The tool does not expand a rule into every occurrence. A rule without an end has no last occurrence, so any expansion would need a cap, and a capped expansion is a different tool with a different honesty story. Exceptions to a rule that the calendar stored as separate modified events appear as their own rows.

Why does an all-day event end one day earlier than in the file?

The iCalendar format stores the end of an all-day event as the day after it, so a two-day offsite on the 5th and 6th is stored with an end of the 7th. A spreadsheet reader expects the last day, so the tool writes the 6th. If you convert the CSV back to an .ics with the CSV to ICS tool, the exclusive end is restored.

Which columns does the CSV have?

The Spreadsheet layout writes summary, start, end, all_day, timezone, location, description, organizer, status, categories, rrule and uid, in that order, with ISO dates and 24-hour times. The Google / Outlook import layout writes Subject, Start Date, Start Time, End Date, End Time, All Day Event, Description, Location and Private, with MM/DD/YYYY dates and 12-hour times, which is the header those calendars accept when you import a CSV.

Can I open the CSV in Excel, Google Sheets or Numbers?

Yes. Google Sheets and Numbers read the UTF-8 file as it is. Excel on Windows sometimes shows accented characters wrongly in a plain UTF-8 CSV; turn on the Excel BOM option before downloading and Excel reads it correctly. If your Excel expects semicolons, choose the semicolon separator.

Is my calendar uploaded anywhere?

No. The file is parsed and converted in your browser, and no request carries the calendar text. You can confirm that in the browser's network panel while converting. A calendar export is a record of your meetings, and it stays on your machine.

What does the skipped count mean?

The file can hold components that are not events: VTODO to-do items, VJOURNAL notes and VFREEBUSY blocks. Those are counted as skipped and named in the notes. An event with no readable DTSTART is also skipped and named, because a row without a start would be unusable. Alarms nested inside an event are metadata and are simply not written.

Can I convert several .ics files at once?

One file at a time on this page, so the preview always shows exactly what you are about to download. Google Calendar's export zip holds one .ics per calendar; convert each and paste the rows together in the spreadsheet. For a batch, the same converter is on the FindUtils API as the ics_to_csv tool.

How do I turn the CSV back into a calendar file?

Use the CSV to ICS tool. It reads the same columns this page writes, either layout, and produces an .ics you can import into Google Calendar, Apple Calendar or Outlook. All-day events and locations survive the round trip; times are written back as stated, with the zone stamped on them if you provide one.

I have several .ics exports. Do I convert each one, or merge them first?

Either works. To keep the calendars apart, convert each file here and paste the rows together in the spreadsheet. To get one table from one file, combine the exports first with the Merge ICS tool, then convert the merged file here. If you want the events as objects for a script instead of rows for a sheet, the ICS to JSON tool reads the same fields.

Rate This Tool

0/1000

Get Weekly Tools

Suggest a Tool