Administration

SharePoint Storage Cleanup: Reclaim 40% in 30 Days

A four-week storage reclaim playbook with PnP PowerShell, version-history math, tenant pool rebalancing, and Purview archive-tier migration for cold content.

SharePoint Support Team2026-06-2613 min read
SharePoint Storage Cleanup: Reclaim 40% in 30 Days - Administration guide by SharePoint Support
SharePoint Storage Cleanup: Reclaim 40% in 30 Days - Expert Administration guidance from SharePoint Support

"SharePoint says the site is out of storage." That message arrives after a project team tries to upload a deliverable, or after a finance user cannot save a workbook. The tenant admin sees 92% of pooled storage consumed, a leadership team asking for a purchase order, and no clear place to point the axe. This playbook is what our team runs during a storage crisis. It reliably reclaims 30-40% of consumed storage within 30 days without buying an add-on — and without deleting anything a business owner would miss.

Why storage runs away

Three sources dominate every storage audit we do:

SharePoint migration process workflow from planning to go-live
Step-by-step SharePoint migration workflow
  • Version history bloat — unlimited or default 500 major versions on high-churn libraries.
  • Orphaned OneDrive and stale project sites — retention lingers past business relevance.
  • Cold content that never left the hot tier — archives, historical projects, decommissioned tenants-of-tenants.

Fix these three and 40% recovery is realistic. Everything else — recycle bins, oversized single files, forgotten team-site duplicates — is worth another 5-10% but should not be the primary focus.

Week 1: baseline

The rule is: measure before you touch anything. Reclaim work is not credible without a before/after number.

Baseline metrics we capture

  • Total tenant storage consumed vs pool size.
  • Top 20 sites by consumption.
  • Top 100 files >100 MB across the tenant.
  • Version history overhead per site (approximate).
  • Orphaned OneDrive count (users deleted from Entra ID but OneDrive retention still active).
  • Recycle bin totals across all sites (stage 1 and stage 2).

PnP PowerShell — top 20 sites by storage

Use PnP.PowerShell 2.x or later, connected with an Entra app registration that has *Sites.FullControl.All*.

```powershell

Import-Module PnP.PowerShell

Connect-PnPOnline -Url "https://-admin.sharepoint.com" -ClientId "" -Interactive

$sites = Get-PnPTenantSite -IncludeOneDriveSites |

Select-Object Url, StorageUsageCurrent, StorageQuota, StorageQuotaWarningLevel, LastContentModifiedDate

$sites | Sort-Object StorageUsageCurrent -Descending |

Select-Object -First 20 |

Export-Csv .\baseline_top20_sites.csv -NoTypeInformation

```

*StorageUsageCurrent* is reported in MB. Sort descending, and the first 20 rows usually cover 60-80% of consumption. Focus reclaim work on this set.

PnP PowerShell — files larger than 100 MB by last-accessed

For each of the top-20 sites, we run this in a loop. Adjust the file-size threshold to your baseline (200 MB is often a better cut for enterprise media libraries).

```powershell

$targetSite = "https://.sharepoint.com/sites/"

Connect-PnPOnline -Url $targetSite -ClientId "" -Interactive

$largeFiles = Get-PnPListItem -List "Documents" -PageSize 2000 -Fields "FileLeafRef","File_x0020_Size","Modified","Editor" |

Where-Object { [int]$_.FieldValues.File_x0020_Size -gt 104857600 } |

ForEach-Object {

[PSCustomObject]@{

Name = $_.FieldValues.FileLeafRef

SizeMB = [math]::Round([int]$_.FieldValues.File_x0020_Size / 1MB, 2)

Modified = $_.FieldValues.Modified

EditedBy = $_.FieldValues.Editor.LookupValue

}

}

$largeFiles | Sort-Object SizeMB -Descending |

Export-Csv ".\largefiles_$($targetSite.Split('/')[-1]).csv" -NoTypeInformation

```

Two files that always show up in every scan: an old marketing team's video shoot bundle, and someone's local database backup uploaded once and forgotten. Both are candidates for archive-tier migration, not deletion.

Recycle bin totals

```powershell

$rb = Get-PnPRecycleBinItem -RowLimit 5000

$totalMB = ($rb | Measure-Object -Property Size -Sum).Sum / 1MB

"Recycle bin: {0} items, {1:N2} MB" -f $rb.Count, $totalMB

```

Stage 2 (the site-collection-admin bin) is separate. In many tenants the two-stage recycle bin quietly holds hundreds of GB.

Establish these numbers in a shared spreadsheet. Week 4's report references them.

Week 2: version history reclaim

Version history is the largest single reclaim in almost every tenant we audit. It is also the fastest.

The math on a 500 GB library

Take a real library we recently reviewed: 500 GB total, 12,000 files, average 3.2 major versions per file present, but default *500 major versions* configured. Average file size 4 MB.

  • Storage per file today: 3.2 versions × 4 MB = 12.8 MB.
  • Storage per file at cap 500 (if the churn continues): 500 × 4 MB = 2,000 MB (2 GB).
  • Immediate risk of runaway growth is real, but current bloat is modest.

Compare against a coauthored PowerPoint library: 210 GB, 800 files, average 60 versions per file present at cap 500, average file 25 MB.

  • Storage per file today: 60 × 25 MB = 1,500 MB.
  • Reducing cap to 50 major versions cuts to 50 × 25 MB = 1,250 MB per file. Small win.
  • Reducing cap to 25 major versions and running version cleanup cuts to 25 × 25 MB = 625 MB per file. Total library drops from 210 GB to ~87 GB. Recovery: 123 GB.

The real reclaim comes from combining a cap reduction with a version-cleanup run that trims existing versions past the new cap.

PnP PowerShell — reduce major-version cap and trim

```powershell

$targetSite = "https://.sharepoint.com/sites/"

Connect-PnPOnline -Url $targetSite -ClientId "" -Interactive

$list = Get-PnPList -Identity "Documents"

Set-PnPList -Identity $list -EnableVersioning $true -MajorVersions 25 -EnableMinorVersions $false

# Trim existing versions past the new cap

$items = Get-PnPListItem -List "Documents" -PageSize 500

foreach ($item in $items) {

$file = Get-PnPProperty -ClientObject $item -Property File

$versions = Get-PnPProperty -ClientObject $file -Property Versions

if ($versions.Count -gt 25) {

# Recycle all but the most recent 25

$toRemove = $versions | Sort-Object VersionLabel -Descending | Select-Object -Skip 25

foreach ($v in $toRemove) { $v.DeleteObject() }

Invoke-PnPQuery

}

}

```

Two safety notes. First, the version trim is not reversible past the site-collection recycle bin retention window (93 days by default). Second, if any of the affected files are on eDiscovery hold, the trim will fail silently for those files — expected behavior, do not "fix" it.

Run this in a maintenance window on the top 5 heaviest libraries in week 2. That alone typically recovers 15-25% of tenant storage.

Week 3: tenant storage pool rebalance and site-quota tuning

Modern SharePoint Online usually runs on the pooled storage model — sites draw from a tenant pool rather than each having a fixed quota. In tenants with legacy per-site quotas, week 3 rebalances.

Confirm pooled vs per-site model

```powershell

Get-PnPTenant | Select-Object StorageQuotaAllocated, StorageQuotaTotal, StorageQuotaAllocationMode

```

If *StorageQuotaAllocationMode* is *AutomaticQuotaGeneratedByTenant*, the tenant is pooled. If it is *ManualQuotaByTenantAdmin*, week 3 is where you rebalance.

Rebalance oversized fixed quotas

Sites with fixed 500 GB quotas that only consume 40 GB are hoarding pool capacity. Right-size to 2× current consumption for active sites, 1.1× for read-mostly sites.

```powershell

$oversized = Get-PnPTenantSite |

Where-Object { $_.StorageQuota -gt ($_.StorageUsageCurrent * 3) -and $_.StorageUsageCurrent -gt 1024 }

foreach ($site in $oversized) {

$newQuota = [math]::Ceiling($site.StorageUsageCurrent * 2)

Set-PnPTenantSite -Identity $site.Url -StorageQuota $newQuota -StorageQuotaWarningLevel ($newQuota * 0.85)

"Rebalanced {0}: {1} MB -> {2} MB" -f $site.Url, $site.StorageQuota, $newQuota

}

```

Storage quota tuning does not physically reclaim bytes on disk, but it frees the pool so growth on other sites does not trigger a false quota-exceeded event. The manage site collection storage limits doc has the model details.

Week 4: Purview archive tier migration for cold content

The last 5-10% comes from moving cold content — historical projects, closed matters, prior-fiscal-year artifacts — into archive storage that costs a fraction of hot tier.

Identify cold sites

Cold sites are typically those with last-content-modified > 24 months and unique-visitor counts below 5 per quarter.

```powershell

$sites = Get-PnPTenantSite |

Where-Object { $_.LastContentModifiedDate -lt (Get-Date).AddMonths(-24) -and $_.StorageUsageCurrent -gt 5000 } |

Select-Object Url, StorageUsageCurrent, LastContentModifiedDate

$sites | Export-Csv .\cold_sites.csv -NoTypeInformation

```

For each cold site, the sequence is: apply a records-management retention label to freeze the content, migrate to the Microsoft 365 Archive tier via the tenant admin, and update any hub navigation that referenced the site. The archive tier reduces per-GB storage cost dramatically for content that must be retained but no longer accessed daily.

Coordinate archive-tier moves with Legal and Compliance — the Purview archive guide covers the process for related Exchange content, and for SharePoint the tenant admin center's archive feature initiates the move for a site.

Week 4: final report

Close the campaign with a numeric before/after and a burn-down chart, and hand it to leadership.

  • Storage consumed at week 0 vs week 4.
  • Reclaim by source (version cleanup, recycle bin, archive, quota rebalance).
  • Sites remaining above 80% of allocated quota.
  • Purchase avoided vs planned.

The recycled headroom is not free forever. If you do not also change the versioning defaults for new libraries and set a quarterly cadence, the same tenant will be back at 92% consumption in 12-18 months. Add a governance item to the site owner checklist to review version-history caps quarterly.

Our SharePoint support team runs this playbook on retainer for enterprises with multi-terabyte tenants; the annual cost of a governed program is a fraction of a single storage add-on subscription.

FAQ

Expert help from our SharePoint consultants

Storage cleanup is easy to start and hard to finish safely — trimming versions on a file under legal hold, deleting a site that turned out to be linked from a hub, or moving cold content that Legal still needs, will each undo weeks of work. Our SharePoint consulting team runs this four-week playbook as a scoped engagement with the compliance guardrails in place. Reach out via our contact page and we will scope a program for your tenant.

Share this article:

Written by the SharePoint Support Team

Senior SharePoint Consultants | 25+ Years Microsoft Ecosystem Experience

Our senior SharePoint consultants bring deep expertise spanning 500+ enterprise migrations and compliance implementations across HIPAA, SOC 2, and FedRAMP environments. We cover SharePoint Online, Microsoft 365, migrations, Copilot readiness, and large-scale governance.

Frequently Asked Questions

How do I identify version history bloat in SharePoint Online?
Run a PnP PowerShell script that walks the top-20 sites by storage, enumerates each library, and reports the file count, the average versions per file, and the average file size. Multiply average versions × average file size × file count and compare to library storage. If the version-multiplied number is more than 50% of library storage, the library is a version-bloat candidate. Very high-churn Office document libraries with default 500 major versions are almost always the worst offenders. The [manage site collection storage limits](https://learn.microsoft.com/en-us/sharepoint/manage-site-collection-storage-limits) guidance covers the platform side.
Is it safe to trim version history in SharePoint if files might be on eDiscovery hold?
Trims run against files on eDiscovery hold will silently fail for the held versions — the platform preserves them regardless of the trim call. That is desired behavior. The risk is not that you delete held content, but that your report says "trimmed 500 GB" when the actual reclaim is 320 GB because 180 GB was held. Confirm which sites have holds active before running the trim, and reduce your reclaim forecast accordingly. Coordinate with Compliance on any bulk trim that touches sites subject to hold. Full reclaim only becomes possible when the hold is lifted.
What is the difference between the SharePoint recycle bin stage 1 and stage 2?
Stage 1 is the site-level recycle bin visible to site owners and users who deleted content. Stage 2 is the site-collection recycle bin visible only to site collection administrators. Deleted items move from stage 1 to stage 2 after the stage-1 retention (typically 93 days total across both stages by default) or when a user explicitly empties stage 1. Both stages count against site storage. During a reclaim campaign, both must be emptied to actually recover the space. The stage-2 empty is often the largest single reclaim on a mid-sized site.
How much storage can Microsoft 365 Archive tier really save?
Archive tier pricing differs from hot-tier SharePoint pooled storage by a substantial margin, generally producing a materially lower per-GB cost for content that will be retained but rarely accessed. The savings are proportional to the volume of cold content: a tenant with 40% cold content by volume will typically see the strongest ROI, while a tenant that is all active content will see little. Confirm current pricing in your tenant admin center — pricing changes and depends on your commercial agreement. The [Purview archive](https://learn.microsoft.com/en-us/purview/archive-mailbox) documentation and your tenant admin center are the authoritative sources for both cost and reactivation SLAs.
What is the risk of setting SharePoint version history too low?
The risk is losing a version an auditor, litigator, or business owner later needs. Regulated document classes (financial statements, safety data sheets, executed contracts, HR records, quality documents) frequently have retention requirements that specify a minimum version count. Setting the cap below that count creates a compliance gap. The correct process is: consult with each library owner and Compliance on the minimum defensible cap, apply the cap, and document the rationale. A blanket "reduce all to 25 versions" is fast but risky; a labeled-by-content-type policy is defensible.
How often should we run a SharePoint storage cleanup campaign?
A full 30-day campaign every 12-18 months, plus a lightweight monthly review at the tenant admin level (top-20 sites, top files, recycle bin totals, and any site nearing its quota warning level). Storage bloat compounds silently between campaigns, and the fastest way to avoid another crisis is to catch drift early. Governance changes made during a campaign (version-history caps, retention labels, archive-tier moves) also drift back over time as new libraries are created without the caps applied. A governed template model prevents this: every new library should be created from a template that already has the correct version-history and retention configured.
Can I use PnP PowerShell against a tenant that requires multi-factor authentication?
Yes. Use the modern PnP.PowerShell module (not the legacy SharePointPnPPowerShellOnline) with an Entra app registration for scripted work, or with -Interactive for interactive sign-in. Interactive supports MFA out of the box. For scheduled work, register an app in Entra ID, grant it Sites.FullControl.All, use certificate-based authentication, and store the certificate securely — service-account-with-password auth is deprecated for tenants with MFA enforced. See the PnP.PowerShell documentation on GitHub for the current auth patterns.

Need Expert Help?

Our SharePoint consultants are ready to help you implement these strategies in your organization.

Continue Reading in Administration

Administration

SharePoint Admin Center: Administration Guide

Master the SharePoint Admin Center with this guide covering site management, policies, settings, and monitoring capabilities for tenant administrators.

Administration

SharePoint Storage Management: M365 Guide

Master SharePoint storage management with strategies for monitoring usage, optimizing quotas, archiving content, and planning capacity for your Microsoft 365 tenant.

Administration

Recycle Bin Management: Data Recovery Best Practices

Master SharePoint recycle bin management for reliable data recovery. Learn first-stage and second-stage recycle bins, retention policies, PowerShell recovery commands, and enterprise backup strategies.

Administration

SharePoint vs OneDrive: When to Use Each (And When You...

Clear guide to when to use SharePoint vs OneDrive in Microsoft 365. Explains the key differences, ideal use cases for each, how they work together, and the most common mistakes organizations make.

Administration

SharePoint Admin Center: Complete Guide for 2026

Master the SharePoint Admin Center with this comprehensive guide covering site management, settings, policies, external sharing, storage quotas, and modern admin features.

Administration

SharePoint Online Storage Management: Administrator...

Optimize SharePoint Online storage usage, understand tenant storage pools, manage site quotas, identify version history bloat, reclaim wasted space, and implement storage governance policies to control costs and prevent read-only site incidents.