| Approach | Filter before delete | Works past 5,000-item threshold | Scripting required | Preview before executing |
|---|---|---|---|---|
| Native browser multi-select | View filters only | No | No | Manual review only |
| PnP PowerShell | Yes (CAML / Where-Object) | Yes | Yes | Yes, if scripted separately |
| ShareMaster Space Master | Yes | Yes | No | Yes |
Three ways to remove a large number of items from a SharePoint Online list, from the built-in browser selection to a scripted approach to a dedicated desktop tool. The right choice depends on how many items you are removing, whether you need a repeatable filter, and how comfortable you are scripting against the SharePoint APIs directly.
Side by Side: Native Browser vs PnP PowerShell vs Space Master
Native browser multi-select
Every SharePoint list supports selecting items with checkboxes in list view and clicking Delete from the command bar. This works well for small, one-off cleanups where the items you want are visible on a single page. The header checkbox selects everything currently loaded, not everything in the list, so libraries with more than a page of results require repeating the selection across every page. The list view threshold, 5,000 items by default, blocks any filtered or sorted view from loading at all once the underlying data set is large enough, which forces admins into narrower views or indexed columns just to see what they are trying to delete.
PnP PowerShell
Get-PnPListItem combined with a CAML query or a Where-Object filter can retrieve items past the list view threshold and pipe the results into Remove-PnPListItem. This is the most flexible option and the only one that gives full control over throttling behaviour, batching, and logging, at the cost of needing a script written, tested, and run correctly against the right list.
# Find and remove items older than a cutoff date
$items = Get-PnPListItem -List "Project Tracker" -Query "<View><Query><Where><Lt><FieldRef Name='Created'/><Value Type='DateTime'>2025-01-01T00:00:00Z</Value></Lt></Where></Query></View>"
$items | ForEach-Object { Remove-PnPListItem -List "Project Tracker" -Identity $_.Id -Force }
The script above is a starting point, not a finished tool. Production use needs error handling for throttled requests, a dry-run mode that reports the match count before deleting anything, and a way to confirm the target list and site before the loop executes.
ShareMaster Space Master
Space Master's Bulk Delete List Items tool applies a filter across a list, shows the matching items before anything is removed, and runs the delete across the full result set without a page-by-page limit or a script to author. Deleted items follow the same recycle bin path as any other SharePoint deletion, so a bad filter is still recoverable within the retention window rather than being an immediate, unrecoverable loss.
Decision Matrix
| Your situation | Best approach |
|---|---|
| Under a few hundred items, all visible on one or two pages | Native browser multi-select |
| You need a repeatable, auditable script for a recurring cleanup job | PnP PowerShell |
| Large list, filter-driven cleanup, no scripting resource available | ShareMaster Space Master |
| You want to preview matches before committing to the delete | PnP PowerShell (scripted) or Space Master |
See how Space Master's storage tools handle bulk cleanup across list items, files, and empty folders in one connected session.
Frequently Asked Questions
Can I select and delete more than 5,000 SharePoint list items at once?
Not through the native browser view in a single pass. The list view threshold prevents a filtered or sorted view over 5,000 items from loading, and the header checkbox only selects items on the current page. Removing items past that threshold needs an indexed query, either through PnP PowerShell or a dedicated tool.
Do deleted SharePoint list items go to the recycle bin?
Yes. Whichever method you use, standard deletion sends the item to the site's first-stage recycle bin, where it stays recoverable for the usual retention window before moving to the second stage.
What is the safest way to bulk delete SharePoint list items by a filter condition?
Review the filter's matches before running the delete. Run the query alone first in PnP PowerShell and check the count and sample rows, or use a tool like Space Master that shows a preview of matched items before the bulk delete executes.