You are trying to upload an image in WordPress and getting an error — or the upload appears to start but never finishes. WordPress media upload failures almost always come down to one of four causes: file permissions on the uploads folder, PHP upload size limits, available disk space, or a problem with the uploads directory path. Each has a specific fix.
Fix 1: Check the uploads folder file permissions
Connect to your server via FTP. Navigate to wp-content/uploads. Right-click the folder and check its permissions. It should be 755 — read and execute for all, write only for the owner. If it is set to 644 or anything lower, WordPress cannot create new files inside it. Change it to 755. If it is currently 777, change it to 755 — 777 is insecure and unnecessary.
Fix 2: Increase PHP upload size limits
PHP has two settings controlling upload sizes: upload_max_filesize (maximum size of a single file) and post_max_size (maximum size of the entire POST request). Both must be large enough for your files. Add these lines to your .htaccess file:
php_value upload_max_filesize 64M php_value post_max_size 64M php_value memory_limit 256M
Fix 3: Check available disk space on the server
If your server's disk is full or over its hosting quota, WordPress cannot save any new files. Log into your hosting panel and check your disk usage. If you are over 80% full, delete old WordPress backups, unused theme files and log files that may be accumulating. Shared hosting plans often have surprisingly low disk quotas — upgrade your plan if necessary.
Fix 4: Verify the uploads directory path in WordPress settings
Go to Settings → Media in your WordPress dashboard. The Upload path should be set to wp-content/uploads or left blank (which defaults to that path). If it has been changed to an absolute server path or a path that does not exist, WordPress fails to write files. Clear the field entirely and save to restore the default.
ImportantIf images upload successfully but appear as broken on the front end, the issue is likely thumbnail regeneration rather than the upload itself. Install Regenerate Thumbnails and run it — this rebuilds all image size variants from the original files. This is especially common after migrating to a new server or changing WordPress image size settings.