| 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 Delete all items in a list | Yes (created or modified date, name, size) | Yes | No | Yes (exact count) |
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 ShareMaster
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: Delete all items in a list
ShareMaster's Delete all items in a list empties a list, or only the items you narrow it to: created before a date, modified before a date, a name pattern, or a size range. A preview always runs first and reports the exact count, and the delete then runs across the full result set without a page-by-page limit or a script to author. The list itself is kept. By default every item goes to the recycle bin, so a bad filter is still recoverable within the retention window; a permanent delete is available too, behind a second confirmation.
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 Delete all items in a list |
| You want to preview matches before committing to the delete | PnP PowerShell (scripted) or ShareMaster |
See ShareMaster's storage clean-up tools for list items, library files, empty folders and duplicates.
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 ShareMaster's Delete all items in a list, whose preview reports the exact count before the bulk delete runs.
Last updated