ICS to CSV Converter
Drop an ICS export from Google Calendar, Outlook, or Apple Calendar — get a CSV ready to open in Sheets or Excel.
Drop your ICS file here
Converts to .csv — stays on your device
Why convert ICS to CSV?
- Analyzing your past year of meetings by exporting a Google Calendar ICS and crunching it in Google Sheets — average meeting length, recurring patterns, time-of-day distribution.
- Archiving an Outlook calendar as a flat CSV for long-term storage or audit purposes, where CSV is easier to grep and diff than ICS.
- Migrating event history from Apple Calendar into a data analysis workflow (Python, R, Observable) where CSV is the friendly starting point.
- Preparing a bill of meetings for an hourly-client invoicing spreadsheet — each ICS event becomes one row you can tag with a rate.
- Extracting a class or training schedule from an LMS calendar export into a master spreadsheet for a teacher or training coordinator.
- Building a custom timesheet from a Google Workspace calendar export — CSV → Pivot table → hours worked per project per week.
How our converter works
Your ICS file is parsed in the browser — every VEVENT block becomes a CSV row with Subject, Start Date, Start Time, End Date, End Time, Location, and Description columns (Google Calendar's import schema). All-day events get empty time fields so downstream tools can detect them. Recurring events appear as a single row for their first occurrence — recurrence rules don't round-trip through CSV. Runs entirely in your browser, which matters because calendar exports reveal client names, meeting patterns, and daily routines.
ICS vs CSV — what's the difference?
| Feature | ICS | CSV |
|---|---|---|
| Structure | Hierarchical VCALENDAR → VEVENT blocks | Flat rows, one per event |
| Recurrence | Rich — RRULE, EXDATE, COUNT, UNTIL | Dropped — single row per event |
| Attendees | Full ATTENDEE list with roles | Not represented |
| Reminders | VALARM components | Not represented |
| Best for | Calendar app imports, subscriptions | Spreadsheet analysis, bulk operations |
Frequently asked questions
Do recurring meetings get expanded into individual events?
No. A weekly standup appears as a single row for its first occurrence — the recurrence rule (RRULE) doesn't transfer to CSV. If you need every occurrence as its own row, expand the recurrence in your calendar app first and re-export the ICS.
What CSV column layout does the output use?
Subject, Start Date, Start Time, End Date, End Time, Location, Description. That matches what Google Calendar and Outlook expect for import, so round-tripping through a spreadsheet and re-importing works cleanly.
How are dates and times formatted?
Dates as YYYY-MM-DD (ISO 8601), times as HH:MM:SS (24-hour). All-day events have empty time fields. This is the format Google Sheets and Excel both parse correctly.
Do attendees, reminders, and attachments come through?
No. CSV doesn't model those — it's deliberately flat. For full fidelity, keep the ICS as your master and use the CSV only for analysis or bulk editing.
How do I export an ICS from Google Calendar?
calendar.google.com → Settings → Import & export → Export. You get a zip with one .ics per calendar. Unzip and drop any of those files into this converter.
Are my calendars uploaded?
No. The conversion runs entirely in your browser. Calendar exports reveal meetings, locations, and daily patterns — they never leave your device.
About the ICS format
ICS (iCalendar, RFC 5545) is the universal calendar-exchange format — the file type Google Calendar, Outlook, Apple Calendar, and every other calendar app exports and imports. Its structure is rich: VCALENDAR wraps VEVENT blocks, each with summary, start, end, recurrence rules, attendees, reminders, and arbitrary custom properties. CSV is the opposite — a flat row-and-column format that every spreadsheet and analysis tool accepts. Converting ICS to CSV collapses the hierarchical structure for analytical convenience, losing recurrence and attendee data in exchange for the ability to sort, filter, pivot, and compute across events the way you would with any other tabular dataset.