Import a CSV into Google Calendar
Google Calendar does import CSV files — but only if the headers are its own (Subject, Start Date, Start Time, End Date, End Time, All Day Event, Description, Location, Private) and the dates are in US month/day/year order. Anything else fails with a vague error or lands on the wrong day. Koyomi converts your CSV to an .ics, which Google imports without argument.
A teacher with a term timetable exported from the school system usually has none of Google's headers: Class, Room, Date, Period start, Period end. Koyomi matches what it can, lets you map the rest with dropdowns, and reads dates in day-first order if that's what the file uses — no rewriting columns in a spreadsheet first.
Preview the events, download the .ics, then use Import in Google Calendar's settings (steps below). If you re-export the timetable after a change and import it again, the events are updated rather than duplicated.
How to import a CSV into Google Calendar with the right dates
- Don't rename your headers to Google's. Class, Room, Date, Period start and Period end are enough. Class and Room are recognized as title and location, and Date as the start. "Period start" isn't a known name, so assign it to Start Time from the dropdown, and Period end to End Time.
- Leave dates in the order the school system used. A UK export with 14/09/2026 is read day-first as soon as one date in the column makes that unambiguous, and the control shows which order was used. Google's own CSV import would have rejected it or put the lesson in the wrong month.
- Set the zone the school is in. Google Calendar assigns every event a time zone at import. Because the .ics carries each lesson as a UTC instant, choose the school's zone here and Google shows it correctly whatever zone the calendar is set to.
- Create the destination calendar in Google first. The import dialog can only add to an existing calendar. Make "Timetable 2026-27" before you import so lessons stay separate from personal events and can be hidden in the holidays.
- Preview, download, import. One file per term or per class works well. Half-term headings and blank separator rows are skipped and listed, so nothing is lost without you seeing it.
Google's CSV import versus an ICS import
Google Calendar's CSV importer is real and works within its limits. It needs the header row to use Google's field names, dates written as MM/DD/YYYY, and times like 10:00 AM. A time zone can't be expressed per row or per file; everything is read in the calendar's zone.
An .ics import has no header requirement because the mapping happened before the file was made, and each event carries its own instant. It also handles the things a CSV can't say cleanly: multi-day all-day events, a URL on the event, and a description with line breaks.
If your file is already in Google's layout, an export from Outlook for example, Google's import is fine. If it came from anywhere else, converting first saves the reformatting.
What happens to the description, room and link
Google Calendar shows Location under the event title with a Maps link, and Description in the body. Line breaks inside a description survive the conversion, so a Notes cell with several lines reads as several lines in Google.
A URL column is written to the event's URL property. Google Calendar doesn't reliably show that property as a field of its own, so if you want a clickable link visible in the event, put it in the Description as well.
The file doesn't mark events private or set free/busy, so Google applies the calendar's defaults. Change those in bulk afterwards by adjusting the calendar's settings rather than each lesson.
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.
Read the guide
Frequently asked questions
- Why not just use Google Calendar's own CSV import?
- You can, if your file matches Google's header names and US date format exactly. Most exports don't. Converting to .ics sidesteps both rules, and you see exactly what will import before you commit.
- Which Google Calendar will the events go into?
- You choose at import time. Google's import dialog has a dropdown for the destination calendar; create a new calendar first if you want the timetable kept separate from personal events.
- Can I import from the Google Calendar app on my phone?
- No. The mobile apps have no import feature at all. Use calendar.google.com in a browser on a computer; the imported events then sync to the phone app like everything else.
- I imported the same file twice. Do I get duplicates?
- Koyomi gives each event a stable ID that stays the same when you convert the same spreadsheet again, so a re-import updates events in most calendar apps rather than adding a second copy. Rows you deleted from the sheet stay until you remove them by hand.
- Can Google Calendar import a CSV directly?
- Yes, from the same Import & export page, as long as the CSV uses Google's own header names and US month/day/year dates. If a file already matches, that route is fine. For anything else, converting to .ics avoids editing the file and shows you the parsed events before you commit.
- How do I make a lesson all-day in the CSV?
- Leave the Start Time and End Time cells empty for that row; a date with no time is an all-day event. For something spanning several days, such as an exam week, fill End Date with the last day. A column like All Day Event with TRUE, Yes or 1 also forces it.
- Can I share the timetable with students instead of importing it for each of them?
- Import it into a Google calendar you then share, either with specific people or by link, and they subscribe once. Or send them the .ics and each student imports it into their own account. Sharing is easier to update later, since you edit one calendar.
- 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.