CSV → ICS Calendar

Bulk-create calendar events from a CSV.

Open tool

Overview

The CSV-to-ICS converter bulk-creates calendar events from a spreadsheet. Map your CSV columns to the standard iCalendar fields — summary, start, end, location, description — and the tool emits an .ics file you can import into Google Calendar, Outlook, Apple Calendar, or any other RFC 5545 compatible client.

Event organisers seeding a conference schedule, HR teams loading a year of company holidays, and instructors publishing a course timetable reach for this when manually clicking through a calendar UI is not realistic. Long-tail searches that lead here include "convert spreadsheet to calendar import", "bulk create calendar events from CSV", and "CSV to .ics file online".

How it works

The input CSV is parsed under RFC 4180 — commas separate fields, double quotes wrap values that contain commas, and "" escapes an embedded quote. Each row becomes one VEVENT block inside a single VCALENDAR envelope. Start and end timestamps are normalised to the ICS DTSTART/DTEND format (YYYYMMDDTHHMMSSZ for UTC, or local floating time when no timezone is given).

A stable UID is synthesised from a hash of the row contents so re-importing the same CSV updates existing events rather than duplicating them. Multi-line descriptions are folded according to RFC 5545's 75-octet line limit so that even verbose entries import cleanly.

Examples

  • Import a conference schedule with 80 sessions, each with title, room, speaker, and abstract.
  • Generate a year of recurring weekly office hours by emitting one event per occurrence.
  • Bulk-load company holidays for an entire region into a shared work calendar.
  • Stage a sports league fixture list as importable events for every team's calendar.

FAQ

What date and time formats are accepted?
ISO 8601 (2026-05-18T14:30:00) is the safest. Common locale formats like 5/18/2026 2:30 PM are accepted on a best-effort basis; mixing formats in the same column is risky.

Do I need to provide an end time?
If you omit it, the converter defaults to one hour after the start. For all-day events, provide a date with no time component on both ends.

How are time zones handled?
A row may include a timezone column (for example America/New_York); otherwise times are emitted as floating local time, which most clients interpret in the viewer's own timezone.

Will re-importing duplicate events?
No, provided the row content is unchanged. The generated UID is deterministic, so calendar clients recognise the second import as an update.

Is there a row limit?
There is no hard limit, but calendar clients can become sluggish past a few thousand events in a single import. Split very large schedules into per-month files.

Try CSV → ICS Calendar

An unhandled error has occurred. Reload ×