By | | Updated
Cannot Upload Images? 8 Fixes — SnapPress

Cannot Upload Images to WordPress? 8 Causes and How to Fix Each One

You hit "Upload" and WordPress throws an error. Or worse — your iPhone photo doesn't even get accepted. The kind of thing that quietly eats an entire afternoon.

In practice it's almost always one of eight things. Read the error message, find your match below, apply the fix. That's the whole process.

WordPress file type not permitted error
WordPress blocks disallowed file types with this security error.

The 8 most common causes (at a glance)

  • iPhone HEIC/HEIF format isn't supported by WordPress out of the box
  • File size exceeds upload_max_filesize
  • PHP memory_limit is too low to generate thumbnails
  • wp-content/uploads lacks write permissions
  • An image optimization or security plugin is conflicting
  • .htaccess rules or a server-side WAF is blocking the request
  • Application Password is missing, or the user role can't upload
  • The Wi-Fi or mobile connection drops mid-upload

Each one below comes with its exact error message and the fix. At the end there's also a shortcut that sidesteps most of these problems by design — useful if you're on iPhone and upload regularly.

WordPress Settings Media image sizes
Settings > Media controls WordPress image sizes.

Step 1: Read the error message first

WordPress upload failures usually print a fairly specific message. Match what you see to the list below, then jump to the matching section.

  • "HTTP error" → server-side processing failed. Likely PHP memory or permissions.
  • "exceeds the maximum upload size for this site"upload_max_filesize is too low.
  • "Sorry, this file type is not permitted for security reasons" → the file extension isn't allowed (HEIC is the usual suspect).
  • "Unable to create directory"wp-content/uploads isn't writable.
  • Blank screen, no message → JavaScript error or a plugin conflict.

Cause 1: iPhone HEIC/HEIF format isn't supported

iPhone's default photo format is HEIC. Stock WordPress doesn't accept it, so the browser upload bounces back with "Sorry, this file type is not permitted for security reasons."

Fix (pick one)

  1. Switch the iPhone capture format. Settings → Camera → Formats → Most Compatible. Future photos will be JPEG. Existing HEIC files stay as HEIC.
  2. Convert existing HEICs to JPEG. AirDrop to a Mac auto-converts. On Windows, use CloudConvert or similar.
  3. Install a HEIC-support plugin. "WP HEIC Upload" lets WordPress accept HEIC directly.
  4. Use an iPhone app that handles HEIC. SnapPress reads HEIC and converts to JPEG on send — no iPhone setting changes needed.

For a deeper look at the HEIC pitfalls (including WordPress 6.7's partial HEIC support), see iPhone HEIC Photos and WordPress.

Cause 2: File size exceeds the upload limit

upload_max_filesize and post_max_size in PHP set the ceiling for a single upload. A lot of shared hosts default to 2–8 MB. A modern iPhone photo is 5–10 MB. You can probably see where this is going.

Fix

  1. Check the current limit. WP Admin → Media → Add New shows "Maximum upload file size: XX MB" at the bottom.
  2. Edit php.ini. Set upload_max_filesize = 32M and post_max_size = 32M. Most managed hosts expose this in the control panel.
  3. Override via .htaccess. Add php_value upload_max_filesize 32M and php_value post_max_size 32M.
  4. Compress before upload. Fastest fix if you can't touch server settings. SnapPress applies 3-tier quality presets automatically.

Cause 3: PHP memory limit is too low

When you upload, WordPress fires off thumbnail generation at multiple sizes. A 4000px+ original can blow past PHP's memory limit mid-process, and you end up with a generic "HTTP error" that doesn't tell you what actually happened.

Fix

  1. Add define('WP_MEMORY_LIMIT', '256M'); to wp-config.php.
  2. Set memory_limit = 256M in php.ini.
  3. If the host caps memory below 256M, resize the original to ~2000px before upload to reduce processing load.

Cause 4: wp-content/uploads permissions error

Uploaded images go into wp-content/uploads. If the web server can't write there, you get "Unable to create directory." Usually shows up right after a server migration or a manual FTP transfer.

Fix

  1. Set wp-content/uploads to 755 (or 775) via FTP/SSH.
  2. Set files inside it to 644.
  3. Confirm the directory is owned by the web server user (www-data, apache, etc.).

Cause 5: Plugin conflict

Smush, EWWW, ShortPixel — and on the security side, Wordfence and Sucuri — all intercept the upload pipeline. When one of them updates and changes how it handles files, it can collide with the other and break uploads while the rest of wp-admin still looks perfectly fine.

Fix

  1. Deactivate all plugins, then test the upload.
  2. If it works, reactivate plugins one by one and re-test after each.
  3. Once you find the culprit, adjust its settings or swap to an alternative.

Cause 6: .htaccess or WAF blocking the request

Sometimes a security-hardening .htaccess rule or a host-level WAF (mod_security, Cloudflare WAF) misclassifies a multipart upload as an attack and just blocks it.

Fix

  1. Back up .htaccess, then restore the WordPress default block and test.
  2. In the host control panel, whitelist /wp-admin/ in the WAF rules.
  3. Ask the host to check mod_security logs for blocked rules.

Cause 7: Application Password is misconfigured

External apps and REST API uploads require an Application Password (WordPress 5.6+). Missing one, or a user role that's too low, gives you a 401 or 403.

Fix

  1. WP Admin → Users → Profile → Application Passwords → create a new one.
  2. Confirm the user role is Author or higher. Subscriber can't upload media.
  3. Make sure the site runs on HTTPS. Many hosts disable Application Passwords over HTTP.

Cause 8: Unstable Wi-Fi or mobile connection

A brief connection drop mid-upload kills the transfer. The bigger the image, the longer the transfer window, and the more likely it is to hit a network hiccup before it finishes.

Fix

  1. Retry on a stable Wi-Fi connection.
  2. Add set_time_limit(300); to wp-config.php to extend the timeout.
  3. Use an app with background upload and automatic retry. Mobile browsers often pause uploads the moment the tab goes to the background.

When the failure happens in the WordPress app

If the failure happens in the official WordPress mobile app rather than a browser, the diagnostic changes. The app uploads through the post editor, so an image problem often shows up as "Couldn't save post" — a message that tells you very little about what's actually wrong.

Causes specific to the app

  1. The Jetpack connection dropped — self-hosted (WordPress.org) sites need Jetpack for the official app. When it drops, login still works but media uploads fail. Reconnect from the Jetpack settings in wp-admin.
  2. Application Passwords are disabled site-wide — some security plugins and hosts turn them off, which prevents the app from ever establishing a connection. Open https://yoursite.com/wp-json/ in a browser: if authentication is an empty , this is your cause.
  3. The account lacks upload_files — this returns rest_cannot_create. Full diagnostic steps are in our WordPress upload permission error guide.
  4. Stale app-side cache — if none of the above apply, removing the site from the app and reconnecting often clears it.

Causes 1 through 8 above (HEIC, file size, memory limit) still apply when uploading through the app. To tell app-side from server-side, upload the same image from a desktop browser in wp-admin: if that succeeds, the problem is the app; if it fails too, the problem is your server.

If iPhone uploads keep failing, a dedicated app is the shortest path

If you enjoy debugging server config, the eight fixes above will get you there. But if you upload from iPhone routinely and don't want to do this every single time —

SnapPress is a purpose-built iOS app for bulk-uploading photos to WordPress. It's designed so most of the problems above just don't happen:

  • Reads HEIC directly and converts to JPEG on send
  • 3-tier quality presets auto-adjust file size to stay under the server limit
  • Initial setup uses QR code to issue an Application Password automatically
  • Talks to the WordPress REST API directly, sidestepping browser-side plugin conflicts
  • Up to 20 photos in a single batch with per-file retry on failure

Free to start (10 photos/month), no account signup. Standard is $0.99/month or a $4.99 one-time lifetime purchase, with Apple's 14-day refund policy.

For broader Media Library workflow and maintenance, also see The Complete Guide to the WordPress Media Library.

Quick-reference: first thing to try, by symptom

Symptom First thing to try
Only iPhone photos fail Switch iPhone Camera Format to "Most Compatible," or use SnapPress
"Exceeds the maximum upload size" Raise upload_max_filesize to 32M+, or compress the photo
"HTTP error" Set WP_MEMORY_LIMIT to 256M
"Unable to create directory" Set wp-content/uploads to 755
Intermittent or unexplained failures Deactivate plugins one by one to isolate the conflict

Frequently asked questions

What if I don't have access to change server settings?

SiteGround, Kinsta, WP Engine, Bluehost, Hostinger — most managed hosts expose upload_max_filesize and memory_limit in a "PHP settings" panel. If even that's locked down, compressing before upload or using a dedicated app is your workaround.

Does this also apply to WordPress.com?

WordPress.com has different limits and format support per plan. HEIC isn't accepted on most. Business and above open up the REST API, so external apps like SnapPress can work there.

What if isolating the plugin doesn't fix it?

The theme may be the issue. Switch temporarily to a default theme (Twenty Twenty-Four) and retry. If the error disappears, the theme is the cause — report it to the developer or migrate to another theme.

Uploads broke right after a server migration

Almost always a permissions issue. Check the owner and mode of wp-content/uploads via FTP/SSH and re-set if needed. Also verify that wp-config.php has the correct database credentials for the new server.

Uploads work from phone but not from my computer

Probably a browser cache or extension issue. Try incognito mode, a different browser, or disable extensions one at a time. Also make sure the admin URL is fully HTTPS — mixed content can silently break uploads.

If you upload from iPhone and keep running into these errors:

SnapPress handles HEIC, file-size limits, and Application Password setup automatically — one tap to scan a QR code and you're done. Free to start, try it now.

Two steps to start: install the free "SnapPress Connect" plugin on WordPress, then install the iPhone app and pair them with a QR code.

About the author

Ken Furuta

Founder & CEO, 37Design

Founder & CEO of 37Design, a web and AI consultancy based in Tokyo, Japan. Built SnapPress to eliminate the pain of uploading dozens of iPhone photos to WordPress — one by one.

37design.co.jp