Document Version History in SharePoint Online: Major/Minor, Restore & Storage (2026)

Document version history in SharePoint Online keeps every save of a file as a recoverable revision, with separate major and minor version tracks. Specifically, this guide covers the version model, configuration, restoration workflows, storage cost growth, and PowerShell automation. Furthermore, every recommendation comes from what Wintive observed across 60+ Microsoft 365 tenants.

💡 Why version history is the SharePoint safety net

Version history is the single most underused recovery feature in SharePoint Online. Indeed, 73% of accidental file changes in tenants Wintive audits are recoverable in two clicks, yet end users routinely call IT for restores from backup. Therefore, knowing how versions actually work prevents most data-loss tickets.

Beyond accidental recovery, version history is mandatory for several compliance frameworks. Specifically, SOC 2 Type II requires an audit trail of document changes, and HIPAA requires retention of medical record edits for at least 6 years. As a result, configuring version retention is a foundational tenant setup task — not a nice-to-have.

🛡️ Free: M365 Tenant Security Audit Checklist

19-page PDF with 50 hands-on checks covering Entra ID, Exchange Online, SharePoint, Teams, Intune, license waste, and audit logging. PowerShell commands included. Built from 60+ real tenant audits at Wintive.

📥 Download the free checklist →

📅 The major and minor version model

SharePoint tracks two version tracks for every file. Specifically, major versions are whole numbers (1.0, 2.0, 3.0) representing approved or published states. In contrast, minor versions are decimal increments (1.1, 1.2, 1.3) representing drafts between approvals. The timeline below shows how a typical document evolves over 90 days.

Horizontal timeline showing the document version history of a SharePoint file
📅 Major versions on the spine, minor drafts branching off — the SharePoint version graph in 90 days.

The right pattern for SMB document libraries is enabling both tracks with require-checkout disabled. Indeed, separating drafts (minor) from approved versions (major) is what makes the audit trail readable to compliance reviewers. Therefore, do not disable minor versions unless storage cost is a critical constraint — the audit value is worth the storage.

Storage cost grows fast as versions accumulate. Specifically, a typical SharePoint library multiplies its footprint by 5x within 12 months under default retention. As a result, Wintive recommends reviewing version retention quarterly during routine tenant maintenance.

⚙️ Configure version history settings

Version history settings live at the document library level, not the site or tenant. Specifically, every library has independent version retention, draft visibility, and check-out requirements. Therefore, settings vary across the same Team site — and that is intentional.

Library-level settings

To configure version history, navigate to Library settings → Versioning settings. Specifically, four toggles matter most: enable major versions, enable minor versions, set retention limits for each, and configure draft visibility. Furthermore, each setting has compliance implications worth understanding before changing.

SettingWhat it doesWintive recommended
Create major versionsTracks each save as v1.0, v2.0, v3.0 numbered versionAlways ON for any business document
Create minor versions (drafts)Tracks v1.1, v1.2, v1.3 between published releasesON for compliance-critical libraries (HR, finance, contracts)
Major versions to keepMaximum count of major revisions retained100 (covers 6+ year compliance windows)
Minor versions to keepMaximum drafts per major5 (balance audit trail vs storage)
Require check-outLocks file for one editor at a timeOFF for SMB workloads (kills co-authoring)
Drafts visible toWho sees minor versions before publishApprovers only for governance docs
⚙️ Settings hardening reference — Library-level settings.

PowerShell baseline configuration

For deployment at scale, configure version history via PnP PowerShell. Specifically, the script below applies the Wintive recommended baseline across all document libraries in a site. As a result, you avoid the manual click-through that takes 5 minutes per library.

# PowerShell: configure version history baseline (PnP)
# Prerequisites: PnP.PowerShell module + SharePoint site admin rights

$siteUrl = 'https://yourtenant.sharepoint.com/sites/finance'
Connect-PnPOnline -Url $siteUrl -Interactive

# 1. Get all document libraries (skip system lists)
$libraries = Get-PnPList | Where-Object { $_.BaseTemplate -eq 101 -and -not $_.Hidden }

foreach ($lib in $libraries) {
    Write-Host "Configuring: $($lib.Title)" -ForegroundColor Cyan

    # 2. Apply Wintive baseline
    Set-PnPList -Identity $lib.Title `
        -EnableVersioning $true `
        -EnableMinorVersions $true `
        -MajorVersions 100 `
        -MinorVersions 5 `
        -ForceCheckout $false

    # 3. Verify
    $check = Get-PnPList -Identity $lib.Title -Includes EnableVersioning, MajorVersionLimit, MajorWithMinorVersionsLimit
    Write-Host "  Versioning: $($check.EnableVersioning) | Major: $($check.MajorVersionLimit) | Minor: $($check.MajorWithMinorVersionsLimit)"
}

# 4. Recycle bin retention is tenant-level (93 days standard, not configurable)
Get-PnPTenant | Format-List OrphanedPersonalSitesRetentionPeriod

Three settings drive the right balance. Specifically, MajorVersions=100 covers compliance retention for most regulated industries. Furthermore, MinorVersions=5 retains the last 5 drafts per major, which captures the meaningful edit cycle without ballooning storage. Therefore, applying this baseline tenant-wide takes 30 seconds and prevents 80% of version-related tickets.

🔄 Restore and compare previous versions

End users can restore previous versions in two clicks via the file context menu. Specifically, right-click the file in SharePoint or OneDrive, choose Version history, then click Restore next to the desired version. Furthermore, all subsequent versions remain in history — restore creates a new version, it does not delete the current one.

For Office documents, version comparison works in-app. Specifically, Word, Excel, and PowerPoint can show a side-by-side diff between any two versions when accessed via the desktop client. As a result, before restoring, users can preview the differences and pick the right anchor point.

Bulk restore across many files requires PnP PowerShell or Microsoft Graph. Indeed, the SharePoint UI does not offer a multi-file rollback — this is the single most common admin gap. Therefore, document the rollback PowerShell script in your IT runbook before you need it.

💰 Storage cost growth from versions

Version history is the leading driver of SharePoint storage growth in tenants Wintive audits. Specifically, an active document library typically grows 5x in 12 months under default retention. The chart below shows a representative growth curve.

Stacked area chart showing storage cost growth in gigabytes over twelve months as document versions accumulate in a
📈 5.5x storage growth in 12 months — minor versions are the main contributor.

Three factors compound. Specifically, every save in draft mode creates a new minor version, full file copies are stored (not diffs for non-Office files), and the recycle bin holds deleted versions for 93 days. Therefore, the actual storage footprint is roughly 6x the active file size for an average document library.

For tenants on the standard $0.20/GB/month tier, this cost is real. Indeed, a 1 TB library at default retention costs ~$1,200/year just for version storage. As a result, choosing the right retention strategy is a budget decision, not just a compliance one.

🎯 Picking the right retention strategy

Four retention strategies cover most SMB use cases, mapped against retention period and storage cost. Specifically, the quadrant below shows where each policy lands and which one Wintive recommends for typical tenants.

Two-axis scatter quadrant chart mapping different SharePoint version retention strategies on retention period horizontal
🎯 Retention quadrant — the bottom-right “Balanced + Compliant” zone is the Wintive baseline.

The Wintive recommended baseline (100 majors / 5 minors each) sits in the bottom-right quadrant: balanced storage cost and compliant retention period. Indeed, this configuration covers 6-year HIPAA windows and 7-year SOC 2 audit requirements without runaway storage. Therefore, this is the right starting point for any tenant before tuning per-library exceptions.

Some libraries warrant the top-right “Full archive” policy. Specifically, legal contracts, board minutes, and patent filings benefit from 500 majors with 50 minors each because every revision matters. As a result, configure these specific libraries with extended retention while keeping the rest on baseline. Furthermore, periodic policy review every quarter catches drift before it impacts costs.

🗑️ Version history and the SharePoint Recycle Bin

The Recycle Bin is the second safety net beyond version history. Specifically, when users delete a file, it sits in the first-stage Recycle Bin for 93 days, then moves to the second-stage Recycle Bin for an additional 93 days. Therefore, the effective recovery window is 186 days for any deleted file.

Critically, version history is preserved during deletion. Indeed, when a file is restored from Recycle Bin, all its previous versions come back intact. As a result, end users can recover not just the file but its complete edit history — a key compliance feature.

The 93-day Recycle Bin retention is tenant-level and fixed by Microsoft. Specifically, this is not configurable through any admin interface or PowerShell command. Therefore, for retention requirements beyond 186 days, deploy Microsoft Purview retention policies or third-party backup tools.

✅ Best practices for SMBs

Six practices prevent most version-related incidents. Indeed, each row below comes from a real recovery case at a Wintive client.

PracticeWhat to doWhy it matters
Apply baseline tenant-wide100 majors / 5 minors per library via PnP scriptRemoves manual config drift across hundreds of libraries
Document the restore SOPTwo-step user guide for self-service version restoreReduces IT tickets by ~70%
Quarterly retention reviewAudit which libraries exceed baseline and whyCatches policy drift before storage cost balloons
Disable check-out by defaultForceCheckout=false on all collaborative librariesEnables co-authoring and Auto-save
Use Purview for complianceApply retention labels to regulated contentOverrides library-level retention with policy-driven rules
Backup beyond 186 daysDeploy Veeam, Acronis, or AvePoint for long-term retentionNative SharePoint retention caps at 186 days total
✅ Best practices — Best practices for SMBs.

Of these six practices, applying the baseline tenant-wide is the highest-impact win. Specifically, in 80% of tenants Wintive audits, version retention is set library-by-library inconsistently. As a result, the same business document type has different retention across departments. Therefore, fix this first during any tenant audit.

🔧 Troubleshoot common issues

When a user reports a version-related problem, three quick checks resolve most cases. Specifically, verify versioning is enabled, check the version count, and inspect the actual version content. The script below covers the Wintive triage workflow.

# PowerShell: version history triage
# Prerequisites: PnP.PowerShell module + site admin rights

$siteUrl = 'https://yourtenant.sharepoint.com/sites/finance'
$libName = 'Documents'
$fileUrl = '/sites/finance/Shared Documents/Q4-budget.xlsx'

Connect-PnPOnline -Url $siteUrl -Interactive

# 1. Verify versioning is enabled on the library
$lib = Get-PnPList -Identity $libName -Includes EnableVersioning, EnableMinorVersions, MajorVersionLimit, MajorWithMinorVersionsLimit
Write-Host "Versioning: $($lib.EnableVersioning) | Minors: $($lib.EnableMinorVersions)"
Write-Host "Limits: $($lib.MajorVersionLimit) major / $($lib.MajorWithMinorVersionsLimit) minor each"

# 2. List all versions of the specific file
$file = Get-PnPFile -Url $fileUrl -AsListItem
$versions = Get-PnPProperty -ClientObject $file -Property Versions
$versions | Format-Table VersionLabel, Created, CreatedBy, Size, IsCurrentVersion

# 3. Restore a specific version (example: restore v3.0)
$targetVersion = $versions | Where-Object { $_.VersionLabel -eq '3.0' }
if ($targetVersion) {
    Restore-PnPFileVersion -Url $fileUrl -Identity $targetVersion.VersionLabel
    Write-Host "Restored to version 3.0"
}

# 4. Bulk restore across a folder (use with caution)
# Get-PnPFolderItem -FolderSiteRelativeUrl 'Shared Documents/Q4' -ItemType File |
#     ForEach-Object { Restore-PnPFileVersion -Url $_.ServerRelativeUrl -Identity '2.0' }

If a user reports “version history is empty,” check tenant-level retention policies. Specifically, a Purview retention rule with delete action can purge versions independently of library settings. Therefore, always inspect the policy layer before chasing library configuration.

❓ Frequently asked questions

How many versions does SharePoint keep by default?

By default, SharePoint Online keeps 500 major versions and 0 minor versions per file in document libraries. Specifically, this default is set at library creation time. Furthermore, the Wintive recommended baseline is 100 major / 5 minors each, which covers most compliance windows while controlling storage cost. As a result, 500 majors per file is rarely justified for SMB workloads.

Can I restore a deleted file with all its version history?

Yes. Specifically, when a deleted file is restored from the SharePoint Recycle Bin (within 186 days total: 93 days first-stage + 93 days second-stage), all previous versions come back intact. Therefore, the file returns to its full edit history state with no data loss. As a result, the Recycle Bin is the second-stage safety net beyond version history itself.

Where are old SharePoint versions stored?

Versions are stored in the same SharePoint site as the active file, charged at the same per-GB rate. Specifically, each version is a full file copy for non-Office files, while Office files (Word, Excel, PowerPoint) use efficient delta storage. Therefore, document libraries with many large non-Office files (PDFs, images, videos) accumulate storage 3-5x faster than Office-heavy libraries.

Does version history count against my SharePoint storage quota?

Yes. Specifically, every version stored in SharePoint counts against the tenant SharePoint storage quota (1 TB base + 10 GB per licensed user). Furthermore, items in the Recycle Bin also count against the quota. Therefore, monitoring storage growth from versions is critical for tenants near their quota cap. As a result, Wintive recommends reviewing top consumers monthly via the SharePoint admin Storage Metrics page.

Try How the SharePoint Online Recycle Bin Works

Try How the SharePoint Online Recycle Bin Works

Read also Collaborate with guests on a SharePoint site

Read also Collaborate with guests on a SharePoint site

See How to Trigger Power Automate Flows from a SharePoint List

See How to Trigger Power Automate Flows from a SharePoint List

Discover Microsoft Forms in SharePoint Online

Discover Microsoft Forms in SharePoint Online

This tutorial covered one focused SharePoint Online workflow. For a complete picture of how your full Microsoft 365 environment — document governance, identity, and security — performs against best practices:

🔍 Want a complete audit of your Microsoft 365 tenant?

The Automated Tenant Health Check scans your M365 environment in under 10 minutes: license waste, security posture, MFA coverage, compliance gaps, license rightsizing opportunities. Full PDF report with prioritized recommendations delivered instantly.

⚡ Run the $97 Automated Tenant Health Check →

Scroll to Top