Title, location, date and time, time zone, repeat, invitees, alerts, and notes — then download the .ics file or open it straight in your calendar. You can also paste a schedule or attach a document or photo to make several events at once.
What CSV format does Google Calendar's importer accept?
Google Calendar and Outlook read a CSV whose first row is exactly: Subject, Start Date, Start Time, End Date, End Time, All Day Event, Description, Location. Dates are MM/DD/YYYY and times are twelve-hour with a suffix (09:00 AM); an all-day row sets All Day Event to True and leaves both time cells empty. ICS Maker exports that header plus one correct row, to paste the rest of the sheet beneath. Those eight columns are everything a CSV carries — no time zone, no repeat rule, no guest list, no reminders, no URL — so use an .ics whenever any of those matter, and CSV when the volume makes a file per event absurd.
The columns, in order
Subject,Start Date,Start Time,End Date,End Time,All Day Event,Description,LocationThose eight headers, spelled and capitalised that way, are what Google Calendar’s importer looks for; Outlook accepts the same sheet. Dates are MM/DD/YYYY and times are twelve-hour with a suffix — 09:00 AM — because those are the spellings the importers read without guessing. A day-long event sets All Day Event to True and leaves both time cells empty.
Switch the download format to CSV and you get one correct row plus the header. Open it in a spreadsheet, paste in the other two hundred rows, and import the lot.
The end date is not the one in the .ics
In a CSV the end date is the last day the event covers. In an .ics the same event ends the day after, because DTEND is exclusive: a one-day event on the 15th has DTEND;VALUE=DATE:20260816. Both files here are written from the same event and each is spelled the way its own format expects, so the two disagree on paper and agree in the calendar. It is worth knowing before you hand-write a sheet from an .ics you were sent.
What CSV cannot carry
A spreadsheet has eight columns and iCalendar has a hundred properties, so the losses are real: no time zone, no repeat rule, no guest list, no reminders, no status, no URL. Each row is a title, a span, an all-day flag, a description, and a place. That is why the import route is the fallback rather than the default — reach for it when the volume makes a file per event absurd, or when a calendar has refused an .ics outright, and use the .ics whenever the detail matters.
Where to import it
- Google Calendar
- Settings → Import & export → Import, then choose the file and a destination calendar.
- Outlook, desktop
- File → Open & Export → Import/Export → Import from another program or file → Comma Separated Values.
- Anything else
- Most calendars import .ics but not CSV. Convert the sheet to one file per event, or use a calendar that will take the CSV and subscribe to it from the other application.
Questions
- What columns does a Google Calendar CSV import need?
- Subject, Start Date, Start Time, End Date, End Time, All Day Event, Description, Location — spelled and capitalised exactly like that, in the first row. Subject and Start Date are the two that must have a value in every row.
- What date format does the importer want?
- MM/DD/YYYY, so the 15th of August 2026 is 08/15/2026, and times are twelve-hour with AM or PM, such as 09:00 AM. Other spellings are sometimes accepted and sometimes silently misread as a different day, which is the failure worth avoiding on a sheet of two hundred rows.
- Can a CSV import repeating events or reminders?
- No. The CSV columns cover the title, the span, an all-day flag, the description, and the location, and nothing else — no recurrence rule, no alarms, no attendees, no time zone. Import a repeating event as an .ics instead, where one RRULE line describes the whole series.
- Why does my spreadsheet show a stray apostrophe in a title?
- Because the title began with =, +, -, or @, and a cell starting with one of those is executed as a formula when the sheet is opened. The leading apostrophe marks the cell as literal text; importers do not treat it as part of the title. It is a deliberate safeguard, not a bug.