---
url: https://findutils.com/guides/ics-to-csv
title: "Convert an ICS Calendar Export to CSV: One Row per Event"
description: "Convert ICS calendar exports to CSV. Check event rows, original time zones, recurring events, all-day end dates, and spreadsheet import settings."
category: converters
content_type: guide
guide_type: subtopic
cluster: calendar
locale: en
read_time: 8
status: published
author: "olgunozoktas"
published_at: 2026-09-03T18:00:00Z
excerpt: "Export the calendar, drop the .ics, get a spreadsheet with one row per event. Read how the columns are built, why times are never converted, and what the rrule column means."
tag_ids: ["calendar", "ics", "csv", "data-conversion", "productivity"]
tags: ["Calendar", "ICS", "CSV", "Data Conversion", "Productivity"]
primary_keyword: "ics to csv"
secondary_keywords: ["ical to csv", "convert ics to csv", "google calendar export to csv", "ics to excel", "calendar to spreadsheet", "outlook ics to csv"]
tool_tag: "ics-to-csv"
related_tool: "ics-to-csv"
related_tools: ["ics-to-csv", "csv-to-ics", "csv-viewer", "csv-to-excel"]
og_image: "/images/content/guides/ics-to-csv-cover-20260908.webp"
image_alt: "Calendar appointments become separate rows in a structured table."
updated_at: "2026-09-08T09:18:14Z"
---

Convert an ICS file to CSV when you need calendar events as rows: hours per client, meetings per month, every event that mentions one project. FindUtils [ICS to CSV](/convert/ics-to-csv/) reads the iCalendar export from Google Calendar, Apple Calendar or Outlook in your browser and writes one row per event. The tool does not upload or store the calendar.

This guide explains how to get the export, which columns the CSV has, how times and zones are written, what happens to recurring and all-day events, and how to open the result in Excel, Google Sheets or Numbers.

## Why Convert ICS to CSV?

A calendar app answers "what is on Tuesday". A spreadsheet answers "how many hours did I spend with this client last quarter". The .ics export is the bridge: it is a plain text list of every event, with a start, an end, a title, a location and a description. Turned into rows, that list is a table you can filter, sort and sum.

- **Billing:** filter by client name in the title and sum the duration.
- **Reporting:** count events per week, per team or per room.
- **Migration:** move events between services through a CSV you can correct first.
- **Archiving:** keep a readable copy of a calendar that is about to close.

The conversion runs in the browser. A calendar export is a record of who you met and when, and it stays on your machine.

## How to Convert ICS to CSV Online

Export the calendar, load the file, choose the columns, download.

### Step 1: Export the Calendar

- **Google Calendar:** open Settings, choose Import & export, and click Export. You get a zip with one .ics per calendar.
- **Apple Calendar:** select the calendar in the sidebar and choose File > Export > Export.
- **Outlook desktop:** File > Save Calendar. Set the date range and detail level under More Options.
- **Outlook on the web:** Settings > Calendar > Shared calendars > Publish a calendar, then download the ICS link.

### Step 2: Load the File

Open FindUtils [ICS to CSV](/convert/ics-to-csv/). Upload the .ics file or paste its text. The conversion runs as soon as the text arrives, and a preview table shows the first twenty rows.

### Step 3: Choose the Columns

The **Spreadsheet** layout is the default. It writes twelve columns with ISO dates and 24-hour times. The **Google / Outlook import** layout writes the nine-column header those calendars accept when you import a CSV, with US dates and 12-hour times. Use it when the rows are going back into a calendar.

### Step 4: Check the Counts

Under the output the tool reports how many events it wrote and how many components it skipped. To-dos, journal entries and events with no readable start are named in the notes.

### Step 5: Download

Download the CSV or copy it. If the file will open in Excel on Windows, turn on **Excel BOM** first so accented characters show correctly. Google Sheets and Numbers read the plain file.

## The Columns

The Spreadsheet layout writes these columns, in this order.

| Column | Content |
|---|---|
| `summary` | The event title |
| `start` | `YYYY-MM-DD HH:MM`, or `YYYY-MM-DD` for an all-day event |
| `end` | The end, in the same form; the last day for an all-day event |
| `all_day` | `true` or `false` |
| `timezone` | The zone the times were stated in: a name such as `Europe/Istanbul`, `UTC`, or empty |
| `location` | The location text |
| `description` | The description, with line breaks kept |
| `organizer` | `Name <email>` when both are present |
| `status` | `CONFIRMED`, `TENTATIVE` or `CANCELLED` |
| `categories` | The categories, comma separated |
| `rrule` | The recurrence rule as text, or empty |
| `uid` | The event's unique id |

The Google / Outlook import layout writes `Subject, Start Date, Start Time, End Date, End Time, All Day Event, Description, Location, Private`.

## Times Are Written as Stated

An .ics file states each time in one of three ways: floating, with no zone; in UTC, with a trailing `Z`; or in a named zone, through a `TZID` parameter. The tool writes the time exactly as stated and puts the zone in the `timezone` column. A meeting at `09:30` in `Europe/Istanbul` stays `09:30` and says so.

No time is converted to your local zone. A conversion needs the zone rules of the reader's calendar, and a silent guess would be wrong without any sign of it. If you need every time in one zone, convert in the spreadsheet with the `timezone` column as the input.

## Recurring Events Are One Row

A weekly meeting is one event with a rule, such as `FREQ=WEEKLY;BYDAY=TU`. The tool writes that event as one row and puts the rule in the `rrule` column. It does not expand the rule into every occurrence.

A rule with no end has no last occurrence. Any expansion would need a cap, and a capped list is a different tool with a different honesty story. If the calendar stored a modified occurrence as a separate event, that occurrence appears as its own row.

## All-Day Events End on the Last Day

The iCalendar format stores the end of an all-day event as the day after it. 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. The [CSV to ICS](/convert/csv-to-ics/) tool restores the exclusive end when you convert back.

## Practical Examples

### Example 1: Hours per Client

Export the work calendar, convert it, and open the CSV in Sheets. Filter `summary` by the client name, subtract `start` from `end` in a new column, and sum it.

### Example 2: Meetings per Month

Convert the calendar and add a column with the month of `start`. A pivot table on that column gives the count per month.

### Example 3: Back into Another Calendar

Convert with the Google / Outlook import layout, edit the rows, and import the CSV into Google Calendar. For Apple Calendar or Outlook, run the edited CSV through [CSV to ICS](/convert/csv-to-ics/) first.

### Example 4: A Calendar with To-Dos

The export from a task-aware calendar holds `VTODO` items. They are skipped and counted; the notes say how many. Only events become rows.

## Common Mistakes

### Mistake 1: Expecting Local Times

The `timezone` column names the zone of each row. Read it before you compare times from two calendars.

### Mistake 2: Counting a Weekly Meeting Once

A recurring event is one row. If you need one row per occurrence, fill the rows down in the spreadsheet for the period you care about.

### Mistake 3: Opening the File in Excel without the BOM

Excel on Windows can show `Ã©` for `é` in a plain UTF-8 file. Turn on Excel BOM before downloading.

### Mistake 4: Ignoring the Skipped Count

A skipped component is named in the notes. Read them before you treat the row count as the event count.

### Mistake 5: Converting a Whole Zip

Google's export is a zip with one .ics per calendar. Convert each file; the tool reads one at a time so the preview matches the download.

## Tools Used in This Guide

- **[ICS to CSV](/convert/ics-to-csv/)** — One row per event from an .ics file.
- **[CSV to ICS](/convert/csv-to-ics/)** — The reverse: rows into an importable calendar file.
- **[CSV Viewer](/convert/csv-viewer/)** — Open and sort the CSV without a spreadsheet app.
- **[CSV to Excel](/convert/csv-to-excel/)** — Turn the CSV into an .xlsx workbook.

## FAQ

**Q: Is FindUtils ICS to CSV free to use?**
A: Yes. The tool is free and needs no account. It converts one file at a time in the browser.

**Q: Are the times converted to my time zone?**
A: No. Each time is written as the file states it, and the `timezone` column names the zone. Convert in the spreadsheet if you need one zone.

**Q: What happens to recurring events?**
A: One row each, with the rule as text in the `rrule` column. The rule is not expanded.

**Q: Why does an all-day event end a day earlier than in the file?**
A: The file stores the day after the event. The CSV writes the last day, which is what a reader expects.

**Q: Can I open the CSV in Excel?**
A: Yes. Turn on Excel BOM before downloading so accented characters display correctly. Choose the semicolon separator if your Excel expects it.

**Q: Is my calendar uploaded?**
A: No. The file is parsed in the browser and no request carries it. The same converter is on the FindUtils API as `ics_to_csv` for scripted use.

## Next Steps

Convert one calendar and check the first and last rows against the app before you build a report on it.

- Convert a file with [ICS to CSV](/convert/ics-to-csv/).
- Turn rows back into a calendar with [CSV to ICS](/convert/csv-to-ics/).
- Read the [CSV to ICS guide](/guides/csv-to-ics/) for the import side.
