"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:
- 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://
$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://
Connect-PnPOnline -Url $targetSite -ClientId "
$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://
Connect-PnPOnline -Url $targetSite -ClientId "
$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.
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.
Expert SharePoint Services
Frequently Asked Questions
How do I identify version history bloat in SharePoint Online?▼
Is it safe to trim version history in SharePoint if files might be on eDiscovery hold?▼
What is the difference between the SharePoint recycle bin stage 1 and stage 2?▼
How much storage can Microsoft 365 Archive tier really save?▼
What is the risk of setting SharePoint version history too low?▼
How often should we run a SharePoint storage cleanup campaign?▼
Can I use PnP PowerShell against a tenant that requires multi-factor authentication?▼
Need Expert Help?
Our SharePoint consultants are ready to help you implement these strategies in your organization.
Continue Reading in 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.
AdministrationSharePoint 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.
AdministrationRecycle 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.
AdministrationSharePoint 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.
AdministrationSharePoint 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.
AdministrationSharePoint 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.
