If the WordPress media library spins forever, shows broken thumbnails, or rejects uploads, the cause is almost always one of three things on our stack: file and folder permissions on wp-content/uploads, a PHP upload limit that's too low, or a plugin conflict. Work through them in that order, since permissions cause the most cases.
Start by opening your browser's developer console (F12 → Console and Network tabs) while you try to upload or load the library. A 403 or 500 error on admin-ajax.php or on an image URL itself tells you which of the three you're dealing with.
Check upload folder permissions
WordPress needs to write new files into wp-content/uploads. If permissions are wrong, uploads fail silently or the library shows spinners that never resolve.
- Connect via FTP or the portal's File Manager (Services → your hosting → File Manager).
- Navigate to
public_html/wp-content/uploads. - Folders should be
755, files should be644. Right-click → Permissions in most FTP clients, or use the File Manager's permissions dialog. - If the
uploadsfolder itself is missing or owned incorrectly (common after a migration or restore), recreate it and set it to755.
On most hosting accounts you can fix this recursively via SSH:
cd public_html/wp-content
find uploads -type d -exec chmod 755 {} \;
find uploads -type f -exec chmod 644 {} \;
Existing images that already uploaded but now show as broken (not new uploads) usually point to a moved or renamed folder rather than a permissions issue. If you recently changed domains or moved the install, check fixing WordPress permalinks for the related domain-mismatch pattern, since both stem from paths not matching what's in the database.
Check PHP upload limits
If small images upload fine but larger ones fail or the library hangs specifically during an upload, PHP's upload limits are likely too small for your files. WordPress shows this as "the uploaded file exceeds the upload_max_filesize directive" if PHP reports it, but sometimes it just fails quietly and the library appears stuck instead.
Check your current limits: wp-admin → Media → Add New shows "Maximum upload file size" at the bottom of the uploader.
To raise it, go to cPanel → Software → MultiPHP INI Editor. Select your domain, switch to Editor mode, and raise the relevant upload and memory limits to values comfortably above your largest file and its processing time.
Some of these settings depend on each other, so check the editor for any related directives that need to move together, or uploads may still fail. The PHP Version tile in the portal only switches PHP versions per domain; it doesn't touch these limits, so MultiPHP INI Editor is the right tool here.
If you recently changed PHP versions and the library broke afterward, a plugin or theme may not support the new version. Roll back via the portal's PHP Version tile and retest to confirm it. This is the same diagnostic approach covered in fixing the WordPress white screen of death.
Check for a plugin or theme conflict
If permissions and PHP limits check out but the library still won't load or hangs on "Loading more items," a plugin is likely interfering with the AJAX calls the media library depends on. Image optimization plugins, CDN plugins, and security plugins that filter uploads are the usual suspects.
- Rename
wp-content/pluginstowp-content/plugins.bakvia FTP or File Manager to disable everything at once. - Reload wp-admin → Media → Library. If it loads normally now, a plugin is the cause.
- Rename the folder back to
wp-content/plugins. - Reactivate plugins one at a time from wp-admin → Plugins, checking the media library after each one.
This is the same isolation method used for tracking down white screen errors, and it works because most media library failures are JavaScript or AJAX conflicts introduced by a specific plugin rather than a WordPress core issue.
Rule out a database mismatch
If images show as broken (not missing entirely, and new uploads work fine) across an entire site after a migration, the database may still reference the old domain or path. This produces image URLs that 404 even though the files exist. If you've moved domains recently, this is worth checking before assuming it's a media library bug at all.
When to open a ticket
If you've confirmed permissions are correct, PHP limits are generous enough for your file sizes, and disabling all plugins doesn't fix it, open a ticket from the portal's Support section. Include the browser console error (403, 500, or JavaScript error text) and whether the issue affects all uploads or only files above a certain size. That detail points toward the fix.