How to use the ics calendar file merger
- Choose two or more .ics files. Each file is listed with its number of events, and you can remove any of them.
- Optionally set the date range, a name for the merged calendar, and whether to save one file per year in a ZIP.
- Check the counts: events in all files, duplicates removed, events outside the range and events in the merged file.
- Choose Merge and download. Import the result into your calendar program and check a few events.
How duplicates are decided
Each event in an iCalendar file has a UID, a unique name, and edited instances of a repeating event also carry a recurrence ID. Two events are the same when both match. If a UID appears in more than one file, the copy with the higher SEQUENCE number is kept, and when those tie, the newer LAST-MODIFIED time and then the newer DTSTAMP decide. Events with no UID are compared by title, start, end and place. An edited instance of a repeating series is a separate event from the series itself, so both are kept.
A date range looks at the date written in the DTSTART line, without converting time zones. A repeating event is kept when it starts on or before the end date, because it can fall in the range later. All-day events are compared by their date.
What the merged file contains
Every event line is copied as written, long lines are folded at 75 bytes without splitting a character, and each time zone definition is added once. When two files define the same time zone name differently, the first definition is used and the page counts the conflict. The calendar-level method line (such as a published request) is dropped, and to-do items, journal entries and free/busy blocks are not copied, with their number shown. The merged file is built with plain line breaks that every calendar program reads.
To read a calendar as a table, use the ICS to CSV converter; to build links for single events, the add to calendar link generator. The tool uses only what is in the files.
Assumptions and limits
- The files are iCalendar files that begin with BEGIN:VCALENDAR. Calendar subscriptions that are web addresses are not fetched.
- The UID uniquely identifies an event across your calendars, which is how well-behaved programs create them.
- Time zone definitions with the same name describe the same zone.
- Up to 100 files of 25 MB and 50,000 events are merged in one go.
Frequently asked questions
Will merging change my event times?
No. Event lines are copied as they were, including the time zone each event uses. Only the order of the events changes, to start date, and duplicates are removed.
Why did I get more events than I expected?
Calendars exported from different programs can give the same meeting different UIDs, so it looks like two events. Compare by title and time in your calendar program, or merge with a date range to narrow the file.
What happens to reminders?
Alarms are part of an event and are copied with it. When two copies exist, the alarms of the copy that is kept are used.
Why save one file per year?
Very large calendars import slowly in some programs. A ZIP with one .ics file per start year is easier to import in pieces. Repeating events go in the file for the year in which they start.