
If your theme upload comes back blank, stalls on the progress bar, or warns that the file exceeds the maximum size, the problem isn’t the theme: it’s the upload limit your hosting delivered. And there’s a workaround that works on any server, without touching any configuration, and it’s at the end of this text.
Find your limit
Go to Media > Add New. Below the upload box, WordPress writes the maximum size. If it says 8 MB or 16 MB and your theme is 60 MB, that explains it.
A second place with more detail: Tools > Site Health > Info > Server. There you’ll find upload_max_filesize, post_max_size, and memory_limit, which is the set that decides.
The definitive way: raise the limits
Three files can do this, and which one works depends on your hosting. Try them in order.
1. .user.ini, in the WordPress root (works on most hosting with PHP-FPM):
upload_max_filesize = 100Mpost_max_size = 100Mmemory_limit = 300Mmax_execution_time = 300max_input_vars = 5000
2. .htaccess, in the WordPress root, if the server is Apache. The same directives, with php_value in front:
php_value upload_max_filesize 100Mphp_value post_max_size 100Mphp_value memory_limit 300Mphp_value max_execution_time 300
If the server is nginx, .htaccess is simply ignored: no error appears, nothing changes, and it’s easy to waste time thinking the line is wrong.
3. php.ini, when your hosting gives you access to it, with the same directives as the first item. After changing it, restart PHP or wait a few minutes.
Many panels (cPanel, Plesk, hPanel) have a “Select PHP Version” or “PHP Settings” screen that changes these values without touching any file. If it’s available, it’s the shortest path.
The workaround that always works: FTP
The upload limit belongs to the WordPress form. Uploading via FTP doesn’t go through it.
- Extract the installation ZIP on your computer. You’ll end up with a folder.
- Connect via FTP or your hosting’s file manager.
- Upload the folder to
wp-content/themes/, if it’s a theme, orwp-content/plugins/, if it’s a plugin. - In the dashboard, the item appears in the list ready to activate.
It’s faster than it sounds and doesn’t depend on convincing the server of anything. For a large theme, it’s usually the first path to take, not the last.
If the limit isn’t the problem
When the message talks about an invalid package or a missing stylesheet, size has nothing to do with it: you’re uploading the wrong file from inside the package. See Stylesheet is missing.

