cPanel Disk Quota Exceeded: Can't Upload Files
You try to upload a file through cPanel File Manager or FTP, and it fails with 'Disk quota exceeded.' Here's why and how to fix it.
You're in cPanel, trying to upload a fresh WordPress plugin via File Manager, or maybe you're dragging a PDF into an FTP client. Halfway through, it stops. The error says Disk quota exceeded. This usually happens after a backup script runs wild, or someone left debug logging on in a PHP app. You haven't changed hosts — you just ran out of room.
What's Actually Going On
cPanel tracks two things: disk space (how many MB/GB you use) and inodes (how many files/directories you have). Most shared hosting plans cap you at 50,000 or 100,000 inodes. When you hit either limit, the server stops accepting new uploads. The error message doesn't tell you which one you hit — you have to check both.
The real culprit is almost always one of three things: old backups cached by cPanel's backup system, email logs from cron jobs, or oversized WordPress uploads directories. Rarely, it's a single huge file like a database dump sitting in public_html.
Step-by-Step Fix
Step 1 — Check Your Current Usage
- Log into cPanel.
- Find the Files section and click File Manager.
- At the top, across the bar, look for Capacity. Click it. You'll see a pop-up showing
Disk Space UsageandInodes Used. - Write down both numbers. If inodes are above 80% of your limit (e.g., 80K out of 100K), that's your problem.
Step 2 — Delete Old Backups (Fastest Win)
- In cPanel, go to Files → File Manager.
- Check the box Show Hidden Files (dotfiles) at the top right, then click Go.
- You'll now see directories like
.cpanel,.trash, and.cpbackup. - Navigate to
.cpbackup. Inside, you'll find dated folders like2024-01-15. These are full backups cPanel made automatically. - Select the oldest ones (keep only the most recent if you need a fallback). Right-click and choose Delete.
- After clicking Apply, you should see a confirmation message saying files were moved to Trash. Important: Go to
.trashinsidepublic_htmland delete everything there too. cPanel doesn't count trash toward your quota, but it still takes space on the server.
Step 3 — Clean Up Email Logs and Mailboxes
- In cPanel, navigate to Email → Email Deliverability or Email → Mail Delivery Logs.
- Click Clear Log if you see that button. If not, go to File Manager and look in
mail/yourdomain.com. - Inside each domain's mail directory, you'll see
cur,new,tmpfolders. These hold actual email files. Delete large old emails if your inbox is full. - Also check
/home/username/.cpanel/forcpbackuplog files — they can grow to 2-5GB. Delete any file named*.logolder than 7 days.
Step 4 — Clear WordPress Temp Files (If You Run WP)
- In File Manager, go to
public_html/wp-content/uploads/. - Sort by File Size (there's a column header). Look for files over 2MB that you don't recognize — these are often full-size images left by plugins.
- Delete any zip files, old themes you don't use, or plugin folders from plugins you uninstalled but left behind.
Step 5 — Check the Real Root: Inodes vs. Space
If you deleted a bunch of files but still can't upload, you probably hit the inode limit. Go back to Capacity in File Manager. If inodes are still high, you have too many small files. Run this in SSH (if you have shell access):
find /home/username/public_html -type f | wc -l
That counts every file. Compare it to your hosting plan's inode limit. If you're over, you need to delete small files — not big ones. Old cache files from CMS plugins (like W3 Total Cache or WP Super Cache) are the usual suspects. Clear your cache through the plugin's settings, which often deletes thousands of tiny HTML files.
Still Failing? Here's What to Check Next
- Did you clear the trash? Deleting files in File Manager just moves them to
.trash. You have to go delete from there too. - Is your hosting plan simply too small? Some budget hosts give you 500MB total. One backup eats that. You might need to upgrade or delete old backups entirely.
- Check for a rogue process. A cron job or a customer's PHP script could be writing a log file every second. Use
lsof | grep /home/usernamein SSH to see open files. - Contact your host. If you've done all this and the error persists, your account might have a hard quota set in the server's filesystem (e.g., 500MB limit in /etc/fstab). Only a sysadmin can fix that.
The fix is almost always backups and logs — start there, and you'll be uploading again in 10 minutes.
Was this solution helpful?