What Are Inodes? How They Affect Your Hosting Account

An inode is a data structure that represents a single file, folder, or symbolic link on a server.

“Unlimited storage” is one of the most overused claims in web hosting. What providers don’t always explain is that your account can fill up in a completely different way, one that has nothing to do with how many gigabytes you’re using.

In this article
  1. What an inode is
  2. Why shared hosting caps inodes
  3. Typical inode limits on shared hosting
  4. What happens when you hit the inode limit
  5. What uses the most inodes on a WordPress site
  6. How to check your inode usage
  7. How to reduce inode usage
  8. Inodes on VPS and dedicated hosting

Inodes are how that happens.

What an inode is

Every file system needs a way to track what’s stored on it. On Linux servers (which run the vast majority of web hosting), that tracking happens through inodes.

Each inode stores metadata about a single object: its size, owner, permissions, timestamps, and a pointer to where the actual data lives on disk. Crucially, every file, folder, and symbolic link gets its own inode. Not per megabyte. Per object.

Create a folder with 1,000 tiny files inside it, and you’ve used 1,001 inodes: one for the folder and one for each file. Create one file that’s 2GB, and you’ve used one inode.

The relationship between storage space and inode count is not linear. You can have plenty of disk space left and still be unable to create new files if you’ve exhausted your inodes.

Why shared hosting caps inodes

On a shared server, resources are divided among potentially hundreds or thousands of users. Disk space is one resource. But the server’s file system also has to track all of those files, and that tracking has overhead too.

A single account with millions of tiny files can degrade file system performance for everyone on the server. An account that installs 400 plugins, each with dozens of files, sends email newsletters that accumulate in the inbox, caches every page and image, and never cleans up old backups can burn through hundreds of thousands of inodes without using much disk space at all.

Inode limits exist to prevent any single account from overwhelming the file system. They’re a shared hosting constraint that VPS and dedicated servers typically don’t impose because you’re not sharing with anyone.

Typical inode limits on shared hosting

Limits vary significantly by provider and plan. Common ranges:

Budget shared hosting: 100,000 to 250,000 inodes. Standard shared hosting: 250,000 to 500,000 inodes. Premium shared hosting: 500,000 to 1,000,000 inodes.

Some providers enforce hard limits that prevent you from creating new files once you hit the cap. Others send warnings but allow you to continue temporarily. Either way, hitting the limit causes problems.

WordPress itself needs several thousand inodes just for a clean installation. A typical WordPress site with a standard theme and twenty plugins might use 30,000 to 60,000 inodes. A site with many plugins, a page builder, image libraries, and an email integration can easily reach 150,000 or more.

What happens when you hit the inode limit

The symptoms can look like completely unrelated problems, which makes inode exhaustion frustrating to diagnose.

WordPress stops functioning properly. New files can’t be created. Cache files can’t be written. Updates fail. The site may display errors or load incorrectly because temporary files that PHP needs can’t be created.

Email stops working. If email is hosted on the same account, new messages can’t be delivered because creating a new message file requires a new inode.

Plugin and theme updates fail. WordPress downloads update files to a temporary directory before installing them. If no new inodes are available, the download fails.

Database operations may fail. MySQL needs to create temporary files for complex queries. Inode exhaustion can interfere with these.

Backups break. Backup plugins write files constantly. A full inode limit stops them cold.

The hosting control panel usually shows your inode usage alongside your disk space usage. If you’re approaching the limit, that’s the problem, even if your disk space is only 20% full.

What uses the most inodes on a WordPress site

Cache files. Caching plugins generate one or more files per cached URL. A site with 500 pages and a busy cache folder can have tens of thousands of cache files. Most caching plugins have settings to limit cache size or automatically clear old files.

Email. Every email in your inbox is a file. If you have years of accumulated email on a hosting-based email account, you might have more inodes in email storage than in your website files. Consider using a dedicated email service rather than hosting-based email.

WordPress media library. WordPress generates multiple image versions for each uploaded image (thumbnail, medium, large, full size, plus any additional sizes registered by your theme and plugins). A site with 2,000 images might have 12,000 or more image files just from WordPress’s resizing behaviour.

WordPress backups. Backup plugins store archives in your hosting account unless you configure them to send backups elsewhere. Each backup archive is one inode, but if the plugin creates temporary files during the backup process, the inode count spikes while the backup runs.

Session and temporary files. PHP creates temporary files for sessions and various operations. These should be cleaned up automatically, but on a busy or poorly configured server they can accumulate.

Log files. Error logs, access logs, and plugin logs. These are often a single file per log type, so the inode impact is small, but very active logs can grow large and also generate many entries depending on the logging format.

Node modules and build files. If you run any Node.js tooling or have build processes that create output files, node_modules folders alone can contain tens of thousands of files. Never leave a node_modules directory on a production shared hosting account.

How to check your inode usage

In cPanel, go to File Manager or check the Statistics section on the left side of the main dashboard. You should see your inode usage alongside disk space.

You can also check via SSH if you have access:

find . -printf '%i\n' | sort -u | wc -l

This counts unique inodes in your current directory. Running it from your home directory gives you a total count for your account.

To find which directories are using the most inodes:

for dir in */; do echo "$(find "$dir" | wc -l) $dir"; done | sort -rn | head -20

This lists your top directories by file count, which is a useful way to identify where inodes are being consumed.

How to reduce inode usage

Clear your cache. Delete old cache files from your caching plugin or the cache directory directly. Most plugins have a one-click “Clear All Cache” option.

Move or clean up email. Archive old emails, delete what you don’t need, or migrate email to a dedicated provider like Google Workspace or Zoho Mail where it doesn’t count against your hosting inodes.

Configure backup storage to be external. Set your backup plugin to send archives to Amazon S3, Google Drive, or Dropbox rather than storing them locally. This removes backup files from your inode count entirely.

Optimise your WordPress media library. Plugins like Imagify or ShortPixel can regenerate image sizes and remove unused variants. If your theme or plugins used to register image sizes that you no longer need, regenerating thumbnails without those sizes can delete thousands of files.

Clean up old plugin and theme files. Deleting inactive plugins removes their files. Deactivating without deleting keeps all the files.

Audit your file manager. Old backups left in the root directory, test files, downloaded archives that were never cleaned up, all of these are invisible in disk space terms but each one is an inode.

Inodes on VPS and dedicated hosting

VPS and dedicated servers typically don’t impose inode limits. You’re managing your own server, and the underlying file system has a theoretical maximum (ext4, the most common Linux file system, supports around 4 billion inodes per volume) that you’re extremely unlikely to hit.

This is one of the underappreciated advantages of moving from shared to VPS hosting. You stop worrying about both disk space and inode counts as separate constraints.

Frequently Asked Questions

Can I increase my inode limit on shared hosting? Some providers will raise your limit if you ask, particularly if you’re on a higher tier plan. Others won’t. The more reliable solution is to reduce your inode usage or upgrade to VPS hosting where limits aren’t imposed.

Does every image upload cost inodes? Yes. Each image file is one inode. Each resized version WordPress generates is another inode. A single image upload to a WordPress site often creates five to eight files (original plus various sizes), costing five to eight inodes.

Why do some hosts advertise unlimited storage but have inode limits? Because disk space and inodes are different resources. A host can technically offer unlimited gigabytes while still capping the number of files you can store. Both constraints are real. It’s worth reading the fine print for both before signing up.

Does the number of WordPress plugins affect my inode count? Yes, significantly. Each plugin is a directory containing many files. A typical WordPress plugin might have 200 to 2,000 files depending on its complexity. Twenty installed plugins could represent 10,000 to 20,000 inodes just from the plugin files, before any cache, email, or media is counted.