Empty folder report
Folders the clean-up would remove
The dry run for Remove empty folders. It lists every empty folder the clean-up would move to the recycle bin, including the ones that are not empty yet but become empty once the empty folders inside them have gone. Nothing is removed, so this is the version you send to a data owner before anyone agrees to anything.
What it tells you
- Exactly which folders would go, with the path and the full server-relative URL of each.
- Which of them are empty outright and which only become empty once their empty children are removed. That distinction is the whole reason a first look at a library undercounts.
- What a cut-off date would protect: set one and recently touched folders move to their own sheet with the reason they were kept.
- Anything that could not be scanned, and why, rather than a quietly shorter list.
How it runs
- Sign in and pick a scope. Clicking the tile asks which account to use and how to connect, signs you in if you are not already, and drops you straight on the site list. No feature page asks you to connect a second time. Sites, libraries or individual folders.
- Set the options. Include subsites, and optionally a cut-off date so anything modified since then is left alone.
- It scans, bottom up. Working from the deepest folder outwards is what finds the folders that only become empty once their children go.
- Save the workbook. Then, if you agree with it, run Remove empty folders from Optimise Storage Tools.
How it works
Only document libraries are read. With subsites included, a whole site expands into its subsites; a library you tick by name is read even if it is hidden or a system library. Each library is read in one pass, folders and files together, recording each folder's path and when it was last changed. The library's Forms folder and everything under it are ignored.
The verdict is worked out from that one read, from the deepest folder upwards. A folder qualifies when nothing is filed directly in it, it was not changed after your cut-off date, and every folder inside it also qualifies. A folder with no subfolders at all is reported as empty; one whose subfolders would all go is reported as empty after cascade. A folder changed after the cut-off is kept, and so is every folder above it, and those appear on the cut-off sheet with the reason.
A library that is only partly read is not reported at all, because a short read would make folders look emptier than they are; it is listed as skipped with the reason instead. The same goes for a library whose top folder cannot be read. Other libraries carry on. The workbook goes into History when the run ends.
What you get
An Excel workbook, named like contoso-empty-folder-report-20260901-142207.xlsx, kept in Report History whether or not you save it. The Emptiness column is the one to read: it separates folders that are empty now from folders that become empty as a consequence.
Summary sheet
Scope, options, counts, and anything that could not be scanned.
Folders sheet
Every folder the clean-up would remove.
| Column | Example |
|---|---|
| Site | Contoso Projects |
| Site URL | https://contoso.sharepoint.com/sites/projects |
| Library | Shared Documents |
| Folder path | Clients/Northwind/2019 |
| Folder name | 2019 |
| Depth | 3 |
| Last modified | 2021-03-08 |
| Emptiness | Empty after cascade |
| Outcome | Would be moved to the recycle bin |
| Full URL | /sites/projects/Shared Documents/Clients/Northwind/2019 |
Kept by cut-off date sheet
Only when you set a cut-off. Folders that qualified but were protected, and why.
| Column | Example |
|---|---|
| Folder path | Clients/Fabrikam/Draft |
| Last modified | 2026-08-27 |
| Why it is kept | Modified after the cut-off date |
What you need
- Read access to the libraries in scope. The report itself needs nothing more, because it does not remove anything.
What it will not do
- A folder holding only hidden or system items is not empty, and is not listed.
- The library is live while you read the report. A folder listed as empty this morning may have a file in it this afternoon, which is why the removal run re-checks each folder before touching it and leaves alone anything that is no longer empty.
- This report changes nothing. The removal is a separate, deliberate run.