ICS to CSV Converter
Convert iCalendar (.ics) files from Google Calendar, Outlook, or Apple Calendar to CSV — open in Excel or Google Sheets instantly.
Drop your ICS file here
or click to browse
How to convert ICS to CSV
Export your calendar
Save an .ics file from Google Calendar, Outlook, or Apple Calendar.
Upload the ICS
Drop it in above — every VEVENT block is read and folded lines are reassembled.
Open in Excel
Download the CSV and open it in Excel, Google Sheets, or Numbers.
How to export your calendar to ICS
Google Calendar
- 1Go to calendar.google.com
- 2Click the gear icon > Settings
- 3Click Import & Export > Export
- 4Extract the downloaded ZIP file
Outlook
- 1Open Outlook
- 2File > Open & Export > Import/Export
- 3Export to a file > iCalendar format
- 4Choose your calendar and save
Apple Calendar
- 1Open Calendar on Mac
- 2Select a calendar in the sidebar
- 3File > Export > Export
- 4Save the .ics file
About ICS to CSV conversion
The iCalendar format, standardised as RFC 5545, describes a calendar rather than tabulating one. A file opens with BEGIN:VCALENDAR and closes with END:VCALENDAR, and between those markers sit component blocks — VEVENT for an appointment, VTODO for a task, VTIMEZONE to define what a named zone meant at a given date, VALARM nested inside an event for its reminder. Each line is a property name, optional parameters after a semicolon, then a colon and the value: DTSTART;TZID=America/New_York:20260614T090000 is one property carrying one timestamp and the zone it should be read in.
Two details of that encoding defeat naive attempts to read an ICS file in a spreadsheet. The first is line folding: RFC 5545 caps lines at 75 octets and continues longer values on the next line, marked by a leading space. A meeting description of any length is therefore shattered across several physical lines that must be rejoined before the value means anything. The second is escaping — newlines inside a description are written as a literal backslash-n, and commas are backslash-escaped, both of which have to be undone rather than passed through into a comma-delimited file. This converter reassembles folded lines and unescapes those sequences before writing anything out.
What comes back is one row per event with six columns, which is the shape people actually want calendar data in. Consultants total billable hours by subtracting DTSTART from DTEND and grouping on a client name in the title. Managers pivot a quarter of meetings to see where the week goes. Teams hand a schedule to someone who does not use their calendar system, or push events into a CRM or project tracker that imports CSV and nothing else. In each case the calendar is a source of records, and CSV is the only format every downstream tool agrees to read.
iCalendar properties and the CSV columns
| ICS property | What it holds | CSV column |
|---|---|---|
| SUMMARY | Event title | SUMMARY |
| DTSTART | Start, as YYYYMMDD or YYYYMMDDTHHMMSS | DTSTART, as YYYY-MM-DD HH:MM |
| DTEND | End; exclusive for all-day events | DTEND, as YYYY-MM-DD HH:MM |
| LOCATION | Room, address, or meeting link | LOCATION |
| DESCRIPTION | Event body, folded and escaped | DESCRIPTION, unfolded |
| UID | Globally unique event identifier | UID |
| RRULE | Recurrence pattern | not exported |
| ATTENDEE | One line per invitee | not exported |
| ORGANIZER | Event owner | not exported |
| STATUS / CATEGORIES | Confirmation state, tags | not exported |
Property parameters such as TZID and VALUE=DATE are read off the property name, so a DTSTART carrying either one still lands in the DTSTART column.
Troubleshooting ICS to CSV
A weekly meeting shows up only once. That is how iCalendar stores it. The repetition lives in an RRULE property on a single VEVENT, not in fifty-two copies of the event, so there is one row to export. Occurrences that were individually moved or cancelled are exceptions and do appear separately — which is why a recurring series sometimes yields two or three rows rather than one.
An all-day event ends a day later than it should. RFC 5545 defines the end of an all-day event as exclusive, so a one-day event on the 14th genuinely records DTEND as the 15th. The value in the file is correct; it just means "up to but not including". Duration arithmetic works out right, so only read DTEND in isolation with that in mind.
Times are off by several hours. Timestamps are exported exactly as the file writes them, with no timezone conversion applied. Google exports frequently store times in UTC with a trailing Z, which reads as a five-hour shift on the US east coast and eight on the west. Add the offset in a spreadsheet column rather than assuming the export is wrong.
The DESCRIPTION column is empty for every event. Some exports deliberately omit event bodies. Outlook's export dialog offers availability-only and limited-detail levels that strip descriptions, and calendars shared with limited visibility often expose only the title and times. Re-export with full details selected if the bodies matter.
What can you do with calendar data in CSV?
Time tracking
Calculate total hours spent on meetings, projects, or clients using Excel formulas.
Billing analysis
Filter events by client name and sum durations to generate invoices from calendar data.
Team reporting
Share calendar data with people who don't use the same calendar app.
Database import
Import events into a database, CRM, or project management tool via CSV.
Frequently asked questions
What is an ICS file?
ICS is a file in the iCalendar format defined by RFC 5545. It is plain text organised into components: a VCALENDAR wrapper holding VEVENT blocks for appointments, plus optional VTODO tasks, VTIMEZONE definitions, and VALARM reminders. Every calendar application of consequence reads and writes it, which is why a meeting invitation in your inbox is an .ics attachment.
What columns does the CSV output contain?
Six: SUMMARY (the event title), DTSTART, DTEND, LOCATION, DESCRIPTION, and UID. Timestamps are rewritten from the compact iCalendar form into YYYY-MM-DD HH:MM so spreadsheets can sort and subtract them.
Will a recurring meeting appear once or on every occurrence?
Once. A weekly standup is stored as a single VEVENT carrying an RRULE that describes the repetition rather than as fifty-two separate events, so the CSV has one row for it — the first occurrence. Only occurrences that were individually edited or cancelled exist as their own VEVENT blocks and get their own rows.
How are all-day events handled?
An all-day event is written as a date with no time, so it appears in the CSV at 00:00. Note that iCalendar treats the end date of an all-day event as exclusive: a single-day event on the 14th records DTEND as the 15th. Subtracting the two columns gives the right duration, but reading DTEND on its own can look off by a day.
Do the times get converted to my timezone?
No. Times are exported exactly as written in the file. Calendar apps store timed events either with a TZID parameter naming a zone or as UTC with a trailing Z, and the converter reads the value without shifting it. If your export came out in UTC, apply the offset in your spreadsheet.
How do I export my Google Calendar as ICS?
Open Google Calendar settings via the gear icon, choose Import & Export, and use Export. Google returns a ZIP archive containing one .ics file per calendar you own — extract it before converting, since the ZIP itself is not an ICS file.
How do I export from Outlook?
Use File > Open & Export > Import/Export > Export to a file, and choose iCalendar format. Outlook asks for a date range and a level of detail — pick Full details if you want the DESCRIPTION column populated, since the lower settings omit event bodies.
How do I export from Apple Calendar?
Select a calendar in the sidebar on macOS, then File > Export > Export. Each calendar exports separately, so a schedule spread across Work, Personal, and a shared family calendar produces three files.
Are attendees, organisers, and attachments included?
No. An event can carry many ATTENDEE lines, one per invitee, which does not fit a fixed-column sheet without either repeating rows or generating a variable number of columns. The converter keeps the six single-valued fields that map cleanly onto a spreadsheet.