GALAXY OF TOOLS

FILES SECTOR

ICS to CSV Converter

Turn an .ics calendar into a CSV or Excel sheet — recurring events expanded, time zones converted correctly.

Drop .ics files here or click to choose Google Calendar, Outlook and Apple Calendar exports · several files at once · stays on your device
Or paste iCalendar text
Repeating events are listed inside this range.

Runs entirely in your browser. Nothing you enter or upload is sent to a server.

Convert an ICS calendar to CSV or Excel

An .ics file is the standard way calendars are exported — from Google Calendar, Outlook, Apple Calendar, meeting invitations and booking systems. The ICS to CSV converter turns it into a spreadsheet with one row per event: title, start and end, all-day flag, time zone, location, description, organiser, attendees, status, categories, link and UID.

Recurring events are where most converters go wrong. This one expands every repeating series — “every Monday and Wednesday”, “the last Friday of the month” — into real dates inside the range you choose, drops deleted dates and shows moved occurrences at their new time. Times are converted properly between time zones, including daylight-saving changes, using the time-zone definitions in the file and your browser’s time-zone database.

The calendar is read entirely in your browser; meeting details are never uploaded.

How to use the ICS to CSV Converter

  1. Export your calendar as .ics (Google Calendar: Settings → Import & export → Export; Outlook for Windows: File → Save Calendar) and drop it on the box.
  2. Pick the CSV layout: All fields, or Google Calendar’s import format.
  3. Choose how to Show times in: as written in each event, in your own time zone, in UTC or in any other zone.
  4. Set the From and To dates — repeating events are listed inside this range.
  5. Check the preview, then press Download CSV or Download Excel.

ICS to CSV Converter features

Real recurrence expansion

RFC 5545 rules — daily, weekly, monthly and yearly with BYDAY, BYMONTHDAY, BYMONTH, BYWEEKNO, BYSETPOS, COUNT, UNTIL and INTERVAL — become individual rows, with EXDATE exclusions, extra RDATE dates and moved single occurrences (RECURRENCE-ID).

Correct time zones

IANA zones such as Asia/Kolkata, Outlook’s Windows names such as “India Standard Time” and VTIMEZONE definitions are all understood, so a 9:00 meeting stays at 9:00 across a daylight-saving change and UTC conversions are exact.

Every event detail

Summary, start, end, all-day, time zone, location, description, organiser, attendees with their reply status, status, categories, URL and UID.

Google Calendar layout

Subject, Start Date, Start Time, End Date, End Time, All Day Event, Description, Location and Private — the columns Google Calendar’s CSV import uses.

Excel ready

UTF-8 CSV with a byte-order mark, separate or combined date and time columns, three date formats and a direct .xlsx download (SheetJS, Apache-2.0).

How recurring events and time zones are handled

Take a stand-up set to repeat every Monday and Wednesday, six times, from 26 October 2026 at 09:00 New York time, with 4 November deleted. The converter lists 26 Oct, 28 Oct, 2 Nov, 9 Nov and 11 Nov. Shown in the event’s own time zone every row says 09:00; shown in UTC the first two say 13:00 and the rest 14:00, because US daylight saving time ended on 1 November.

A series without an end, such as a yearly birthday, is listed only up to the To date, and a safety limit of 20,000 rows per series stops a runaway rule. Floating times — written without any time zone — are shown exactly as written. Events that were cancelled can be left out or kept, and tasks (VTODO) are counted but not exported.

All-day events and end dates

Inside an .ics file an all-day event ends at the start of the following day, so a one-day holiday on 25 December is stored as 25 → 26 December. The CSV shows the end date the way people read it — 25 December — which is also what Google Calendar’s CSV import expects. To build a calendar from a spreadsheet instead, use the CSV to ICS converter; to compare times across cities, try the time zone converter.

Which layout should you use?

LayoutUse it forColumns
All fieldsExcel reports, timesheets, attendance, mail mergeSummary, Start, End, All Day, Time Zone, Location, Description, Organizer, Attendees, Status, Categories, URL, UID, Recurring
Google CalendarMoving events into Google Calendar by CSVSubject, Start Date, Start Time, End Date, End Time, All Day Event, Description, Location, Private

ICS to CSV Converter FAQ

How do I convert an ICS file to Excel?

Drop the .ics file here and press “Download Excel” for an .xlsx file, or “Download CSV” and open that in Excel. Each event becomes one row with its start, end, location and description.

Are recurring events included?

Yes. Every repeating series is expanded into separate rows between the From and To dates, with deleted dates removed and moved occurrences shown at their new time. Untick “Expand recurring events” to get one row per series with its rule instead.

Which time zone are the times in?

By default each event keeps the time zone it was created in, shown in the Time Zone column. Choose “My time zone”, UTC or any other zone to convert every time; daylight saving time is taken into account.

How do I export my Google Calendar to CSV?

In Google Calendar open Settings → Import & export → Export. Google downloads a ZIP with one .ics file per calendar; open it with the ZIP extractor and drop the .ics files here.

Can I convert an Outlook calendar?

Yes. Save the calendar as .ics (File → Save Calendar in Outlook for Windows) and drop it here. Outlook’s Windows time-zone names, such as “India Standard Time”, are recognised.

Is my calendar uploaded?

No. The file is read and converted by your browser on your own device. Only the Excel download loads the free SheetJS library from a public CDN.

Why does an all-day event end on the same day it starts?

Calendar files store the day after an all-day event as its end. The CSV shows the last day of the event instead, which is how people read dates and what Google’s CSV import expects.

You might also need