Convert a CSV to ICS when the events already exist in a spreadsheet and you want them in a calendar without creating each one by hand. FindUtils CSV to ICS reads the rows in your browser, matches the columns by name, and writes an iCalendar file that Google Calendar, Apple Calendar and Outlook import. The tool does not upload or store the sheet.

This guide explains which column names the tool recognizes, how it reads dates and times, how it writes all-day events and time zones, what it does with a row it cannot use, and how to import the result.

Why Convert CSV to ICS?

A class timetable, a shift roster, a content calendar, a season of matches: each starts as rows in a sheet. The slow path is forty clicks through the calendar's event form. The fast path is one import.

Google Calendar can import some CSVs directly. Apple Calendar cannot, Outlook prefers not to, and any calendar you hand to another person wants an .ics. The .ics is the format every calendar reads, and it is the one to build when the target is not Google.

How to Convert CSV to ICS Online

Prepare the header, load the sheet, check the map, set the options, download, import.

Step 1: Name the Columns

Give the sheet a header row. The tool recognizes the Google Calendar and Outlook export names and a set of short aliases.

FieldRecognized names
Title (required)Subject, Title, Summary, Event, Name
Start date (required)Start Date, Start, Date, Begin
Start timeStart Time, Time
End dateEnd Date, End, Until, To
End timeEnd Time
All dayAll Day Event, All Day
DescriptionDescription, Notes, Details, Body
LocationLocation, Place, Where, Venue
OthersPrivate, UID, URL, Categories, Time Zone

Matching ignores case, spaces and punctuation, so start_date and Start Date are the same column.

Step 2: Load the Sheet

Open FindUtils CSV to ICS. Upload the .csv or paste the rows. The separator is detected from the header: comma, semicolon or tab.

Step 3: Check the Column Map

Under the output the tool lists which header it used for each field. If it could not find a title or a start column, a column map appears with one select per field. Pick the columns and the file updates.

Step 4: Set the Options

  • Calendar name is shown by the calendar app after import. Optional.
  • Time zone stamps every timed event with a zone. Leave it empty for floating times.
  • Date order decides how 03/04/2026 is read. Auto is month-first.
  • Default length is used for a timed row that has no end. Sixty minutes unless you change it.

Step 5: Read the Counts and Download

The line under the output says how many events were written, how many are all-day, and how many rows were skipped and why. Download the .ics.

Step 6: Import

  • Google Calendar: Settings > Import & export > Import. Choose the file and the target calendar.
  • Apple Calendar: File > Import, or double-click the file.
  • Outlook desktop: File > Open & Export > Import/Export > Import an iCalendar file.
  • Outlook on the web: Add calendar > Upload from file.

How Dates and Times Are Read

The tool reads ISO dates such as 2026-09-03, slash dates such as 09/03/2026, dotted dates such as 04.09.2026, and month names such as 3 Sep 2026. Times can be 24-hour, 09:30, or 12-hour, 9:30 AM. A start cell that holds both, 2026-09-03 09:30, is split when there is no separate time column.

A slash date where both parts fit a month, 03/04/2026, is read month-first, the convention of Google and Outlook exports. The tool counts those dates and shows the count under the output. If your sheet is day-first, set the date order to DD/MM/YYYY.

All-Day Events

A row is all-day when its All Day column is true, yes or 1, or when the start has no time. It is written with DTSTART;VALUE=DATE and an end of the day after the last day, which is how the format stores an all-day span. In the sheet you write the last day; the tool adds the day.

Time Zones

With no zone, times are floating. A 09:30 event shows at 09:30 in whatever zone the importing calendar uses, which is what most people want for a local schedule.

With a zone such as Europe/Istanbul, every timed event is stamped with it as a TZID parameter and shows at 09:30 Istanbul time everywhere. UTC writes a Z suffix. A Time Zone column in the sheet overrides the setting for that row.

Google Calendar and Apple Calendar read a TZID name directly. Older Outlook desktop versions may treat a TZID with no embedded zone definition as local time. If that matters, use UTC or floating times.

Rows That Are Skipped

Every row needs a title and a start date. A row missing either is skipped, and the notes name it by row number, counted with the header as row 1: Row 7: no start date; skipped. A start that cannot be read as a date is skipped the same way. Empty rows are counted separately and are not an error. Every other row is still in the file.

Practical Examples

Example 1: A Google Sheet with the Google Header

The sheet has Subject, Start Date, Start Time, End Date, End Time, All Day Event, Description, Location. Download it as CSV, load it, download the .ics. No configuration.

Example 2: A Roster with Short Names

The sheet has title, date, start, end, place. All five map by alias. Rows with a time in start are timed; rows with only a date are all-day.

Example 3: A Sheet with Custom Headers

The sheet has Course, Session, Room. The column map appears. Pick Course for Title, Session for Start date, and Room for Location.

Example 4: A Day-First Sheet

The dates are 04/09/2026 for 4 September. The count under the output says how many dates are ambiguous. Set the date order to DD/MM/YYYY and the count drops to zero.

Common Mistakes

Mistake 1: No Header Row

A sheet that starts with data has nothing to match. Add a header row with the names above.

Mistake 2: Trusting Auto for Day-First Dates

03/04/2026 is March 4 by default. Set the date order when the sheet is day-first.

Mistake 3: Expecting Repeats from a Word

weekly in a cell does not become a rule. One row is one event. Fill the rows down, or set the repeat in the calendar after import.

Mistake 4: Ignoring the Row Notes

A skipped row is not in the file. Read the notes, fix the cell, and paste again.

Mistake 5: Importing Twice and Expecting Duplicates

Each event gets a stable UID from its content and row number, so a second import updates the events instead of duplicating them. That is by design.

Tools Used in This Guide

  • CSV to ICS — Rows into an importable calendar file.
  • ICS to CSV — The reverse: an .ics into one row per event.
  • CSV Viewer — Check the sheet before converting it.
  • CSV to JSON — The same rows as JSON for a script.

FAQ

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

Q2: Do I need an end time for every event? A: No. A timed row with no end gets the default length. An all-day row with no end date is a one-day event.

Q3: Is 03/04/2026 March 4 or April 3? A: March 4 by default. Set the date order to DD/MM/YYYY for a day-first sheet. The tool counts ambiguous dates so you know when it matters.

Q4: Can it create repeating events? A: No. One row is one event. Write one row per occurrence, or set the repeat in the calendar after import.

Q5: Will importing the same file twice create duplicates? A: Not in Google Calendar, Apple Calendar or Outlook, which honour the UID. The same row produces the same UID on every run.

Q6: Is my spreadsheet uploaded? A: No. The rows are read in the browser and no request carries them. The same converter is on the FindUtils API as csv_to_ics for scripted use.

Next Steps

Convert a sheet with a few rows, import it into a test calendar, and check one timed and one all-day event before you import the whole roster.