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
- 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.
- 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.
- 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.
- 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
- Open calendar.google.com on a computer (the mobile apps can't import files).
- Click the gear → Settings → Import & export.
- Select the .ics file, choose which calendar to add the events to, and click Import.
Outlook
- Outlook on the web / new Outlook: Calendar → Add calendar → Upload from file → pick the .ics and a destination calendar.
- Classic Outlook for Windows: File → Open & Export → Import/Export → Import an iCalendar (.ics) file.
- Choose Import (merge into your calendar) rather than Open as New, unless you want a separate calendar.
Apple Calendar
- Mac: double-click the .ics, or File → Import in Calendar, then pick the calendar to add to.
- iPhone / iPad: open the .ics from Files or Mail and tap Add All.
- 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.