---
title: "ICS Privacy Scrub"
description: "Take the private details out of an .ics calendar export before you share it. Choose, field by field, whether to keep, generalize or remove titles, descriptions, locations, links, attendees, organizers, attachments, comments and categories; event times and recurrence rules stay as they are. On this page, nothing is uploaded."
url: https://findutils.com/convert/ics-privacy-scrub/
category: convert
---

# ICS Privacy Scrub

Take the private details out of an .ics calendar export before you share it. Choose, field by field, whether to keep, generalize or remove titles, descriptions, locations, links, attendees, organizers, attachments, comments and categories; event times and recurrence rules stay as they are. On this page, nothing is uploaded.

**Use this tool:** [ICS Privacy Scrub](https://findutils.com/convert/ics-privacy-scrub/)

## Programmatic access

- REST id `ics-privacy-scrub`: POST https://api.findutils.com/api/tools/ics-privacy-scrub/execute (reference: https://findutils.com/api/ics-privacy-scrub/)
- MCP tool `ics_privacy_scrub` on https://mcp.findutils.com (reference: https://findutils.com/mcp/ics-privacy-scrub/)
- Data: The REST API and the MCP tool are a separate path from this page: a call sends the input you include to FindUtils over HTTPS, where it is processed and the result returned. FindUtils does not store that input, and logs the request without its content.

## Why Scrub an ICS File Before Sharing It?

A calendar export carries far more than when you are busy. Each event can hold a client's name in the title, a Zoom or Meet link with its password in the description, the office address, every invited person's email address, the organizer, attached documents and a reminder. Sharing that file to show a colleague, an assistant or a scheduling partner when you are free hands all of it over. The manual fix is opening the .ics in a text editor and deleting DESCRIPTION, ATTENDEE and URL lines one event at a time, without breaking the folded long lines. This page applies the field rules you choose to every event in the file, keeps the times and recurrence rules, and writes a calendar that imports like the original.

## Scrub Tips

- Keep on a field means the value is copied exactly; the line under the preview warns when kept titles or people still identify the events.
- Generalize writes Private for a description, location, comment or category, numbered stand-ins such as Attendee 1 for people, and only the scheme and host of a link, such as https://zoom.us/.
- Links covers URL, CONFERENCE and the vendor meeting-link properties Google and Microsoft write, so a Meet or Teams link goes with the Zoom one.
- Shift dates by a multiple of 7 days when events repeat on weekdays; any other shift moves the first occurrence off its weekday.
- Recurrence rules, exception dates and moved occurrences are kept as they are; nothing is expanded into separate events.

## Frequently Asked Questions

### What does ICS Privacy Scrub remove by default?

By default every title becomes Busy, and the description, location, links, attendees, organizer, attachments, comments, alarms and vendor X- properties are removed. Categories are kept. Every UID is replaced, every event is marked CLASS:PRIVATE, and the calendar's name is dropped. Start and end times, durations, recurrence rules, exception dates, status and busy or free status stay exactly as they were.

### What is the difference between Keep, Generalize and Remove?

Keep copies the field unchanged, Remove deletes it, and Generalize replaces it with a neutral value. A generalized title becomes the Busy title you set; a description, location, comment or category becomes Private; each attendee or organizer becomes a numbered stand-in such as Attendee 1 with an example.invalid address; a link keeps only its scheme and host, such as https://zoom.us/. Each field has its own rule.

### Are recurring events and their exceptions kept?

Yes. The RRULE, RDATE and EXDATE lines are copied as they are, and a moved or edited occurrence, which shares its series' UID and adds a RECURRENCE-ID, is scrubbed with the same rules and keeps its link to the series. When New UIDs is on, the series and its occurrences get one new UID together. Recurrences are never expanded into separate events.

### Why does the scrubbed file get new UIDs?

Because a calendar app matches an imported event to one it already holds by UID. Importing a scrubbed copy with the original UIDs into the same calendar would update the original events, and could overwrite their titles with Busy. New UIDs gives every event a random UUID so the copy is added as new events. Turn it off when you want the UIDs preserved.

### How does Shift dates work?

Shift dates moves every start, end, due date, exception date, recurrence date, moved-occurrence identifier, recurrence end (UNTIL) and absolute alarm time by the number of whole days you enter, forward or back, up to 3650. Each value keeps its time zone and its clock time. Use it for a demo copy of a real calendar. A shift that is not a multiple of 7 days moves a weekly event off its weekday, and the page says so.

### Which properties do Links and Other details cover?

Links covers URL, CONFERENCE and the vendor properties that carry meeting links, such as X-GOOGLE-CONFERENCE and Microsoft's Teams and Skype URLs. Other details covers CONTACT, RESOURCES, every other X- property on an event, and the calendar's own X-WR-CALNAME and X-WR-CALDESC. The calendar time zone hint, X-WR-TIMEZONE, is always kept because floating times depend on it.

### Is the scrubbed calendar fully anonymous?

No, and the page does not claim it is. With the defaults the file still shows when you are busy, how long each event lasts, how often it repeats and its category. Any field you set to Keep is copied as it was: a kept title such as Lunch with Deniz still names a person, and the page warns you when kept titles, descriptions or people remain. The times alone can still say something about you.

### Can I scrub several calendars at once?

Yes. Drop several .ics files and the same rules apply to each. A file that is not a calendar is reported next to its name and the others are still scrubbed. The download is then a ZIP with one scrubbed .ics per file and a summary.txt listing, for each input, how many entries were scrubbed, how many properties were removed or generalized, and why any file was skipped.

### How is this different from ICS Busy/Free?

This page keeps each event's shape and lets you choose per field, so you can keep categories or generalized attendees. [ICS Busy/Free](https://findutils.com/convert/ics-busy-free/) builds a pure availability file with no choices: Busy events with nothing but their times, or a single VFREEBUSY list of busy periods. Use Busy/Free when all you want to share is when you are free.

### Is my calendar uploaded when I use this page?

Not on this page. The files are read and scrubbed in your browser, and you can confirm in the browser's network panel that no request carries the calendar text. The page never fetches a calendar URL either: it scrubs the files you drop. The REST API and MCP tool are a separate path: a call sends the input you include to FindUtils over HTTPS, where it is processed and the result returned. FindUtils does not store that input, and logs the request without its content.

### Can I scrub a calendar from a script?

Yes. The same code runs on the FindUtils REST API and MCP server as the ics_privacy_scrub tool. Send the .ics text as input, set any of summary, description, location, url, attendee, organizer, attach, comment and categories to keep, generalize or remove, and read the scrubbed calendar from the ics field with the per-field counts, the preview and the notes.

## Related Tools

- [ICS Busy/Free](https://findutils.com/convert/ics-busy-free/)
- [ICS Timezone Convert](https://findutils.com/convert/ics-timezone-convert/)
- [Merge ICS](https://findutils.com/convert/merge-ics/)
- [Split ICS](https://findutils.com/convert/split-ics/)
- [ICS to JSON](https://findutils.com/convert/ics-to-json/)
- [ICS to CSV](https://findutils.com/convert/ics-to-csv/)
