ICS Filter
BetaKeep only the events you want from one .ics calendar. Filter by a date range, a keyword, a category or a status, drop cancelled events, then download the smaller calendar to import, or the events it removed as their own file. On this page, the calendar is read in your browser and nothing is uploaded.
- Free, no sign-up
- REST + MCP
- Updated
- Reviewed by Olgun Ozoktas
Matches SUMMARY, DESCRIPTION or LOCATION.
An event is kept only when it matches every filter you set. Leave a field empty to skip it.
The filtered calendar will appear here.
How to Filter an ICS File
-
Export the calendar as .ics
In Google Calendar, Settings > Import & export > Export. Apple Calendar: File > Export. Outlook: File > Save Calendar. -
Drop the .ics file on the page, or click to choose it
-
Set the filters you need
a From and To date, a keyword, a category, a status. Drop cancelled events is on by default. An event must match every filter you set. -
Check the counts under the output, then download the filtered .ics
Download removed.ics as well if you want a record of what was left out.
Common Use Cases
Import limits
Projects
Clean-up
Sharing
Audits
Why Filter an ICS File?
The filters combine with AND. The date range keeps an entry when any part of it touches the days from From to To, inclusive, compared with the wall-clock time the file states for that entry. Either end may be left empty. The keyword is matched without regard to case in SUMMARY, DESCRIPTION and LOCATION. The category is matched against the CATEGORIES values, and the status against the STATUS line. With Drop cancelled events on, an entry with STATUS:CANCELLED is removed; choosing the Cancelled status keeps only those entries instead.
A recurring series is judged by its main event and kept or removed as a whole. For the date range, the series is kept when at least one occurrence falls in the range, worked out from the RRULE, RDATE and EXDATE, or when one of its moved occurrences does. The rule is copied as it is, and the moved and cancelled occurrences that belong to a kept series stay with it. A rule with parts the expansion does not support, such as BYSETPOS, is kept when it starts before the range ends, and a note says so. To cut a series down to the occurrences in a range, use ICS Expand RRULE.
The filtered calendar keeps the header of the source with a new PRODID, every property of every kept entry as read, and the VTIMEZONE blocks the kept entries use. The removed entries can be downloaded the same way, as their own calendar.
How it compares
Calendar apps can delete events one at a time or a whole calendar at once, but not "everything before July" or "everything that mentions Acme". Converting to a spreadsheet makes the filtering easy and the way back hard: the recurrence rules, time zones and alarms do not survive the round trip. This page filters the calendar file itself and writes a valid .ics with every property intact.
Filter Tips
- Dates are inclusive: From 2026-10-01 To 2026-12-31 keeps everything that touches any of those days, including an event that starts on 30 September and ends on 1 October.
- A recurring series is kept whole when at least one of its occurrences falls in the range. Its rule is copied as it is; use ICS Expand RRULE when you need one event per occurrence.
- A moved or cancelled occurrence of a kept series stays with it, so the occurrence stays moved or cancelled after the import.
- Category accepts several names separated by commas; an event with any one of them matches.
- An event with no STATUS line matches only the Any status.