ICS viewer, calendar merger & ICS to CSV
Inspect and merge ICS files locally. Audit recurring events, exceptions and timezones, select event versions, and export a calendar plus CSV snapshots.
Calendar File Desk
The original files stay untouched. Use the selector after inspection to include complete UID series and resolve competing versions before importing the result.
Supported scope: 8 UTF-8 ICS files · 10 MiB combined · 2,000 event components · 64 KiB unfolded property · 366-date preview window · 5,000 output occurrences / 50,000 iterator steps · one-minute worker limit. Event-only ICS export. Embedded timezone conversion: 1900–2100 with yearly observance rules. DAILY/WEEKLY/MONTHLY/YEARLY expansion; unsupported rules stay in ICS with clear snapshot warnings.
Calendar sources and preview window
Required fields are marked with an asterisk.
Your result
Review your output, then save it to your device.
Make the next step clear.
Your findings, assumptions and next steps will appear here after you run the check.
Calendar File Desk · https://calendar.kitforma.com/ · KitForma
Recurring rules and exceptions retained in ICS
Explicit UTC, embedded-zone, floating and all-day handling
Selected ICS, two CSV views and migration audit
Understand the evidence.
Focused guides explain the rules, the edge cases and the checks worth doing before you act.
Keep timezone and all-day meaning during calendar migration
Read UTC, embedded zones, floating times and exclusive end dates correctly.
Read the guide ↗Field guide / 02Merge ICS files without hiding duplicates and exceptions
Use UID identity, explicit version choices and a retained recurrence audit.
Read the guide ↗Field guide / 03Use ICS and CSV for the jobs they can actually preserve
Create one-off events, inspect bounded snapshots and recognize unrecoverable data.
Read the guide ↗Before you start
Will this connect to my Google, Apple or Microsoft account?
No. You supply exported ICS files or local text. Parsing and conversion run on your device; no login, platform approval or calendar API is needed. The tool does not send invitations or import changes into an account.
Why are the ICS and occurrence CSV different?
ICS retains selected event components and their recurrence rules, exclusions and exceptions. The occurrence CSV expands only the chosen date window within stated limits. It is a snapshot, not a replacement for recurring-calendar structure.
Does matching a UID mean two records are duplicates?
No. UID plus RECURRENCE-ID identifies the relevant event or instance. Identical component copies collapse; different versions need a choice. The optional newest policy compares SEQUENCE and DTSTAMP but does not prove which source is authoritative.
Can you convert every named timezone to UTC?
Only a UTC value or an embedded usable VTIMEZONE definition can provide a UTC result here. Embedded conversion is bounded to 1900–2100 and yearly observance rules. Missing or unsupported zone definitions remain explicitly unresolved. Floating times have no assigned timezone, and all-day dates are not shifted to UTC.
What can calendar repair actually fix?
The tool normalizes supported UTF-8 folding and line endings. If explicitly enabled, it can generate missing UID metadata for a non-recurring event or a current missing DTSTAMP. It cannot reconstruct deleted events, historical timestamps, missing recurring identities or an unknown timezone definition.
What is intentionally outside the occurrence preview?
Sub-daily rules, RDATE periods, legacy EXRULE, RANGE exceptions and incompatible recurrence-date types are preserved in selected ICS but not expanded. The audit also marks exhausted limits and detached exceptions. CSV creation accepts one-off UTC, floating or all-day events only.
Sources & assumptions
Formats, algorithms and supported features are documented below. Check the stated scope and inspect your output before using it.
- RFC 5545 — iCalendar ↗
Date types, exclusive end dates, recurrence sets, identifiers, timezones and content-line folding.
- RFC 6868 — parameter value encoding ↗
Caret escaping for quoted parameter values, implemented by the maintained parser.
- ICAL.js documentation ↗
Version 2.2.1 parser and recurrence engine. Its stock distribution has no complete timezone database.
- Calendar engine license and source ↗
Unmodified MPL-2.0 library, full corresponding source archive and exact release provenance.
Reviewed 2026-10-18. Read our methodology or report an issue.