📅CSV→ICS

Excel to ICS Converter — No CSV Export Step Needed

Turn an Excel sheet of events into a .ics calendar file right here in the browser. Drop the .xlsx or .xls straight in — no saving as CSV first, no upload, no copy of your schedule on someone else's server. Map the columns, preview the first five events (click Show all for the rest), download one file that imports into Google Calendar, Outlook or Apple Calendar.

📅
Written by Casey Marlin · Last updated
This update: xlsx parsing covered by SheetJS in-memory workbook tests
Diagram of converting Excel to ICS directly in the browser: an .xlsx worksheet with Subject, Start Date and Start Time columns becomes VEVENT entries in an .ics file, skipping the Save-As-CSV step that mangles dates
📅 CSV / Excel → ICS converter
100% in your browser — your file never leaves your device
Drop your CSV or Excel file here, or click to choose
.csv, .xlsx, .xls or .json — exports from Google Calendar, Outlook, Excel, Google Sheets and APIs
Download sample.csv template

Why skip the Save-As-CSV step?

The traditional route — export the sheet as CSV, then feed the CSV to a converter — is exactly where calendar imports go wrong, because the export step quietly rewrites your data. Excel formats dates in the CSV according to your system locale, so 28/07/2026 on a UK machine becomes a string a month-first parser misreads or rejects. Times can flip between 12-hour and 24-hour conventions. And a CSV saved with the wrong encoding turns every accented name in your event titles into mojibake.

Reading the .xlsx directly sidesteps all of it: the converter sees the worksheet as Excel displays it, one header row and one event per row, and shows you a preview before anything is downloaded. The parsing happens with SheetJS in your browser tab — open the network panel while converting and you'll see zero requests carrying your data.

The reverse direction works too: the ICS to CSV tool turns any calendar file back into a spreadsheet you can open in Excel.

Which columns the converter looks for

Headers are matched automatically — these names (and close variants) are recognized on sight, and anything the auto-detect misses you can assign by hand in step 1. Only Subject and Start Date are required.

Spreadsheet columnRequiredBecomes in the .ics
Subject / TitleYesSUMMARY — the event name
Start DateYesDTSTART — with your chosen timezone
Start TimeNoTime part of DTSTART; blank can mean all-day
End Date + End TimeNoDTEND — defaults to one hour after the start
All DayNoSwitches the event to a date-only DTSTART
LocationNoLOCATION
DescriptionNoDESCRIPTION — notes shown in the event

From .xlsx to calendar in five steps

  1. Drop the Excel file into the converter above — .xlsx or .xls, first worksheet, one header row on top.
  2. Check the column mapping. Recognized headers are pre-assigned; fix anything that looks wrong with the dropdowns.
  3. Pick the timezone your event times were written in. The .ics embeds it with DST rules, so events land at the right hour everywhere.
  4. Read the preview. The preview shows the first five; click Show all. Each listed event shows its parsed date and time — this is where a day-first date or a typo shows itself before it reaches your calendar.
  5. Download the .ics and import it: see the exact menu clicks for Google Calendar, Outlook or Apple Calendar.

Excel to ICS — FAQ

Do I need to save my Excel file as CSV first?

No. Drop the .xlsx or .xls file straight into the converter — it reads the first worksheet directly in your browser. Skipping the Save-As-CSV step also skips the bugs that step introduces: dates silently rewritten to your locale's order, times reformatted, and accented characters mangled by the wrong encoding.

Is my spreadsheet uploaded to a server?

No. The workbook is parsed with JavaScript on your own device — there is no upload endpoint at all. You can load this page, go offline, and still convert. The .ics file is assembled and saved locally too.

Which Excel formats are supported?

Modern .xlsx workbooks and legacy .xls files both work, alongside .csv, .tsv and .txt in the same drop zone. Only the first worksheet is read, so put your event table on sheet 1 with a single header row. One file can be up to 10 MB, 50,000 rows, 200 columns and 1,000,000 cells — limits that keep a malformed workbook from freezing the tab.

How should dates be written in the spreadsheet?

The converter reads what Excel displays and understands ISO (2026-07-28), numeric dates like 7/28/2026, and written-out months like 'July 28, 2026' or '28 July 2026'. Ambiguous numeric dates such as 05/06/2026 are read month-first (May 6) unless the first number is over 12 — so if your sheet is day-first, the preview is where you catch it. ISO or a written-out month is never ambiguous.

Do times need AM/PM?

No — both conventions work. 9:00 AM, 14:30, 9am and even 'noon' are all understood. Times are combined with the timezone you pick in the options, and the .ics carries that timezone with proper DST rules.

Can rows become recurring events?

Not from the spreadsheet alone — each row becomes one single event, because a cell can't express a recurrence rule reliably. For repeating events, generate the .ics here and add RRULE lines afterwards; our guide to creating ICS files by hand shows the exact syntax.

My workbook has several sheets — which one is used?

Only the first worksheet. Move your event table to sheet 1 (or copy it into a fresh workbook) before converting. Title rows above the real headers should be deleted too, so row 1 is the header row.

Does this work with Google Sheets?

Yes — either way. File → Download → Microsoft Excel (.xlsx) and drop that file here, or download as .csv; both land in the same converter. The .xlsx route preserves the sheet exactly as displayed.

Keep reading