cPanel Disk Quota Exceeded: Find What's Filling It & Fix It
Your site suddenly can't save uploads, emails start bouncing, and cPanel greets you with a red banner: "You have exceeded your disk usage quota." Nothing crashed - you just ran out of room. Here's how to find what's actually eating the space and clear it without breaking anything.
What "disk quota exceeded" actually means
Every shared hosting account on cPanel has a fixed storage limit set at the plan level - separate from a VPS's root disk. That limit covers everything under your account: website files, databases, email (including Sent and Trash), backups, and logs. Once you hit it, the account doesn't crash, but several things quietly start failing:
- New emails bounce with a "mailbox full" or "over quota" error, even if the specific mailbox has room
- File uploads and plugin/theme installs fail in WordPress with vague "unable to write" errors
- Automatic and manual cPanel backups fail partway through
- Database writes can start failing once MySQL's data directory is included in the quota
The tricky part: the warning email says you're over quota, but it doesn't say what is using the space. That's the actual troubleshooting job.
Step 1: Check your real usage in cPanel
Log in to cPanel and look at two places:
- Home page sidebar / Stats: shows "Disk Usage" as a percentage or MB used out of your total allowance.
- Files → Disk Usage: this gives a breakdown by top-level folder (
public_html,mail,logs,tmp, backups) with sizes, so you can see the biggest folder at a glance instead of guessing.
If you have SSH access, the same thing from the command line is faster and more precise:
du -sh ~/* --exclude=public_html 2>/dev/null | sort -rh
du -sh ~/public_html/* 2>/dev/null | sort -rh
Run both - the first shows what's eating space outside your website (mail, logs, backups), the second drills into public_html itself (uploads, cache, old plugin folders).
Step 2: The usual suspects
In our support queue, quota tickets almost always trace back to one of these five things:
| Where it hides | Why it grows | Fix |
|---|---|---|
| Email accounts | Large attachments piling up in Inbox, Sent, and especially Trash/Spam that never gets emptied | Webmail → empty Trash and Spam per mailbox, or set an auto-purge rule for old mail |
public_html/wp-content/uploads | Full-size images never resized, old media library exports, duplicate uploads from migrations | Compress/resize images, remove unused media, delete duplicate migration folders |
| cPanel backups in your home directory | Full-account backups (cpmove-*.tar.gz or backup-*.tar.gz) generated by a plugin or manual backup, saved locally instead of offloaded | Download a copy off-server, then delete the local copy from File Manager |
| Log files | error_log, access-logs, or a WordPress debug.log left running for months | Clear old logs; make sure WP_DEBUG_LOG isn't left permanently on |
| Database | Bloated wp_options table (autoloaded data), leftover tables from an old plugin, revision spam | Clean via phpMyAdmin or a plugin like WP-Optimize; delete unused tables from removed plugins |
Email is the most common one we see, because Trash and Spam count toward quota just like Inbox does, and most people never look at them.
Step 3: Clear space safely
- Start with backups sitting in your home directory. They're usually the single biggest file and the safest to remove once you've downloaded a copy to your computer or an external storage service.
- Empty Trash and Spam on every mailbox under Email → Email Accounts → check usage per account, then log in to each one via Webmail and empty those folders.
- Delete orphaned uploads and old export files from
public_htmlusing File Manager, sorted by size (click the Size column to sort). - Truncate or download-then-delete log files instead of leaving them to grow indefinitely.
- Re-check Disk Usage after each step - clearing email trash alone often recovers more space than people expect.
Avoid deleting anything inside wp-content/plugins, wp-content/themes, or database tables unless you're sure they're unused - that's how sites break instead of just running out of space.
Step 4: If you're still over quota after cleanup
Some accounts are simply undersized for what they're hosting - a growing email archive, a media-heavy WooCommerce store, or several add-on domains sharing one plan. If cleanup only buys you a few weeks before you're back to the same warning, it's a sizing problem, not a housekeeping problem. At that point, upgrading to a plan with more storage (or moving mail-heavy accounts to a separate mail plan) is the actual fix - not a monthly ritual of emptying Trash folders.
If you're on a reseller or VPS plan managing multiple cPanel accounts through WHM, check whether the quota is capped at the package level rather than the individual account - sometimes an account shows as over quota simply because WHM assigned it a smaller package than it actually needs. A quick look at WHM → List Accounts shows the assigned quota next to actual usage for every account, which is the fastest way to spot a mismatch across several sites at once.
A note on add-on domains and subdomains
If your account hosts multiple add-on domains, remember they all share the same disk quota - there's no separate allowance per domain. A single bloated add-on site can push the whole account over the limit while your main domain looks perfectly healthy. When you're hunting for space, run the Disk Usage check per add-on domain folder inside public_html, not just at the account level, so you know which site is actually responsible.
Prevention: keep quota warnings from coming back
- Set a mailbox-level quota per email account (Email Accounts → Manage) so one inbox can't consume the whole account's allowance
- Offload backups to external storage (S3, Google Drive, or your local machine) instead of storing them in
public_htmlor your home directory - Turn off
WP_DEBUG_LOGonce you've finished debugging - Check Disk Usage in cPanel monthly, not just when the warning email arrives
- Compress images before upload rather than letting WordPress store multiple full-size copies
A quota warning isn't an emergency by itself, but the failures it triggers - bounced mail, failed backups, broken uploads - are the kind of thing that snowballs if you leave it. Ten minutes in Disk Usage usually finds the culprit.
Frequently asked questions
Why does my mailbox say it's full when I have space left in my overall cPanel quota?
Each mailbox can have its own quota separate from the account-wide disk quota. Check Email Accounts in cPanel - if an individual mailbox limit is set lower than the account total, that mailbox can fill up on its own even while the account has room elsewhere.
Do Trash and Spam folders really count toward my disk quota?
Yes. Every message in every folder, including Trash and Spam, is stored on disk and counted. Emptying those two folders is often the fastest way to recover space, since most users never manually clear them.
Will deleting a cPanel backup file break my site?
No, as long as it's a completed backup archive (a .tar.gz file sitting in your home directory) and not an active file your site is reading from. Download a copy somewhere safe first, then delete the local copy - the site itself doesn't reference these files while running.
How much disk space does a typical WordPress site need?
It varies widely, but a lean WordPress site with light media usage often runs under 1-2 GB. Sites with large image libraries, WooCommerce product catalogs, or years of email history can easily need 10 GB or more - which is why checking Disk Usage periodically matters more than guessing.
Can I increase my disk quota without changing hosting plans?
That depends on your host. Some plans have hard caps tied to the plan tier and require an upgrade; others allow a quota bump as an add-on. Check with your hosting provider's support before assuming a full plan upgrade is the only option.