WordPress: The link you followed has expired
Usually an upload (theme, plugin, media) larger than PHP’s upload/post limits — WordPress receives an empty request and shows this generic message.
Meaning
When a request exceeds post_max_size, PHP discards the whole POST body, including WordPress’s nonce, so the nonce check fails with “link expired”. Genuine expired nonces (forms left open for over 24 hours) cause it too.
Common causes
- Upload bigger than
upload_max_filesize/post_max_size - Request taking longer than
max_execution_time - Form left open longer than the nonce lifetime
- Caching plugin serving stale nonces
⚡ Quick fix
- Raise upload_max_filesize and post_max_size (post ≥ upload)
- Upload large themes/plugins via FTP or WP-CLI instead
- Reload the page and resubmit
- Exclude admin/form pages from page caching
Detailed fix by platform
PHP
- .user.ini / php.ini (shared hosting: cPanel → MultiPHP INI Editor):ini
upload_max_filesize = 128M post_max_size = 128M max_execution_time = 300 memory_limit = 256M
WordPress
wp plugin install ./plugin.zip --activatebypasses browser upload limits.
How to diagnose
- Size — How big is the upload?
- Limits — Media → Add New shows the max upload size
- Cache — Is the form page cached?
🧠 Still stuck? Analyze your error
Paste the full message, response headers or stack trace — we'll detect the platform and point to the most likely cause.
Was this page helpful?
Report a correction or suggest an improvement
Last updated 2 Oct 2026