ICS Privacy Scrub
BetaTake 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.
- Free, no sign-up
- REST + MCP
- Updated
- Reviewed by Olgun Ozoktas
What happens to each field
Generalize swaps the value for a neutral one: a title becomes Busy.
Title
SUMMARY
Description
DESCRIPTION · X-ALT-DESC
Location
LOCATION · GEO
Links
URL · conference links
Attendees
ATTENDEE
Organizer
ORGANIZER
Attachments
ATTACH
Comments
COMMENT
Categories
CATEGORIES
Other details
X- properties · CONTACT
New UIDs stop the scrubbed copy from replacing the original events when it is imported. Mark private adds CLASS:PRIVATE to every event.
The scrubbed calendar will appear here.
How to Redact an ICS Calendar Export
-
Export the calendar
Google Calendar: Settings > Import & export > Export. Apple Calendar: File > Export > Export. Outlook: File > Save Calendar. -
Choose what happens to each field
The defaults turn titles into Busy, keep categories, and remove descriptions, locations, links, attendees, the organizer, attachments, comments and vendor extras. -
Drop the .ics file on the page
The chips under the file list show which fields the file carries, and the preview shows each title before and after. -
Download the scrubbed .ics, or a ZIP with a summary when you dropped several files, and share it or import it into the calendar you want to share
Common Use Cases
Share busy times with a recruiter, a client or an assistant without client names and meeting links
Hand a sample calendar to a developer or a support team as a bug report, with every person and link taken out
Publish a team's schedule as Busy blocks while keeping the events' categories for color coding
Make a demo calendar from a real one
Re-import a cleaned copy next to the original
Why Scrub an ICS File Before Sharing It?
An iCalendar event is a list of properties. A few of them say when the event happens: DTSTART, DTEND or DURATION, RRULE, RDATE, EXDATE and RECURRENCE-ID, plus STATUS and TRANSP, which say whether the time is busy. The rest say what the event is: SUMMARY, DESCRIPTION, LOCATION, URL, ATTENDEE, ORGANIZER, ATTACH, COMMENT, CATEGORIES, and the X- properties each calendar app adds, such as X-GOOGLE-CONFERENCE for a Meet link or X-ALT-DESC for Outlook's HTML description. This page keeps the first group as it is and applies your rule to each field of the second.
Keep copies a field exactly. Remove deletes it. Generalize replaces it with something neutral: the title you choose (Busy by default) for SUMMARY, Private for a description, location, comment or category, numbered stand-ins such as Attendee 1 <[email protected]> for people (the same address gets the same number throughout the file, and the role and reply status are kept), and only the scheme and host of a link. Coordinates (GEO), Apple's structured location and inline attachments cannot be generalized and are removed. Other details covers CONTACT, RESOURCES and every remaining X- property, and the calendar's own name and description, which in a Google export is often the owner's email address.
Alarms are removed by default; when you keep them, their text follows the same rules. New UIDs replaces every UID with a random UUID, and a recurring series keeps one shared UID so its moved occurrences still attach to it. Mark private sets CLASS:PRIVATE on every event. Shift dates moves every date by whole days, including UNTIL and exception dates, and never changes a time zone. DTSTAMP, CREATED and LAST-MODIFIED, which record when the file was written, stay as they are. Long lines are folded again at 75 octets.
How it compares
Deleting lines by hand works for one event. A real export has hundreds, each with a description folded across several lines, and a missed ATTENDEE or X-GOOGLE-CONFERENCE line leaks exactly what you meant to hide. Making a separate Busy calendar means re-entering every event. This page reads the format with its folding and escaping rules, applies one rule per field to every event, tells you what each file carried, and writes a calendar that imports cleanly.
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.