OneDrive SharePoint storage
21 Aug 2026
Who's eating your OneDrive and SharePoint quota
Storage in Microsoft 365 is pooled by default: every site draws from one tenant-wide allowance and nobody has to divvy it up. That is a good design right up to the week it isn't, because the pool hides the distribution. The distribution is always the same shape — a handful of accounts hold most of the OneDrive bytes, and the SharePoint sites that grew fastest are frequently the ones with no page views at all.
Below is the run-once-then-monthly procedure for finding both, and the four places the gigabytes hide where nobody thinks to look.
What the two reports actually hand you
Everything in this playbook comes from two Graph report endpoints, both
under Reports.Read.All and both aggregated over
D7, D30, D90 or D180.
getOneDriveUsageAccountDetail
returns one row per OneDrive with Storage Used (Byte),
Storage Allocated (Byte), File Count,
Active File Count and Last Activity Date.
getSharePointSiteUsageDetail
returns the same for sites, plus Page View Count,
Visited Page Count and Root Web Template.
Used against allocated, files against active files, bytes against page views: three ratios, and they are the whole analysis. One warning before you run either — if Conceal user, group, and site names in all reports is on in Org settings (it is on by default), the OneDrive and SharePoint reports hash Site IDs and Site URLs as well as usernames. You get a perfect ranking of anonymous drives. The setting is tenant-wide, a Global Administrator flips it, and turning it on is a logged audit event.
Where the gigabytes hide
A site's reported size is not the size of the files people can see. Deleting the files does not shrink it either, at least not this quarter. Four things occupy the pool while being invisible in a document library:
| Hiding place | Why it grows | How you clear it |
|---|---|---|
| Version history | Libraries keep a minimum of 500 major versions by default; a 40 MB deck edited daily is a folder, not a file. | Switch the organisation setting to automatic limits, then queue a trim job per site. |
| Recycle bins | A 93-day period spans the first- and second-stage bins, and the space is part of the organisation's total. | Empty both stages after a bulk cleanup — otherwise nothing changes for three months. |
| Preservation Hold library | Every edit or delete of retained content copies the original here, and library version limits are ignored while a retention policy or eDiscovery hold applies. | You don't. It clears when retention expires — 30 days plus a timer job that runs weekly, so up to 37. |
| Leavers' OneDrives | Deleting the account starts a 30-day default retention, then 93 more in the site collection recycle bin. | Nothing to do, but budget for the four-month tail. Unlicensed drives are archived on their 93rd unlicensed day. |
The playbook
Not by percentage of quota — by absolute
Storage Used. Done when you can name the top ten OneDrives and
the top ten sites, and you have their combined share of the pool. In most
tenants the first ten rows of the OneDrive report are between a third and
two thirds of all OneDrive storage.
A site with 400 GB and a
Visited Page Count of zero over 180 days is an archive that
nobody declared. Done when every site above your size threshold is labelled
live, archive or orphan. The orphans are the
cheapest storage you will ever recover, because deleting them upsets
nobody.
Match the OneDrive owners against accounts that are blocked, unlicensed or dormant — the same join behind a dormant account audit. Done when no drive over 100 GB belongs to someone who left. That drive is also a licence you are still paying for.
Automatic version limits apply to all new libraries across existing and new sites; existing libraries need a trim job per site. Done when the org default is set and the trim has run on your top ten sites. Expect nothing to happen for a week — trimmed versions bypass the recycle bin, but the reported storage figure lags 24 to 48 hours behind reality anyway.
One figure — pool used, pool total, growth since last month. Done when you can say how many months of headroom you have at the current rate. That sentence is the entire point of the exercise; everything above it is how you get to say it honestly.
Planning the number instead of reacting to it
The pool is 1 TB plus 10 GB per licence purchased for the common plans, with a 25 TB ceiling per site, and it is calculated in binary gigabytes. Two consequences follow, and both surprise people.
First, the pool moves with your licence count. Reclaiming twenty unused seats in a licence waste audit is a win on the invoice and a 200 GB cut to your storage allowance on the same day. Do the storage arithmetic before the licence cleanup, not after. Second, going over is not a soft warning: Microsoft's own limits page says a tenant operating above its storage limit is at risk of being put into read-only mode, where users can't add or modify content until usage drops or you buy capacity.
OneDrive has its own ceiling on top of that. The default is 1 TB per user, raisable to 5 TB depending on plan and licensed-user count — and lowering the default below what someone already stores makes that OneDrive read-only, which is a memorable way to discover the top-ten list from step 1.
Key takeaway
Storage isn't a stock you audit once, it's a flow with a four-month tail: versions, two recycle bins and a hold library all sit on your quota long after the files disappeared from view. Measure the pool monthly, know which ten drives and ten sites carry it, and the read-only conversation never happens.
GraphPaaS keeps both reports running per tenant on a schedule — storage per user and per site, quota versus used, size against page views, and the growth line month over month — so step 5 is a page you open rather than a spreadsheet you rebuild.
Sources
- SharePoint limits — 1 TB + 10 GB per licence, 25 TB per site, recycle bin space counting toward the organisation total, and the read-only risk when a tenant operates above its limit.
- reportRoot: getOneDriveUsageAccountDetail — the exact CSV columns, the D7–D180 periods, and
Reports.Read.Allas the least-privileged permission. - reportRoot: getSharePointSiteUsageDetail — the site-side columns, including page views and visited pages, which is what turns a size ranking into an abandonment ranking.
- Learn about retention for SharePoint and OneDrive — the Preservation Hold library, the 500-version default, the 93-day span across both recycle bins, and the 30 days plus weekly timer job before hold content clears.
- Version history limits overview — automatic versus manual limits, org-level defaults applying to new libraries only, trim jobs bypassing the recycle bin, and versioning limits being ignored under retention.
- Manage site storage limits — pooled storage as the default, the 24–48 hour lag in reported usage, and binary GB.
- Microsoft 365 usage reports overview — names concealed by default, covering Site IDs and Site URLs for the OneDrive and SharePoint usage reports.
- OneDrive retention and deletion — the 30-day default retention after account deletion, the 93 days in the site collection recycle bin, and archiving on the 93rd unlicensed day.
GraphPaaS
Storage per user, per site, per tenant — ranked, with the abandoned sites already flagged.
See who's holding your quota →