How to Fix “The Link You Followed Has Expired” in WordPress

← Back to all WordPress fixes

Introduction

You’re uploading a theme or plugin ZIP through wp-admin, the progress bar fills up — and then WordPress throws the most misleading error it has: “The link you followed has expired.” Nothing is wrong with any link. What actually happened is that your file is bigger than the server’s upload limit, or the upload took longer than the server allows. Raise those limits and the error disappears.

Why This Error Happens

PHP — the language WordPress runs on — has three settings that cap every upload:

  • upload_max_filesize — the largest single file you can upload.
  • post_max_size — the largest total request size (should be equal to or larger than the value above).
  • max_execution_time — how many seconds a request may run before the server kills it.

Many shared hosts default to small values like 2–8 MB and 30 seconds. Upload a 25 MB theme and the request dies mid-flight; WordPress only sees an expired request and shows this vague message. You can check your current limits in wp-admin under Tools → Site Health → Info → Server, or at Media → Add New, which shows “Maximum upload file size.”

Fix 1: Raise the Limits in Your Hosting Panel (Easiest)

Most hosts let you change PHP settings without touching any files. In cPanel look for Select PHP Version → Options (or MultiPHP INI Editor); Plesk has PHP Settings per domain. Set:

  • upload_max_filesize64M
  • post_max_size64M
  • max_execution_time300

Save, then retry your upload. This is the cleanest method because it survives WordPress updates and applies server-wide.

Fix 2: php.ini or .user.ini

If your host allows a custom php.ini (or .user.ini) in your site root, add the same three lines:

upload_max_filesize = 64M
post_max_size = 64M
max_execution_time = 300

Changes can take a few minutes to apply on some hosts — recheck Site Health to confirm.

Fix 3: .htaccess (Apache Only)

On Apache servers you can add this to the .htaccess file in your site root (below the WordPress rules):

php_value upload_max_filesize 64M
php_value post_max_size 64M
php_value max_execution_time 300

Important: if your server runs PHP as FPM/FastCGI (very common today), these directives cause a 500 Internal Server Error — if that happens, remove the lines and use Fix 1 or 2 instead.

Still Stuck? Upload via FTP Instead

If you can’t change server limits (some managed hosts lock them), bypass the browser upload entirely: unzip the plugin or theme on your computer and upload the folder via FTP to wp-content/plugins or wp-content/themes. It will appear in wp-admin, ready to activate — no limits involved.

Frequently Asked Questions

Why does WordPress call this a link problem?
The upload is sent with a security token (nonce) that validates the request. When the server kills the oversized request, validation fails and WordPress falls back to this generic message.

I raised the limits but nothing changed — why?
Check Site Health to see whether the new values are live — some hosts cache PHP settings for a few minutes, and some override user settings entirely (then only Fix 1 or your host’s support can change them). Also make sure post_max_size is at least as large as upload_max_filesize.

Does this also fix media upload errors?
Often, yes — image and video uploads hit the same limits. For image-specific failures, see our guide to the HTTP error when uploading images, and for the nginx variant of the size problem, the 413 Request Entity Too Large error.

What values are safe to use?
64M covers virtually every plugin and theme. Only go higher (256M+) if you routinely upload large videos or import files — huge limits waste server memory for no benefit.

Conclusion

“The link you followed has expired” has nothing to do with links — it’s an upload that outgrew your server’s PHP limits. Raise upload_max_filesize, post_max_size, and max_execution_time via your hosting panel, confirm in Site Health, and the upload sails through. And when even FTP feels like too much friction for moving a whole site, that’s a job for a proper migration tool.

Moving more than one file?

Nota Backup & Restore packages your entire site — files and database — and restores or migrates it anywhere, no upload limits to fight. Start your 14-day free trial — no credit card required.