SharePoint Version History & File Management Best Practices
Version history is one of SharePoint's most valuable—and most misunderstood—features. Used correctly, it provides a complete audit trail and protects against accidental data loss. Used carelessly, it consumes massive storage and degrades library performance.
This guide covers everything you need to know about version history, file management, and storage optimization in SharePoint Online.
---
How Version History Works
SharePoint stores a new version every time a document is saved or checked in. By default, SharePoint Online stores 500 major versions per document.
Major vs. Minor Versions
Major versions (1.0, 2.0, 3.0):
- Published versions visible to all readers
- Created when a document is published or checked in without using drafts
- Required for approval workflows
Minor versions (0.1, 0.2, 1.1, 1.2):
- Draft versions visible only to editors and approvers
- Created during active editing sessions
- Require document library versioning settings to enable
When a New Version Is Created
- File is uploaded with the same name as an existing file
- File is edited in Office apps (on Save in traditional desktop apps, or after cloud save in Microsoft 365)
- File is checked in via Check Out/In workflow
- File metadata is modified (creates a new version even without content changes)
---
Storage Impact of Version History
This is where many organizations get into trouble.
Example:
- Document: 5MB Word file
- 100 editors make revisions over 2 years
- 100 versions × 5MB = 500MB for a single document
At scale:
- Library with 10,000 documents
- Average version count: 50
- Average file size: 2MB
- Total version storage: 10,000 × 50 × 2MB = 1TB
SharePoint Online handles version storage more efficiently than SharePoint on-premises through delta/diff compression (only storing changes), but storage still accumulates significantly over time.
Check your storage:
SharePoint Admin Center → Active Sites → [Site] → Storage used
Or PowerShell:
```powershell
# Get storage used by site collection
$site = Get-SPOSite "https://yourtenant.sharepoint.com/sites/yoursite"
Write-Output "Storage used: $($site.StorageUsageCurrent)MB"
Write-Output "Storage quota: $($site.StorageQuota)MB"
```
---
Configuring Version History Settings
Library-Level Settings
Navigate to: Library → Settings → Versioning settings
Recommended settings for common scenarios:
General business library:
```
Enable versioning: Yes
Keep the following number of major versions: 50
Draft item security: Only users who can edit items
```
Compliance/regulated content library:
```
Enable versioning: Yes
Keep the following number of major versions: 500 (or unlimited)
Require check out: Yes (prevents conflicting edits)
Draft item security: Only users who can approve items
```
High-volume working document library:
```
Enable versioning: Yes
Keep the following number of major versions: 10 (reduce storage)
Draft item security: Only users who can edit items
```
Tenant-Level Version History Limits (New in 2024)
Microsoft 365 introduced tenant-level version history management:
Automatic version storage management:
Intelligent versioning that stores fewer versions the older they get:
- Last 30 days: All versions retained
- 30-180 days: Fewer versions retained (e.g., hourly → daily)
- 180+ days: Minimal versions retained (e.g., weekly → monthly)
Enable in SharePoint Admin Center → Settings → Version history limits:
- Select "Automatic" to let Microsoft manage version culling
- Or set explicit count limits per library type
---
Restoring Previous Versions
From the Document Library UI
- Select the document (check the checkbox)
- Click the "..." menu → Version history
- Review version list with timestamps and size
- Click the timestamp of any version → Restore
- This creates a new version (the old version becomes current) — it does NOT overwrite the version chain
From OneDrive for Business
- Right-click the file in OneDrive web interface
- Version history
- Select version → More options → Restore
PowerShell Restore
```powershell
Connect-PnPOnline -Url "https://yourtenant.sharepoint.com/sites/yoursite"
# Get all versions of a file
$versions = Get-PnPFileVersion -Url "/sites/yoursite/Shared Documents/Contract.docx"
$versions | Select-Object Created, CreatedBy, Size, VersionLabel
# Restore a specific version (by version ID or label)
Restore-PnPFileVersion -Url "/sites/yoursite/Shared Documents/Contract.docx" `
-Identity $versions[5].Id # Index 0 is most recent, higher index = older
```
---
Version History for Compliance and eDiscovery
Retention Policies and Version History
Microsoft Purview retention policies operate on the most recent version by default. However:
- When a retention label requires "preserve all versions," ALL versions are retained even beyond the library version limit
- When content is under legal hold, versions are preserved in the Preservation Hold Library (invisible to users)
Important for compliance:
If a document is deleted while under retention, all versions are moved to the Preservation Hold Library. Users cannot see or access this library, but eDiscovery can.
eDiscovery and Version History
During Microsoft Purview eDiscovery content searches:
- All versions within the retention window are discoverable
- Each version is produced as a separate document in the review set
- Metadata includes version number, author, and timestamp
Practice implication: For legal matters, collect the specific version of a document at a point in time, not just the current version.
---
File Lifecycle Management
Document Lifecycle States
```
Draft → Under Review → Approved/Published → Current → Superseded → Archived → Deleted
```
SharePoint implementation:
- Approval workflow enforces Draft → Published transition
- Sensitivity labels + content types enforce classification
- Retention labels automate Archived → Deleted based on schedule
- Site pages and Power Automate enforce lifecycle governance
Content Lifecycle Automation with Power Automate
Auto-archive stale documents:
```
Trigger: Recurrence (weekly)
Condition: Last modified date > 2 years ago AND Status ≠ Archived
Action 1: Update Status to "Archived"
Action 2: Move file to /Archive subfolder
Action 3: Email document owner: "Document archived - review required"
```
Version cleanup on approval:
```
Trigger: Document status changed to "Approved"
Action: Delete all minor versions (retain only current major)
Rationale: Drafts no longer needed post-approval
```
Microsoft Purview Retention Labels for File Lifecycle
Create retention labels for each lifecycle stage:
| Label | Retention Period | Action at End |
|-------|-----------------|---------------|
| Active Document | Keep while in use | Trigger review |
| Contract - 7 Year | 7 years from execution | Delete |
| HR Record - 10 Year | 10 years from termination | Delete |
| Financial - Permanent | Do not delete | N/A |
| Draft - 1 Year | 1 year from creation | Delete drafts |
---
Storage Optimization Strategies
Strategy 1: Set Appropriate Version Limits
Don't leave version limits at the default 500 for all libraries:
| Library Type | Recommended Major Versions |
|-------------|---------------------------|
| Legal/Compliance | 500 (or unlimited) |
| Financial records | 500 |
| General business | 50 |
| Working files/scratch | 10-20 |
| Archive/read-only | 1-5 |
Strategy 2: Check Out/In Workflow
Requiring check-out consolidates editing into fewer versions:
- Without check-out: Each Ctrl+S creates a new version (up to 512 versions per session in co-authoring)
- With check-out: Only the check-in creates a version
Enable: Library Settings → Versioning settings → "Require documents to be checked out before they can be edited"
Downside: Prevents simultaneous editing. Use only for document types where collaboration conflicts are not a concern.
Strategy 3: Archive Old Libraries
Move inactive libraries to SharePoint archive:
- Sites inactive 180+ days: Move to Microsoft 365 Archive
- Archive sites have reduced monthly cost
- Content is still accessible but in a cold storage tier
Strategy 4: Remove Old Versions via Script
```powershell
# Delete all but the current version of files not modified in the last year
Connect-PnPOnline -Url "https://yourtenant.sharepoint.com/sites/yoursite"
$files = Get-PnPListItem -List "Documents" -Fields "Modified,FileRef" |
Where-Object { $_["Modified"] -lt (Get-Date).AddYears(-1) }
foreach ($file in $files) {
$versions = Get-PnPFileVersion -Url $file["FileRef"]
# Keep current version (index 0), delete all others
$versions | Select-Object -Skip 1 | ForEach-Object {
Remove-PnPFileVersion -Url $file["FileRef"] -Identity $_.Id -Force
Write-Output "Deleted version $($_.VersionLabel) of $($file["FileRef"])"
}
}
```
⚠️ Always test on a non-production library first. Version deletion is irreversible.
---
Deleted File Recovery
Recycle Bin (90 days)
First-stage recycle bin (end user):
- Files remain 93 days by default
- Users can restore their own deleted files
- Site owners can restore any user's deleted files
Second-stage recycle bin (site collection):
- Receives files deleted from first-stage bin
- Site collection administrators can restore
- Combined total: 93 days for both stages
Beyond 90 Days
Retention hold: Files under retention policy are preserved indefinitely in the Preservation Hold Library even after recycle bin expiry.
Backup solutions: Microsoft 365 Backup (Microsoft's native backup, 2024 GA) covers:
- SharePoint sites: 180-day restore window
- OneDrive: 180-day restore window
- Exchange: 180-day restore window
---
Version History for Large Files
SharePoint handles version history differently for large files:
- Files under 2GB: Full version copies stored
- Files over 2GB: Delta compression applied (only changes stored)
- Files over 250GB: Cannot be stored in SharePoint (OneDrive 250GB limit)
Impact on restore: Restoring older versions of large files may take longer as deltas are reconstructed.
---
Conclusion
Version history is a critical safety net for enterprise document management, but it must be configured thoughtfully to balance protection with storage efficiency. Set version limits appropriate to each library's content type, leverage retention labels for compliance lifecycle management, and implement regular storage optimization reviews.
EPC Group helps enterprises design and implement SharePoint document lifecycle management systems that meet both business needs and regulatory requirements. Contact us if you need help optimizing your SharePoint storage or designing a compliant version management policy.
Written by Errin O'Connor
Founder, CEO & Chief AI Architect | Microsoft Press Bestselling Author | 25+ Years Microsoft Ecosystem
Errin O'Connor is a Microsoft Press bestselling author of 4 books covering SharePoint, Power BI, Azure, and large-scale migrations. He leads our SharePoint consulting practice with expertise spanning 500+ enterprise migrations and compliance implementations across HIPAA, SOC 2, and FedRAMP environments.
Expert SharePoint Services
Need Expert Help?
Our SharePoint consultants are ready to help you implement these strategies in your organization.