The "uploaded file could not be moved to" error in WordPress occurs after a file uploads successfully to the temp directory but can't be moved to its final location in wp-content/uploads/. The root cause is almost always a file permission or ownership problem on the uploads directory.
Fix permissions on the uploads directory via SSH: chmod -R 755 ~/public_html/wp-content/uploads/ and ensure ownership is correct: chown -R username:username ~/public_html/wp-content/uploads/. Replace username with your cPanel username.
01. What Causes This Error
WordPress uploads happen in two stages. First, PHP writes the file to a temporary directory. Second, WordPress moves it from temp to the final location in wp-content/uploads/YYYY/MM/. This error means stage one succeeded but stage two failed.
The most common reasons:
Permissions too restrictive - The uploads directory or a year/month subdirectory has permissions set to 700 or lower, preventing the web server from writing.
Wrong ownership - Files restored from a backup or transferred from another server may be owned by a different user. The web server can't write to directories owned by another account.
Disk quota reached - The cPanel account has hit its disk space or inode limit.
02. Fixing Permissions
# Set directories to 755 and files to 644 recursively
find ~/public_html/wp-content/uploads/ -type d -exec chmod 755 {} \;
find ~/public_html/wp-content/uploads/ -type f -exec chmod 644 {} \;
Or through cPanel's File Manager: navigate to wp-content/uploads/, right-click, select "Change Permissions," set to 755, and check "Recurse into subdirectories" if available.
03. Fixing Ownership
# Fix ownership to your cPanel user
chown -R username:username ~/public_html/wp-content/uploads/
If you don't have SSH access, you can fix ownership through File Manager by creating a new folder, which will automatically have the correct ownership, and then moving your files into it.
04. Check Disk Space
If permissions and ownership look correct, check whether your account has hit its disk or inode limit:
# Check disk usage vs quota
quota -s
# Check inode count
df -i ~
If you're at or near your limit, you'll need to free up space before uploads will work again. See our disk space management guide for tips on cleaning up.
For the related "Unable to create directory" error, see our uploads directory guide. For the "Missing a temporary folder" error, see our temporary folder guide.
Uploads Still Failing?
If permissions, ownership, and disk space all look correct, open a support ticket. There may be a PHP open_basedir restriction or ModSecurity rule interfering with the upload.
Open a Support TicketQuick Recap: File Could Not Be Moved
- Set directory permissions to 755 - All directories under wp-content/uploads/
- Set file permissions to 644 - All files under wp-content/uploads/
- Fix ownership - Must be owned by your cPanel username
- Check disk quota - Make sure you haven't hit your space or inode limit
- Contact support - If all of the above checks out, there may be a server-side restriction
Last updated March 2026 · Browse all WordPress articles
