Delete all events in Google Calendar when you start the calendar over
There are only a few reasons to want a calendar emptied. A former job's meetings are still arriving in the grid. A test account got used for real work. An import ran twice and every event exists in duplicate. Or the calendar has simply become unreadable and starting clean looks faster than repairing it.
Google Calendar has exactly one bulk deletion for events, it is hidden behind a button that appears to do something else, and it is all or nothing. Understanding the shape of that limitation before starting saves a long evening of clicking.
What Google offers, and what it does not
The absence is the important part. Google Calendar has no multi-select on the grid, no delete by date range, and no way to remove every event matching a search term. Selecting January to March and clearing it is not an operation the product has.
What exists is two coarse instruments.
| Action | What it removes | What it leaves | Reversible |
|---|---|---|---|
| Clear the primary calendar | Every event on it, past and future | The calendar itself, and all other calendars | Treat as permanent |
| Delete a secondary calendar | The calendar and everything on it | Every other calendar | No, and it goes for everyone it was shared with |
| Delete a recurring series | All occurrences in that series | Everything else | Only the single-occurrence case |
| Hide a calendar | Nothing | Everything, just out of sight | Yes, immediately |
The fourth row is the one most people should reach for and do not, and the rest of this comes back to it.
Google's own instruction for a full wipe treats it as a two part job: clear all events on the primary calendar, then delete any other calendars that are owned. That phrasing is worth reading closely, because it means a single action never empties an account.
Emptying the primary calendar, and the button that scares people off
The control is in an unexpected place. Hover over the primary calendar in the list at the bottom left, open its options, and go to Settings and sharing. Under the settings for owned calendars there is Remove calendar, and inside that, Delete.
That label is why the operation goes undiscovered. It reads as though it will destroy the calendar itself, which is not possible: Google states that a primary calendar cannot be deleted, only emptied of its events. Clicking Delete under Remove calendar on a primary calendar deletes the events and leaves the calendar in place, with its name, its colour, its sharing settings and its notification defaults untouched.
Two caveats follow from that. The scope is exactly one calendar, so events that live on a secondary calendar, a shared team calendar or a subscribed holiday feed are unaffected. And it takes the past with the future. There is no version of this that keeps last year. For an account where the calendar doubles as a work diary, that is a reason to consider the alternative in the final section rather than this one.
It is also worth noting what the trash documentation does and does not cover. Deleting an event, or having it marked as spam, puts it in that calendar's trash for 30 days where it can be restored. Google does not describe the bulk clear as landing in the trash, so the only safe assumption is that it does not. Plan for it being permanent.
Secondary calendars are the real lever
The ownership rules around secondary calendars are the part that makes bulk cleanup manageable, and they are easy to get wrong.
As the owner of a secondary calendar, deleting it is permitted and it takes every event with it. If that calendar was shared, it is removed for everyone it was shared with, not just from the owner's view. That is a genuine consequence and not a technicality, and it argues for checking the sharing settings before deleting a calendar that has been around for a while.
An owner cannot unsubscribe from their own secondary calendar. Hiding it is possible, but removing it for real means either transferring ownership or deleting it permanently. Someone who is not the owner has the opposite position: they can unsubscribe to take it off their list, and afterwards cannot get it back unless the owner, or someone with manage sharing permission, shares it again.
The practical lesson runs backwards from all this. Any batch of events that might later need removing as a batch should go onto its own secondary calendar in the first place. An imported roster, a set of trial bookings, a holiday feed for a country that turned out to be the wrong one. Undo then costs one click instead of an evening, and the primary calendar is never at risk. The same habit applies to a spreadsheet import, where a second run duplicating every event is the standard failure.
Backing up, because there is no undo at this scale
Google Calendar exports from a browser, not from the mobile app. All calendars at once produces a .zip file containing one .ics per calendar. A single calendar exports as one .ics from its own settings page. The export requires the "Make changes and manage sharing" permission on the calendar, which matters when part of the mess belongs to someone else.
Two minutes spent on that export is the entire insurance policy for an irreversible operation. An .ics file can be imported back into Google Calendar, although the reimport is not a perfect restore: guests and conference data are not carried by an import, so meeting links and attendee lists do not come back. That asymmetry is worth knowing before treating the export as a full undo button.
For a calendar that mostly contains solo blocks and personal appointments, the export is close to a complete backup. For a calendar of client meetings with guests, it preserves the record of what happened and not the ability to recreate the invitations.
When only some events have to go
Most searches for a full wipe are really about a subset, and the honest answer is that the subset case is worse served than the total one. Four routes exist, with genuinely different costs.
| Route | Fits | Effort | Risk |
|---|---|---|---|
| Delete the series, once | Events that came from one recurring rule | Seconds | A truncated series cannot be restored |
| Delete the calendar they sit on | Batches that were imported to their own calendar | Seconds | Removes it for everyone it was shared with |
| Script against the Calendar API | Anything defined by a date range or a search | Hours, plus a maintainer | Deletions are not individually reversible |
| One at a time in the browser | Fewer than about fifty events | Minutes | Slow, and easy to miss some |
The third row is the only one that answers a question like every event before last January. The Apps Script Calendar service can list events in a date range and delete them, and it can be run from a spreadsheet by anyone comfortable with a small amount of code. The caution that applies is the same one Google gives for recurring series: deleting occurrences of a repeating event one by one creates a stored exception for each, which clutters the calendar and produces a change notification per deletion, so a script should target whole series rather than instances wherever it can.
The fourth row deserves less scorn than it gets. Switching to a list or agenda view, where events appear in order rather than spread over a month grid, makes manual deletion considerably faster than clicking around a month at a time. On a Mac, a calendar that offers a list view and a right click delete does this job in a fraction of the time the browser takes, and Features covers which views are available.
What a full clear does not touch
An account that has been cleared and still looks busy is the normal outcome, not a failure, because several things on the grid are not events on the calendar that was cleared.
Tasks are the first. They appear on the calendar when they carry a date, but they live in Google Tasks and are switched on and off with their own Tasks entry in the calendar list. Clearing a calendar does not complete or delete a single task, and uncompleted ones from the last 365 days keep surfacing in the pending list.
Subscribed feeds are the second. Public holidays, sports fixtures and any calendar added from a webcal or ICS address sit under other calendars rather than under owned ones. They are not emptied by clearing a primary calendar and are not removed by deleting a secondary one. Unsubscribing is the action for those.
Invitations from other people are the third, and the most confusing. An event created by a colleague and accepted here is on this account's calendar, so a clear removes the local copy, but it does not decline anything and it does not stop the organiser sending updates. Anything still active on their side can reappear.
Finally, other devices lag. A cleared calendar can keep showing events on a phone until that device syncs, which on iOS means closing and reopening the Calendar app and on Android means the refresh action in the menu. Checking the browser is the only reliable confirmation that the clear actually took effect.
The alternative that is almost always better
Before emptying anything, consider that the goal is usually a readable calendar rather than an empty one.
Creating a new calendar, setting it as the default destination for new events, and hiding the old one achieves that in about a minute, with no deletion at all. Google provides three separate levels for getting a calendar out of the way, and they are often confused. Clicking a calendar's name in the list hides and shows it, which is the right tool for something checked occasionally. Hide from list removes it from the sidebar entirely while keeping it available to bring back from Settings. Deleting or unsubscribing is the permanent one.
The history stays intact and searchable, the grid is clean, and the decision is reversible on any morning when last year's meetings turn out to have been needed after all. For an account that was inherited, or one where a previous role's events are the problem, this is almost always the right answer.
One specific version of the problem has a different fix. If the unwanted events are invitations from strangers rather than old meetings, deleting them does not stop more arriving. The setting that controls it is under event settings, where invitations can be added to the calendar from everyone, only when the sender is known, or only after a response to the invitation email. Changing it applies to new invitations only, so a cleanup is still needed once, but only once.
What to change first
Take the export before anything else, then decide whether an empty calendar or a clean one is actually the goal. If it is a clean one, create a new calendar, make it the default for new events, and hide the old one instead of clearing it. Keep the primary calendar clear for the case where the events genuinely have to be gone.
For the manual subset case, switching to a list view is what makes it tolerable. Caltimate gives a Mac an ordered list view with right click delete, which turns an evening of clicking into a few minutes.
Frequently asked questions
Is there a way to select several events and delete them at once?
Not in Google Calendar itself. There is no multi-select on the grid and no delete by date range. The only bulk actions are clearing the primary calendar entirely, deleting a secondary calendar with everything on it, or deleting a recurring series in one go.
Does clearing the primary calendar delete the calendar as well?
No. A primary calendar cannot be deleted, only emptied. The button is labelled Remove calendar, which makes it look otherwise, but on a primary calendar it removes every event and leaves the calendar itself with its name, colour and sharing settings intact.
Can events be recovered after a bulk clear?
Treat it as permanent. Individually deleted events sit in that calendar's trash for 30 days, but Google does not describe the bulk clear as going to the trash, so the only reliable safeguard is an .ics export taken beforehand. Note that an .ics reimport does not restore guests or meeting links.
What happens to a shared calendar when its owner deletes it?
It is removed for everyone it was shared with, not only from the owner's list. An owner cannot unsubscribe from a calendar they own, so the choices are to hide it, transfer ownership, or delete it for all parties. Anyone who is not the owner can simply unsubscribe.
How do you delete only the events from before a certain date?
There is no built-in way. The realistic options are to delete whole recurring series where the events came from one rule, to delete a calendar if that batch has its own, or to run a script against the Calendar API that lists a date range and deletes what it finds.