Turn a spreadsheet into calendar events
Any spreadsheet with one event per row can become a calendar: CSV with any delimiter, .xlsx, .xls, or a Google Sheet you've downloaded. Koyomi detects the title, date, time and location columns, shows you the parsed events, and writes an .ics that every calendar app imports.
The spreadsheet doesn't have to be tidy. A volunteer rota for a community group usually mixes date styles from whoever edited it last, has a Notes column, and puts the venue under a heading like Where. Koyomi reads ISO, US, European and written-out dates side by side, and any column it doesn't recognize is mapped with a dropdown before you download.
Starting from scratch? Grab a spreadsheet template with the right headers, fill it in, and it converts without any mapping. Rows with a date but no time become all-day events; rows missing a title or date are skipped and flagged in the preview, so nothing vanishes silently.
How to turn any spreadsheet into calendar events
- Make a checklist of the columns. Required: something to call the event and a date. Optional: start time, end date, end time, location, description, a link, and an ID. Every other column is ignored, so there's no need to delete anything.
- Clean up mixed date styles. Written months (14 Sep 2026, September 14, 2026), ISO dates and numeric dates can coexist in one column. Numeric month-first and numeric day-first cannot; standardize on one, or convert the column to real dates in your spreadsheet app.
- Decide what a row without a time means. No time on either end makes the row all-day. A Time cell reading "morning" doesn't parse as a time, so that row quietly becomes all-day as well; replace it with 09:00 if you want a timed event.
- Export if you're not already in CSV or Excel. Numbers: File → Export To → CSV or Excel. LibreOffice Calc: File → Save As, choosing Text CSV or Excel 2007-365. Google Sheets: File → Download. Any of those outputs is accepted.
- Convert, map the strays, download. Where and Notes are recognized as location and description. Who is not, so you'd map it to Description or the title from the dropdown. The preview shows the result before you commit.
Bulk events versus a subscribed calendar
An .ics you import is a batch of events copied into your calendar. An .ics you subscribe to is a live feed at a URL that your app polls for changes. Koyomi produces the first kind, which is right for a one-off list, a season, or anything owned by a spreadsheet that doesn't change often.
If the spreadsheet is the source of truth and changes weekly, expect to convert and import again. Keeping the imported events in their own calendar, and replacing that calendar rather than editing it, makes the update predictable in every app.
Hosting the .ics at a URL and subscribing to it is possible with any web host, but the file still only changes when you regenerate it. That's a manual feed, not a live one.
Recurring events from a spreadsheet
The iCalendar format can express a repeat rule, and calendar apps show a repeating event as one item with many occurrences. Koyomi doesn't write repeat rules; every row is an independent event, so a weekly meeting for ten weeks is ten rows.
Filling ten rows takes a few seconds in any spreadsheet: enter the first two dates a week apart, select both, and drag down. The upside of separate events is that a canceled week is a deleted row, and one moved session doesn't split a series.
The downside is that changing the time of all future occurrences isn't one edit in the calendar. If that matters, create the series in the calendar app directly and use the spreadsheet only for the exceptions.
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
- Which spreadsheet formats can I use?
- CSV with comma, semicolon or tab delimiters, .xlsx and .xls. Google Sheets, Numbers, LibreOffice and most booking or HR tools can export to one of those. Nothing is actually uploaded — the file is read in your browser.
- What should the columns be called?
- Title (or Subject, Event), Start Date, Start Time, End Date, End Time, All Day Event, Location, Description and URL are recognized automatically. Other names are fine — you get a dropdown per column to say what it holds.
- Some rows are section headings or blank lines. Will they break the import?
- No. Rows without a usable title or date are skipped, and each one is listed with a reason in the preview, so you can fix the spreadsheet if it was meant to be a real event.
- Which calendar apps does the file work with?
- All of them. The output is a standard .ics file: Google Calendar, Outlook, Apple Calendar, Thunderbird, Proton, Fastmail and any app that can import iCalendar.
- Can I use a Numbers or LibreOffice file?
- Not directly; export to .xlsx or CSV first. In Numbers that's File → Export To; in LibreOffice Calc, File → Save As with Excel 2007-365 or Text CSV as the type. The exported file converts like any other.
- How do I make an event all-day in a spreadsheet?
- Leave the time cells empty on that row. To span several days, put the last day in End Date; the day-after convention the format uses is handled for you. An All Day column holding Yes or TRUE also works and overrides any times in the row.
- Which timezone should I choose?
- The one the times in the spreadsheet were written in. If the list mixes zones, convert it in batches per zone, or choose "No timezone" so each time is written as wall-clock and shown unchanged wherever it's viewed.
- 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.