Overview
An inode is the record a Linux server keeps for every file and folder, so your inode count is simply how many files and folders your account holds, whatever their size. When you hit the inode limit, the server refuses to create new files: uploads, plugin updates and new email fail, often with Disk quota exceeded even though you still have plenty of disk space. To fix it, find which folders hold the most files and clear out email, caches, old sessions and forgotten backups.
This guide is for cPanel shared hosting users, including customers on Host & Tech cPanel shared hosting, who have hit or are close to their inode limit. You’ll find the folders to blame in a couple of minutes, clean them up safely, and set things up so the count stays down.
What makes you hit the inode limit
Size doesn’t matter here, only the number of files. A 2 GB video is one inode; a cache folder of 80,000 tiny files is 80,000. The usual culprits on shared hosting are:
| Source | Why it adds up | Typical location |
|---|---|---|
| Every message is its own file, including Trash and Spam | ~/mail/ |
|
| Cache plugins and page builders | One or more files per page, per device, per language | wp-content/cache/, wp-content/litespeed/ |
| PHP sessions and temp files | One file per visitor session, often never cleaned | ~/tmp/ |
| Old backups and site copies | A full copy of every file, sometimes several times over | Home folder, softaculous_backups/, public_html/old/ |
| Developer folders | Dependency folders hold thousands of small files | node_modules/, vendor/, .git/ |
| File Manager trash | Deleted files still count until the trash is emptied | ~/.trash/ |
How to reduce inode usage
Fix 1: Find which folders hold the most files
Guessing wastes time, so count first. If your host has turned it on, cPanel shows File Usage in the Statistics panel on the home page. That gives you the total but not where the files are.
For the breakdown, open Advanced > Terminal in cPanel (or connect over SSH) and run:
du --inodes -d 1 ~ 2>/dev/null | sort -n | tail -15
The output lists your top-level folders with a file count for each, biggest last. Then drill into the biggest one, for example:
du --inodes -d 1 ~/public_html 2>/dev/null | sort -n | tail -15
Keep going one level at a time until you find the folder that’s out of proportion. In my experience it’s almost always one of the sources in the table above, and fixing that one folder solves the whole problem.
Note: If Terminal isn’t in your cPanel, your plan doesn’t include shell access. Use the fixes below in order, or open a ticket and ask us for an inode breakdown of your account.
Fix 2: Clean up email
Mailboxes are the biggest source of inodes on most business accounts, because every single email is a file.
- In cPanel, open Email > Email Disk Usage, choose the mailbox, and delete old messages from Trash, Spam and large folders. You can remove messages older than a set number of days without opening webmail.
- In Spam Filters, turn on automatic deletion of spam if nobody reviews the spam folder.
- Look for mailboxes nobody reads, such as old staff accounts or
info@addresses that only collect spam, and delete or empty them. - Check the default address (catch-all) under Default Address. If it’s set to keep mail for every invalid address, spam piles up in the main account unseen.
If a mailbox has years of mail that must be kept, archive it to a desktop mail app with POP3 or export, then clear it on the server.
Fix 3: Clear and limit cache folders
Cache plugins can create tens of thousands of files, especially with separate mobile caches, multiple languages or WooCommerce product filters.
- Use the plugin’s own Purge All or Delete cache button rather than deleting folders by hand.
- In the plugin settings, turn off caching for combinations you don’t need (separate mobile cache, logged-in users, query strings), and set a cache lifespan so old files expire.
- Check for cache folders left behind by plugins you’ve already removed. They stay in
wp-content/after the plugin is deleted.
Fix 4: Remove old sessions and temp files
PHP session files in ~/tmp are normally cleaned up automatically, but some apps store sessions elsewhere or disable the cleanup. To delete session files older than 7 days:
Warning: This deletes files permanently. Run it exactly as shown, and only on the ~/tmp folder. Logged-in visitors with sessions older than a week will simply be asked to log in again.
find ~/tmp -maxdepth 1 -type f -name 'sess_*' -mtime +7 -delete
Run the du --inodes command from Fix 1 again afterwards to confirm the count dropped.
Fix 5: Delete old backups, copies and trash
- Old site copies: folders like
public_html/old,backup-2023or a staging copy nobody uses hold a full set of files each. Download what you need, then delete them. - Installer backups: Softaculous and similar tools keep backups in your home folder. Keep the latest one or two.
- Backup archives: a single
.zipor.tar.gzis only one inode, so compressing an old folder before storing it is a good habit. Better still, keep backups off the server, as described in how to back up your WordPress site. - File Manager trash: in cPanel File Manager, open View Trash and click Empty Trash. Deleted files keep counting until you do.
Fix 6: Move development files off the account
A single node_modules folder can hold 20,000 to 50,000 files, and a .git history adds thousands more. Build locally or in your CI pipeline, then upload only the finished files the site needs. If you use Composer, upload the vendor folder only for the site that runs from it, and remove copies from old releases.
How to prevent it
- Set spam to delete automatically and review mailbox sizes every few months. Full mailboxes cause their own delivery problems too; see cPanel email not receiving or sending.
- Configure cache plugins with an expiry time and only the cache variants you need.
- Keep backups off the server and staging sites short-lived.
- Don’t deploy from a repository on the hosting account; upload built files instead.
- Re-run the
du --inodescheck after installing a new plugin or site, so a runaway folder is caught early.
If you’ve cleaned up and the site genuinely needs more files (a large shop, many sites on one account, or heavy email use), that’s a sign you’ve outgrown shared hosting. Understanding shared hosting resource limits explains the other limits to watch, and on a VPS you set the limits yourself.
Frequently Asked Questions
What is an inode in web hosting?
An inode is the record the server keeps for each file and folder. Your inode usage is the total number of files and folders in your account, including every email, cache file and folder. Hosts limit it separately from disk space because millions of small files slow down backups and the server’s file system.
Why do I get Disk quota exceeded when I still have disk space?
The same error is returned when you run out of inodes, not just space. If your disk usage is well under the limit, count your files with du –inodes in cPanel’s Terminal and clean up the folder with the most files, usually email, a cache folder or old backups.
How do I check my inode usage in cPanel?
If your host has enabled it, the Statistics panel on the cPanel home page shows File Usage, which is your inode count. For a per-folder breakdown, open Advanced > Terminal and run du –inodes -d 1 ~ | sort -n to list your folders by number of files.
Do emails count toward the inode limit?
Yes. Each email is stored as a separate file, so a mailbox with 50,000 messages uses about 50,000 inodes, including messages in Trash and Spam. Emptying those folders and deleting spam automatically is usually the quickest way to bring the count down.
What happens when I reach the inode limit?
The server stops creating new files for your account. Uploads and updates fail, WordPress can’t write cache or install plugins, sessions may break, and new email can be refused. Everything works again as soon as you delete enough files to get back under the limit.