A WordPress upload can be blocked by PHP, the web server, a proxy or a site-level restriction. The maximum shown in Media is useful, but it is not a guarantee that every layer accepts that size. Identify the rejecting layer before adding a limit-changing plugin.
Compare a small file with the failing file
Use two harmless files of the same permitted type, one small and one near the failure size. Record each exact size, the displayed Media limit, response status and whether the failure is immediate or delayed. A file-type rejection is not the same as a size rejection.
An immediate 413 response often points to a request-size limit. A long delay followed by a timeout suggests another constraint. If even a tiny image fails, start with the broader image upload error diagnosis.
Read the effective web configuration
In Tools > Site Health > Info, inspect the server values available to your account. Ask your host to confirm the PHP configuration used by the website's PHP worker. Command-line PHP may load another configuration and report different limits.
PHP's upload_max_filesize limits an individual file, while post_max_size constrains the request body. The request also contains form overhead, so do not set the second value equal to the intended maximum file size. WordPress's reported maximum is derived from these settings and can also be filtered.
Web runtime: Actual settings verified. Request boundary: Rejecting layer identified. Required file: Upload and preview succeed. Oversized file: Clean rejection, no exhaustion. Explanatory checklist, not a customer test result.
For an illustrative target of 32 MiB per file, a host might approve a larger request-body limit to leave overhead. That example is not a universal recommendation: available memory, concurrency, processing and storage costs still matter. Large image decoding can require much more memory than the compressed file size.
Check limits outside PHP
| Layer |
Who can confirm it |
| CDN, WAF or reverse proxy |
Network or hosting operator |
| Web server request body |
Hosting administrator |
| PHP upload and POST settings |
PHP runtime administrator |
| Multisite or plugin restriction |
Network/site administrator |
| Temporary storage and disk quota |
Hosting operator |
Do not leave a public phpinfo page behind as a diagnostic tool. It can reveal environment and configuration details. Use authenticated administration or a host-provided report instead.
Make a bounded change and test it
Agree on the actual business requirement: a 20 MiB brochure, a theme ZIP or a large video are different workloads. For large video libraries, evaluate dedicated media delivery rather than raising every application limit indefinitely.
After the host changes the relevant setting, verify the effective web value again. Upload the intended file, open it, check any generated previews and remove disposable test files through normal media management. Also confirm an oversized test is rejected cleanly rather than exhausting the server.
Send the size boundary, status code and effective web settings to HandL WP's one-time fix service if multiple layers disagree. That evidence identifies where to investigate without guessing at server configuration.
References: WordPress maximum upload calculation and PHP configuration directives.
References reviewed October 4, 2026. Examples are explanatory; production changes require an appropriate backup and authorized access.