CalendarPrep / 01WORKSPACE

CSV to ICS converter

CSV to ICS converter — Conversion stays in browser memory.

WORKSPACE / 01CSV → ICS

1CSV source

UTF-8 comma CSV; 5 MiB, 2,000 rows, 64 columns, 32,768 characters per cell. Gregorian dates, ASCII digits and HH:mm only.

2Confirm column mappings

Recurrence

Timezone: IANA 2026b · 1970–2100

Import into your calendar

Export a spreadsheet as UTF-8 comma CSV. Load or paste it, map title and start date, then explicitly choose date format, mode, timezone and recurrence. Times use 24-hour HH:mm. Overnight events need a later end date. All-day end is the last included day; ICS stores the following date.

Keep original birth dates privately. Create a separate start_date: 1960-05-12 → 2027-05-12, all-day YEARLY. For an original leap birthday use 2028-02-29, then 2032-02-29. February 28 or March 1 must be your deliberate choice. Age calculation and original birth-year import are outside scope.

On desktop Google Calendar open Settings → Import & export → Import. Select events.ics and a disposable target calendar, then Import. Inspect dates and first/last occurrences. This is an import, not a subscription or ongoing sync. Guests and conferences are not transferred. Apple/Outlook compatibility is unverified.

Repeated imports may duplicate events; UIDs do not guarantee updates. Keep your CSV and UID column privately. If the destination rejects file size, split source rows into separate files without splitting a series. Output byte size is shown; the destination limit is unverified.

When a tool states that file processing is local, its conversion code does not send selected file contents, filenames, local searches, or generated results to Google. Page and advertising requests may still send ordinary browser, device, and request data, so local file processing does not mean that no data leaves the browser. Google and its partners may use cookies and information about current or previous visits to this or other sites to serve and personalize ads. Manage or opt out of personalized ads at https://adssettings.google.com/ and learn how Google uses information from partner sites at https://policies.google.com/technologies/partner-sites

Choose the event location timezone to preserve start wall time. UTC stays UTC. Repeated events keep initial elapsed duration, so end wall time can shift at daylight saving. Timezone data follows published rules; political changes require updated data and re-export. Save your CSV privately; bookmark or share only the public tool URL.

Cloudflare Web Analytics separately processes page visits, browser/device details and page-load performance. CalendarPrep has no product success-event analytics adapter, and conversion code does not send CSV contents, filenames or generated results as analytics events. Its external script runs in the page and may access rendered content. Collection details: https://developers.cloudflare.com/web-analytics/data-metrics/data-origin-and-collection/

Google Calendar · Import into your calendar · Privacy

Questions and guidance

Why did repeats disappear? CSV imports may become one-off events. This tool writes an ICS RRULE.

Why are dates skipped? Day 31, leap-day and daylight-saving gap occurrences may not exist. They are skipped without consuming count.

How do I repair errors? Edit the row or mappings, or explicitly exclude the row; validate again. Reports contain only row numbers and fixed codes, never your values.

Why only ten previews? Preview covers at most ten starts within one year. The exported rule is not truncated. A leap birthday sample previews 2028-02-29 only, but exports the next 2032 occurrence too.

Class sample: 2027-03-01, 2027-03-08 and 2027-03-15 at 09:00 UTC. Birthday sample: 2028-02-29 and 2032-02-29, all-day.