You drag a photo into the Media Library and get one of these instead: "exceeds the maximum upload size for this site", "The uploaded file exceeds the upload_max_filesize directive in php.ini", a bare "HTTP error.", "Post-processing of the image failed", "Sorry, you are not allowed to upload this file type", or "Unable to create directory wp-content/uploads/... Is its parent directory writable by the server?". They look alike but each one names a different limit: the size the host allows, the server's memory for resizing photos, the file types WordPress accepts, or the uploads folder itself. Below is a rebuilt example (not a real client), then which message means what and how each gets fixed.
upload_max_filesize to a little above your biggest file and post_max_size to the same or higher. Do not paste php_value lines into .htaccess from a tutorial: on many servers that takes the whole site down with a 500 error. On a multisite network there is a second cap in Network Admin, Settings, "Max upload file size".memory_limit as in the memory guide, switch off a security or image-compression plugin for one test upload, and, if it still fails, send the host the time of the upload: a server firewall rule (mod_security) can block uploads and only the host can see that.photo.png that is really a JPEG, is refused too: save it again in the right format.wp-content/uploads and the folders in it at 755 (not 777); after a site move, Settings, Media showing a "Store uploads in this folder" box with the old server's path, which should be emptied; and the folder's owner, which only the host can fix if files were copied in as the wrong user.| What you see | What it means | Usual fix |
|---|---|---|
| "exceeds the maximum upload size for this site" | File bigger than the host's upload limit | Resize the photo; for other files raise upload_max_filesize and post_max_size in the host panel |
| "HTTP error." on a large photo | Server ran out of memory or time making the resized copies | Check the Library, then upload it at about 2,000 px wide |
| "Post-processing of the image failed" | Same, said more plainly (WordPress 5.3 and later) | Upload a smaller version; raise memory if small ones fail too |
| "not allowed to upload this file type" | HEIC, SVG or a mislabelled file | Save as JPEG or PNG; SVG only through a cleaning plugin |
| "Unable to create directory ... writable" | Uploads folder not writable, disk full, or an old folder path | Disk space, 755 permissions, empty the old path in Settings, Media |
| "Missing a temporary folder" | Server's temporary folder missing | The host fixes it |
| Theme or plugin zip: "The link you followed has expired" | The zip is over the upload limit | See the link expired guide |
php_value upload_max_filesize into .htaccess unless the host says that is the way on your plan. Use the host's PHP settings.Most upload errors are the first two rows of the table and are gone once photos are resized before upload. If small files fail too, or the host and WordPress each say the other is the problem, that is what the box below is for. Related: "allowed memory size exhausted" and photos that slow the site down.