WordPress Images Not Uploading: The Best Fix 2026
Few things are as frustrating as trying to add a simple image to a post and getting stuck on an upload error instead. When WordPress images not uploading happens, the cause is almost always one of a small set of server-level or configuration issues, not something wrong with the image itself in most cases. Here’s how to diagnose and fix it.
Common Error Messages and What They Mean
Different errors point to different root causes:
- “HTTP Error” usually a server resource limit or plugin conflict
- “Unable to create directory. Is its parent directory writable by the server?” a file permissions issue
- “The uploaded file exceeds the upload_max_filesize directive” a server upload size limit
- Upload just spins/hangs indefinitely often a memory limit or timeout issue
Step 1: Check the File Itself First
Before troubleshooting your site, rule out the obvious:
- Confirm the file is an actually supported format (JPG, PNG, GIF, WebP are standard; some unusual formats aren’t supported by default)
- Check the file size against your server’s upload limit (see Step 3)
- Try uploading a different, smaller image to see if the issue is universal or specific to one file
Step 2: Fix File and Folder Permissions
This is one of the most common causes of “Unable to create directory” errors.
- Your
wp-content/uploadsfolder should be set to 755 - Individual files within it should be set to 644
- If permissions are too restrictive (or in rare cases, too permissive in a way that conflicts with server security settings), uploads can fail silently or with a permissions error
You can check and adjust these through your hosting File Manager or an FTP client like FileZilla.
Step 3: Increase Upload Size and Memory Limits
If you’re hitting a file size limit, or larger images consistently fail while smaller ones work, your server’s PHP configuration likely needs adjusting.
Add these lines to your wp-config.php file (near the top, after the opening <?php tag):
define('WP_MEMORY_LIMIT', '256M');
For upload size and execution time limits specifically, these are usually controlled by your hosting’s PHP configuration rather than wp-config.php alone. Check your hosting control panel for a “PHP Configuration” or “Select PHP Version” section, where you can typically adjust:
upload_max_filesizepost_max_sizemax_execution_time
If you don’t have direct access to these settings, your host’s support team can usually adjust them on request.
Step 4: Check for an HTTP Error (Often a Plugin Conflict)
A generic “HTTP Error” during upload is frustratingly vague, but it’s commonly caused by:
- Image editing/optimization plugins that hook into the upload process and occasionally conflict with it
- Security plugins with overly aggressive upload scanning
- Insufficient server memory, especially if you’re uploading several images at once
Fix: Deactivate plugins one at a time (starting with any image optimization or security plugins) and test uploading after each deactivation to isolate the conflict.
Step 5: Check Your .htaccess File
A misconfigured .htaccess file can occasionally block upload requests, particularly if there are overly restrictive rules affecting the wp-content directory.
- Rename your current
.htaccessfile temporarily (e.g., to.htaccess-backup) - Let WordPress regenerate a clean default version
- Test the upload again
- If it works, selectively restore any custom rules you actually need from the backup
Step 6: Try the Classic Uploader as a Diagnostic Step
WordPress includes a fallback “Browser Uploader” in some versions/configurations that can help isolate whether the issue is with the modern drag-and-drop uploader specifically, versus a deeper server issue. If this also fails, the problem is almost certainly server-level rather than a browser/JavaScript issue.
Step 7: Check Available Disk Space
This gets overlooked surprisingly often if your hosting account has hit its storage limit, uploads will fail even though the error message doesn’t always make this obvious. Check your hosting control panel’s storage usage stats to rule this out.
Diagnostic Quick Reference for wordpress images not uploading
| Error/Symptom | Likely Cause | Fix Step |
|---|---|---|
| “Unable to create directory” | File permissions | Step 2 |
| “Exceeds upload_max_filesize” | Server upload limit | Step 3 |
| Generic “HTTP Error” | Plugin conflict or memory limit | Step 3-4 |
| Upload hangs indefinitely | Memory limit or timeout | Step 3 |
| Only large files fail | Upload size limit | Step 3 |
| Works for some file types, not others | Unsupported format | Step 1 |
Frequently Asked Questions of WordPress images not uploading
Why do smaller images upload fine but larger ones fail? This points directly to your server’s upload_max_filesize or post_max_size limits being too low for larger files; increasing these (Step 3) typically resolves it.
Can a full hosting storage quota really cause this? Yes, if your account has hit its storage limit, new file uploads fail even though the error messages don’t always clearly state “storage full” as the cause.
Is this always a hosting issue, or can it be WordPress itself? It’s usually server/hosting-configuration related (permissions, PHP limits, storage) rather than a WordPress core bug, though plugin conflicts are a common WordPress-side contributor.
Do I need developer help to fix this, or can I do it myself? Checking file permissions and requesting a PHP limit increase from your host are usually doable without a developer. Diagnosing a plugin conflict or a deeper server misconfiguration is where developer help saves the most time.
Final Thoughts for WordPress images not uploading
WordPress images not uploading almost always traces back to file permissions, server limits, or a plugin conflict. Work through the diagnostic table above to match your specific error to the right fix. If uploads are still failing after trying these steps, get in touch here and I’ll diagnose and fix it directly.
This post contains affiliate links. See our [Affiliate Disclosure] for details.
Recommended Tools & Plugins
Every tool below is something I actually use on client projects, not a random affiliate list.
- Hosting: Cloudways fast, managed WordPress hosting
- Domain: Namecheap reliable registrar with free WHOIS privacy
- Theme: GeneratePress lightweight, built for speed
- Page Builder: Elementor Pro the builder behind most of my client sites
- Forms: WPForms reliable, beginner-friendly form builder
- Directory/Listing Sites: Directorist for business directory or listing projects
- Elementor Add-ons: Crocoblock (JetEngine) for dynamic, database-driven sites
- Keyword Research: Mangools is the SEO tool I use for keyword research
- Backups: UpdraftPlus never launch a site without a backup plan
- Course Platform: Tutor LMS is the LMS plugin