The CSV format Google Calendar accepts, column by column
Google Calendar imports a CSV only when row 1 uses its own column names and dates and times are written the way its help pages show. Here is the full layout, a worked example, and the cases where a CSV is the wrong file to send.
· 8 min read
The nine headers Google recognizes
Google's help article on importing events lists nine column headers. Two are required, Subject and Start Date; the other seven are optional. The headers must be in English as the article shows them, and they belong in the first row.
That is the whole vocabulary. Nothing in it holds a time zone, a link, guests, reminders or a repeat rule.
- Subject: the name of the event. Required.
- Start Date: the first day of the event. Required.
- Start Time: the time the event begins.
- End Date: the last day of the event, so a three-day conference opening on the 19th takes the 21st.
- End Time: the time the event ends.
- All Day Event: True for an all-day event, False for a timed one.
- Description: notes about the event.
- Location: where it takes place.
- Private: True marks the event private, False doesn't.
Dates, times and True/False values
Google documents one date format: month, day, then a four-digit year, separated by slashes. Its example is 05/30/2020. Times are documented on a 12-hour clock with AM or PM, as in 10:00 AM and 1:00 PM.
The article doesn't say what the importer does with anything else, such as 2026-09-14, 14.09.2026 or 17:30, so treat the documented forms as the only safe ones. Day-first dates are the real hazard: under a month-first rule 03/04/2026 is March 4, and if you meant April 3 nothing flags it.
All Day Event and Private take True or False. Excel and Google Sheets store either word as a logical value and write it to the CSV in capitals, TRUE or FALSE. For an all-day row, leave Start Time and End Time empty and set All Day Event to True.
File rules: header row, commas, quoting, encoding, size
- Row 1 is the header row. No title banner, no blank line and no notes above it.
- Fields are separated by commas. Google's troubleshooting page says semicolons and colons don't work, which matters when Excel runs under a European regional setting.
- A value containing a comma goes inside double quotes, for example "Room 4B, North Building". This is the one quoting rule Google's article spells out.
- Everything else is standard CSV quoting. A value with a line break in it is also wrapped in double quotes, and a double quote inside a quoted value is written twice: "Bring the ""final"" draft". A spreadsheet app does all of this for you on export.
- Save as UTF-8. Google's pages don't name an encoding, but UTF-8 is what Google Sheets writes, and it keeps accented characters intact. In Excel, choose CSV UTF-8 (Comma delimited); plain CSV (Comma delimited) uses an older regional encoding.
- Keep the file at 1 MB or smaller; Google's troubleshooting page suggests cutting a larger file into sections.
A worked example
The three bullets below are a complete file, one line each: the header, a timed event, and a two-day all-day event.
In the timed event, the description and the location contain commas, so both are quoted. In the all-day event, the time fields and the location are empty, which is why commas sit side by side.
- Subject,Start Date,Start Time,End Date,End Time,All Day Event,Description,Location,Private
- Budget review,10/06/2026,10:00 AM,10/06/2026,11:30 AM,False,"Bring Q3 actuals, draft plan","Room 4B, North Building",True
- Office closed,11/26/2026,,11/27/2026,,True,Thanksgiving break,,False
Make a Google-ready CSV from an existing spreadsheet
Starting from nothing? The template page at /template has a Google-ready file, /templates/google-calendar-template.csv, with the nine headers, MM/DD/YYYY dates and AM/PM times already in place; replace the sample rows and import it as is. The general starter sheet there (calendar-events-template, as CSV and Excel) was built for the converter instead: ISO dates, some 24-hour times and a URL column, so it needs these same steps before a direct import.
- Put Google's headers in row 1. Delete anything above the column names, then rename them to the nine above; Title or Event becomes Subject. Other columns have no place in the layout, so move what matters into Description and delete them.
- Split cells that hold a date and a time together. If A2 holds 9/14/2026 9:00 as a real date-time, =INT(A2) gives the date and =MOD(A2,1) the time. Paste the results back as values.
- Format the date columns as mm/dd/yyyy. Apply that custom number format to Start Date and End Date. It only changes real date cells, not dates stored as text. Find a row with a day above 12 and confirm the month comes first.
- Format the time columns as h:mm AM/PM. Apply it to Start Time and End Time. On all-day rows clear both and enter True under All Day Event.
- Export one tab as CSV. In Google Sheets: File, Download, Comma Separated Values (.csv). In Excel: File, Save As, CSV UTF-8 (Comma delimited). Either way, only the active tab is written.
- Read the file in a text editor before importing. Line 1 should be the header names with commas between them, dates like 09/14/2026, times like 9:00 AM. If you see semicolons between fields, export from Google Sheets instead.
Import it into a calendar you can delete
Google's article says CSV and ICS files can be imported on a computer. Open calendar.google.com, click the gear at the top right, choose Settings, then Import & export in the left menu. Click Select file from your computer, pick the CSV, choose which calendar receives the events, and click Import.
Choose that calendar with care. The import page offers no undo, and clearing a bad import out of a busy calendar means deleting events one by one. Make a new calendar first (the plus next to Other calendars), import into it, and look at the result. If dates or times are off, delete that calendar, fix the file and repeat.
Where the CSV route runs out, and when ICS is the better file
Four things don't fit in the layout. There is no time zone column, so a schedule written for another city, or one that spans two zones, can't say so. There is no link field; a URL can only sit in Description as text. There is no recurrence: Google's article says repeating events from a .csv arrive as a series of one-time events, so each occurrence is its own row. And only month-first dates are documented, so a day-first file has to be rewritten first.
If your sheet already matches the layout, none of that matters. Import the CSV directly; converting it first gains you nothing.
Converting to ICS is worth it when the sheet is not in Google's shape and you would rather not reshape it. Koyomi reads the CSV or Excel file in your browser without uploading it and matches headers such as Title, Date, Where and Notes on its own. Numeric dates get a visible month-first or day-first control, you pick the time zone the times were written in, and each timed event is stored as a UTC instant. A URL or Link column holding a full http or https address becomes the event's link. Semicolon-separated and older Windows-encoded files are read as they are, and skipped rows are listed with the reason before you download.
It adds nothing a spreadsheet row can't express: Koyomi writes no repeat rules, guests or reminders, and it ignores a Private column. The .ics goes in through the same Import & export page.
Troubleshooting
- "Imported 0 events", or in Google's wording "Processed zero events". Google's own explanation is a second click on Import after the first one worked, so look at the calendar first. If it really is empty, check row 1 in a text editor: header names as spelled above, commas between the fields.
- "Failed to import", or a message that the file couldn't be processed. Suspect the header row: a misspelling such as Strat Date, Title in place of Subject, no Start Date column, or a banner line above the headers.
- Events on the wrong day or month. The dates were day-first, so 05/06/2026 came in as May 6, not June 5. Reformat the date columns as mm/dd/yyyy, delete the test calendar and import again.
- Times shifted by the same number of hours. The file carries no zone. Google's advice: make sure the time zone in Calendar's settings matches the one the schedule was written in, then import again.
- Garbled characters, such as é where é should be. The encoding is wrong. Save again as CSV UTF-8 from Excel, or download the CSV from Google Sheets.
Do it now
Frequently asked questions
- What columns does Google Calendar need in a CSV?
- Two are required: Subject and Start Date. Seven more are optional: Start Time, End Date, End Time, All Day Event, Description, Location and Private. Headers must be in English, in row 1.
- What date format does Google Calendar CSV import use?
- Month/day/year with a four-digit year; Google's example is 05/30/2020. Times are shown as 10:00 AM or 1:00 PM. No other format is documented, so rewrite day-first dates before importing.
- Can I import recurring events from a CSV?
- Not as a repeating series. The layout has no repeat column, and Google's help says repeating events from a .csv show up as a series of one-time events. Add one row per occurrence.
- Why did Google Calendar import 0 events?
- Google's documented cause is clicking Import twice: the second click finds nothing new. If the calendar really is empty, check that row 1 has Google's header names, that fields are separated by commas, and that the file is 1 MB or smaller.