How to Fix “The Link You Followed Has Expired” in WordPress
What The link you followed has expired means
You are trying to install a theme or a plugin by uploading its zip file through the WordPress dashboard (Appearance, then Themes, then Add New, then Upload Theme — or Plugins, then Add New, then Upload Plugin), and instead of installing, WordPress stops with the message “The Link You Followed Has Expired.” It is one of the most misleading error messages in WordPress, because nothing about a link has actually expired. In nearly every case, what really happened is that your file was larger than the maximum upload size your site is configured to accept.
WordPress ships with conservative PHP defaults, and many shared hosts leave them untouched: a maximum upload file size of just 2 MB is extremely common. Modern premium themes and plugins — especially ones bundled with demo content, page-builder templates, and stock media — routinely run 10 to 50 MB. When your upload crosses the configured ceiling, the uploader fails and WordPress hands you this message instead of telling you the file was too large.
There is one rarer variant worth knowing about: the same message can appear on the WordPress login page when something is wrong with your browser session or cookies (for example, after clearing cookies mid-login). But if you saw it right after clicking Install or Upload on a theme or plugin file, it is the size limit — focus on the steps below, not on your browser.
Common causes
- The file is bigger than the upload limit: theme and plugin zips with demo content, bundled page builders, or stock images routinely run 10–50 MB, while many hosts default to a 2 MB ceiling.
- Low PHP defaults from the host: shared hosting plans commonly set
upload_max_filesizeto 2M andpost_max_sizeto 8M — fine for images, hopeless for full themes. - post_max_size caps the request first: WordPress sends the file as an HTTP POST, so if
post_max_sizeis smaller than the file, the upload dies even whenupload_max_filesizealone looks generous. The two settings must be raised together. - PHP memory limit too low: unpacking a large zip needs memory to work in. A
memory_limitof 64M can choke on a 30 MB theme package mid-install and produce the same failure. - Short execution timeouts: a
max_execution_timeof 30 seconds can kill a slow upload before it finishes, particularly on shared servers under load.
How to fix The link you followed has expired — step by step
The whole fix takes about twenty minutes and needs nothing more than access to your hosting account — no coding required.
- Check the size limit and your file size. In the WordPress dashboard go to Media, then Add New. Under the uploader it prints the line ‘Maximum upload file size’ with a number — often 2 MB on shared hosting. Compare that with the size of the theme or plugin zip you are trying to upload. This tells you exactly how much headroom you need, and it gives you a number to check again after every fix attempt so you know when you have won.
- Raise the limits with a php.ini file. In your site's root folder (usually public_html) create a file called php.ini and add these lines:
upload_max_filesize = 64M,post_max_size = 64M,memory_limit = 128M,max_execution_time = 300. post_max_size must be at least as large as upload_max_filesize or uploads still fail. On some hosts PHP only reads a php.ini placed inside the wp-admin folder as well, so copy it there too and re-check the Media screen. - No php.ini access? Use .htaccess instead. If your host does not let you create a php.ini, open the .htaccess file in the site root and add:
php_value upload_max_filesize 64M,php_value post_max_size 64M,php_value max_execution_time 300. One caution: hosts that run PHP in CGI/FastCGI mode reject php_value lines and the site throws a 500 error — if that happens, delete the lines immediately and use the FTP method below or contact your host. - Or set the memory limit in wp-config.php. Open wp-config.php in the site root and add
define('WP_MEMORY_LIMIT', '256M');just above the line that says ‘That's all, stop editing!’. This raises the memory WordPress itself may use, which helps large installs complete. It is a safe change — deleting the line restores the old behavior. - Bypass the uploader with FTP. Unzip the theme or plugin on your computer, connect to your host with FileZilla using the FTP credentials from your hosting account, and upload the unzipped folder to
wp-content/themesorwp-content/plugins. WordPress detects the new files automatically — go to Appearance, then Themes (or Plugins) in the dashboard and activate. Upload limits do not apply to FTP, so this works no matter what your host's PHP settings are. - Verify the new limit and clear caches. Reload Media, then Add New and confirm the maximum upload size now reads 64 MB (or whatever you set). Clear any caching plugin and your CDN cache, then upload the file again — the expired-link message should be gone. If the limit still shows 2 MB, your edits are being overridden by the host's master configuration: open a support ticket and ask them to raise upload_max_filesize and post_max_size for your account.
Did this fix it? Quick checklist
- Media, then Add New now shows a maximum upload size at or above your file's size
- The zip uploads and installs (or updates) without the expired-link message
- The plugin activates, or the theme previews correctly, and the site looks right
- The server files you changed (php.ini, .htaccess, wp-config.php) contain only the upload directives you added — nothing else was edited
A word of caution before you edit server files: download a copy of php.ini, .htaccess, and wp-config.php to your computer first. A single typo in wp-config.php or .htaccess can white-screen your entire site, and having the originals on hand turns a disaster into a two-minute restore. Also, if your site is on managed WordPress hosting, check the host's dashboard first — many managed hosts (SiteGround, Bluehost, Kinsta) let you change PHP limits from a settings panel, which is far safer than hand-editing files.
Frequently asked questions
What does “The Link You Followed Has Expired” mean in WordPress?
Almost always, it means the file you tried to upload is bigger than your site's maximum upload file size. WordPress's uploader hits the limit and fails, and this confusing message is what it shows instead of a proper “file too large” error. It is not a broken link and your site is not hacked — it is a size-limit problem with a straightforward fix.
Is it safe to increase the upload limits?
Yes. Raising upload_max_filesize and post_max_size to 64 MB (or even 128 MB) is routine on WordPress sites and has no effect on your visitors — it only changes how big a file you can upload through the dashboard. Most hosts expect you to do this, and support will often raise the values for you on request.
Can I fix this without editing server files?
Yes — unzip the theme or plugin on your computer and upload the folder by FTP to wp-content/themes or wp-content/plugins, then activate it from the WordPress dashboard. FTP uploads ignore PHP's size limits entirely, so this works on any host. Alternatively, open a support ticket and ask your host to raise the limits; it is a five-minute job for them.
I raised the limits but Media still shows 2 MB. Why?
Your host's master PHP configuration is overriding your changes, which is common on shared hosting. Try placing the php.ini inside the wp-admin folder too, make sure .htaccess edits did not trigger a 500 error (remove them if so), and clear any page cache before rechecking. If nothing changes, ask your host's support to raise upload_max_filesize and post_max_size on the account directly.