Prepare a spreadsheet for CSV to ICS conversion
Export a comma-separated CSV with a header row. Each event needs a title and a start date; timed events also need a time. The default headers are title, start, end, all_day, uid, description, location and rrule. Optional columns may be omitted. If your spreadsheet uses different headers, enter their exact names in the matching column-name controls.
Keep values containing commas inside CSV quotation marks. A location such as Studio, Level 2 needs quoting so it remains one cell. Avoid mixing US month/day/year dates with UK day/month/year dates in one file. The selected date format applies to the conversion as a whole, so inconsistent rows should be corrected in the spreadsheet first.
How to convert and check the event preview
Use Try an example to load the fictional planning meeting and all-day event. For your schedule, set Input date format to iso, mdy or dmy and choose Timed event zone. Map any renamed headers before choosing your file. File selection begins processing. Alternatively, paste the CSV into the text field and press Process files.
Review the title, start, end, timezone and allDay values in the table. If an option changes after selection, process again before downloading events.ics. Incorrect dates, mismatched row widths and duplicate event identities stop conversion rather than quietly discarding rows. The CSV to ICS converter does not import into Google Calendar, Outlook or another account on your behalf.
Worked example: a timed meeting and one whole day
With iso dates and UTC selected, the meeting below runs from 09:00 to 10:00 UTC on January 5, 2026. The Day off row covers January 10 only. Its end is January 11 because iCalendar all-day end dates are exclusive: the end marks the first date no longer included. Entering January 10 as both start and end would not describe a one-day event.
title,start,end,all_day,location
Planning meeting,2026-01-05T09:00:00,2026-01-05T10:00:00,false,Studio
Day off,2026-01-10,2026-01-11,true,

Understand UTC, floating time and missing end dates
UTC means the clock values describe universal time. A calendar may display them differently after applying the viewer’s local timezone. Floating time means the same written wall-clock time is not tied to a timezone in the exported event. That can be appropriate for a personal local schedule, but it does not identify a particular city or handle travel between zones.
This interface does not generate named IANA timezone definitions or automatically apply daylight-saving rules for a city. Choose a different authoring workflow when an event must remain at 09:00 in a specific location throughout seasonal clock changes. If the end cell is blank, this CSV to ICS converter supplies one hour for a timed event or one day for an all-day event; enter an explicit end whenever that default is not your intention.
Event identities and repeated meetings
An optional UID column lets you carry deliberate event identities from a source system. Without one, this CSV to ICS converter generates a deterministic identity from the row values. Identical rows can therefore create an identity conflict. Correct accidental duplication rather than adding arbitrary characters to force it through. Changing row details can change a generated UID, which matters when reimporting a schedule into an existing calendar.
The optional rrule column accepts a recurrence rule string for supported parsing, but the converter does not provide a full recurrence-authoring interface. Use the RRULE generator to understand a simple pattern, then inspect the actual receiving calendar. Treat the download as a candidate import and test a few events before importing thousands.
A practical calendar checking workflow
For structural issues, run the output through the ICS validator. To compare a calendar export with spreadsheet records, use ICS to CSV. The ICS merger combines existing calendar files and reports conflicting event identities. CSV to ICS handles at most 20,000 event rows per conversion; the file area also displays the configured file-size limit. Keep your original spreadsheet and avoid repeated imports until you understand how your calendar handles existing UIDs.
Common CSV to ICS converter errors and how to fix them
When the CSV to ICS converter cannot use a file, it stops with one clear message instead of producing a half-finished download. These are the problems people run into most often, with the fix for each:
- Use a valid date in the selected format, with an end after its start. A date does not match the chosen date format, a day does not exist (31 April), or an end time is not later than its start. The line number points to the row.
- A required field or column is missing. A row has no event title, or the title column is missing from the header.
- Keys must be present and unique. Review duplicate keys before exporting. Two rows produce the same event UID. Give repeated meetings distinct UIDs or leave the column empty so each row gets its own.
- Row length differs from the header. A row has more or fewer cells than the header, usually because of an unquoted comma in a title or location.
Privacy: the CSV to ICS converter runs in your browser
CSV to ICS converter processing happens with JavaScript in a background worker on this page. Your file is not uploaded to a FileFix server, and the results you download are created in your browser’s memory. Calendars reveal meetings, names and locations, so local processing keeps that schedule private. When you finish on a shared computer, clear the selection or close the tab.
For the underlying format rules, see the RFC 4180 (CSV) and RFC 5545 (iCalendar). The CSV to ICS converter follows the subset described on this page rather than every optional feature in those documents.
Sources
Questions about this tool
Why does an all-day event end on the next date?
The iCalendar end is exclusive. An event lasting January 10 only starts on January 10 and ends on January 11.
Does this converter know whether 03/04 means March 4 or April 3?
You choose mdy or dmy explicitly. It does not guess differently for individual rows; ISO year-month-day dates avoid that ambiguity.
Can I choose Europe/London or America/New_York?
This version generates UTC or floating timed events. It does not generate named IANA timezone definitions.
What happens if I leave the end column empty?
A timed event gets a one-hour end and an all-day event gets a one-day end. Supply your own end value when either assumption is unsuitable.
Will importing the same download twice create duplicates?
That depends on the destination calendar’s import behavior. Generated UIDs are stable for identical rows, but this tool does not control the account’s update or duplicate handling.
Review the supported formats and limitations before using an output file. File processing happens in your browser.