Convert CSV to ICS

An .ics file is the one calendar format every app reads — Google Calendar, Outlook, Apple Calendar, Thunderbird, Proton, Fastmail. Koyomi reads your CSV, works out which columns are the title, dates, times and location, and writes a standard iCalendar file you can import anywhere.

If you're coordinating an event and the session list lives in a spreadsheet, this is the shortest route into forty people's calendars: convert once, share the .ics, everyone imports it. The delimiter is detected automatically (comma, semicolon or tab), and dates are read in any of the usual shapes — 2026-09-01, 9/1/2026, 01.09.2026, or "Sep 1, 2026".

You see a preview table of every parsed event before you download, with a warning on any row that was skipped and why. Nothing is uploaded; the file stays in your browser.

How to convert a CSV file to ICS

  1. Put one event per row, with a header row. Name the columns Title, Start Date, Start Time, End Date, End Time, Location and Description. Those names are recognized without any mapping; Subject, Event, When, Where and Notes are recognized too. Any other header is assigned from a dropdown after the file loads.
  2. Write dates so the order can't be misread. 2026-09-01 (ISO) is read the same way everywhere. 9/1/2026 or 1.9.2026 also work, but if every day number in the file is 12 or under, month-first and day-first are indistinguishable and you confirm the order with the control under the preview. A date and time in one cell, such as 2026-09-01 14:00, is fine.
  3. Leave the time cells empty for all-day events. A row with a date and no time on either end becomes an all-day event; a multi-day one just needs an End Date. If the CSV already has a column like All Day Event holding TRUE/FALSE or Yes/No, that column is honored.
  4. Drop the file, set the timezone, download. The delimiter and text encoding are detected. The timezone defaults to your browser's; change it to the zone the times were written in. The preview lists every event, and every skipped row with a reason, before anything is written.

What an ICS file actually contains

An .ics file is plain text. It opens with BEGIN:VCALENDAR, then holds one VEVENT block per event, each with a UID, a DTSTART, a DTEND, a SUMMARY (the title) and, when present, LOCATION, DESCRIPTION and URL. You can open the output in a text editor and read it line by line.

Koyomi writes timed events as UTC instants (a trailing Z) computed from the timezone you selected, and all-day events as bare dates marked VALUE=DATE. It also writes a calendar name (X-WR-CALNAME) from the name field, which some apps use as the suggested name for a new calendar. Nothing else is added: no alarms, no attendees, no recurrence rules.

The file is a snapshot, not a link. Once imported, the events belong to the calendar; if the CSV changes, you convert again and import the new file.

Why a CSV is not enough on its own

CSV has no concept of a date; every cell is text. 03/04/2026 is March 4 in Ohio and April 3 in Oslo, and the file carries nothing to say which. Koyomi reads the whole column before deciding: one value with a first number above 12 settles it as day-first, one with a second number above 12 settles it as month-first, and the resolved order is shown in the control so you can overrule it.

Text encoding is the other silent failure. A CSV saved by an older Excel in Windows-1252 turns "café" into garbage when read as UTF-8; Koyomi falls back to Windows-1252 when it sees that pattern, and it strips the byte-order mark that Excel's "CSV UTF-8" option prepends, which would otherwise glue itself to your first header.

Quoted fields containing commas or line breaks are handled by the parser. A multi-line Description cell keeps its line breaks in the event description.

After you download the .ics

Google Calendar

  1. Open calendar.google.com on a computer (the mobile apps can't import files).
  2. Click the gear → Settings → Import & export.
  3. Select the .ics file, choose which calendar to add the events to, and click Import.

Outlook

  1. Outlook on the web / new Outlook: Calendar → Add calendar → Upload from file → pick the .ics and a destination calendar.
  2. Classic Outlook for Windows: File → Open & Export → Import/Export → Import an iCalendar (.ics) file.
  3. Choose Import (merge into your calendar) rather than Open as New, unless you want a separate calendar.

Apple Calendar

  1. Mac: double-click the .ics, or File → Import in Calendar, then pick the calendar to add to.
  2. iPhone / iPad: open the .ics from Files or Mail and tap Add All.
  3. Events added to an iCloud calendar sync to every device.

Frequently asked questions

What is an ICS file?
ICS is the iCalendar format (RFC 5545): a plain-text file listing events with their start, end, title, location and description. Every major calendar app imports it, which is why it's the safest format to convert to.
Which columns does my CSV need?
At minimum a title and a start date. End date, start and end time, location, description, URL and an all-day flag are picked up when present. Headers are matched automatically; anything unrecognized is mapped with a dropdown before you download.
My CSV uses semicolons instead of commas. Will it work?
Yes. The delimiter is detected from the file — comma, semicolon and tab all work, which covers CSVs saved by Excel in European locales.
What happens to rows with a date but no time?
They become all-day events. Rows with a start time but no end time get a default duration — 60 minutes unless you change it.
Can I put the date and time in one column?
Yes. "2026-09-01 14:00", "9/1/2026 2:00 PM" and "Sep 1 2026 14:00" all parse as a start with a time. Separate Start Date and Start Time columns work too, and when both exist the time column takes precedence over any time inside the date cell.
Does the ICS keep a link column?
A column headed URL, Link or Website is written as the event's URL property, provided the value starts with http:// or https://. Anything else in that column is not written as a URL; put plain text like "see portal" in Description instead.
What does "Could not read a date" in the preview mean?
The cell in the start-date column didn't match any format Koyomi knows: ISO, numeric with slashes, dots or dashes, or a written month in either order. Usual causes are a note typed into the date cell, a range like "Sep 1-3" in one cell, or a heading row with text where the date should be. The offending text is quoted in the warning so you can find it.
Is my spreadsheet uploaded anywhere?
No. Parsing and the .ics file are produced entirely in your browser — the file never leaves your device. That's also why there is no size limit, no queue and no account.
Is this really free?
Yes. Every input format, every option, no sign-up, and nothing added to the calendar file.
Does it support recurring events?
Not yet. Each row becomes one single event. For a weekly class or shift, put one row per occurrence — filling a date column down in a spreadsheet takes seconds.