WordPress Core Update Stuck at 'Updating' - Recovery Guide
You click "Update WordPress." The dashboard says "Updating WordPress..." and you wait.
You wait some more.
10 minutes pass. Still updating. 30 minutes. 45 minutes. Your site's down. You can't access the admin. You start panicking.
Did it break? Did it erase everything? Should you restore from backup?
Most of the time, the update isn't stuck. It's just slow. Or your server killed it midway. Or a plugin incompatibility halted it silently. But it looks frozen, so your brain assumes the worst.
We've recovered dozens of stuck updates. Sometimes the fix takes 30 seconds. Sometimes you need to dig into your server. We've never lost data, and you won't either if you follow this guide.
Why WordPress Updates Get Stuck
A WordPress core update is actually 4 separate processes:
- Download the update files from wordpress.org
- Backup your current WordPress installation
- Replace old files with new files
- Run any database migrations needed
If any step hangs or fails, the whole process stalls. The update lock stays active and won't let you try again.
Common causes:
- Slow download: You're on a slow connection, or your server's outbound bandwidth is throttled. Downloading 100MB core files over a slow connection can take 20-30 minutes.
- Server timeout: Your server killed the PHP script after 300 seconds (max execution time). The update was halfway done and the process died.
- Disk space: WordPress needs free disk space to extract files. If you're at 95% disk capacity, the update fails silently.
- File permissions: WordPress can't write to wp-content/upgrade or wp-admin. The update stalls waiting for permission.
- Plugin conflict: A plugin hooked into the update process, did something heavy, and the request timed out.
- Memory limit: The update ran out of PHP memory before finishing the database migrations.
- FTP/SFTP mode: Your server requires FTP credentials to write files. The update hangs waiting for you to enter credentials (but you never got a prompt).
First: Don't Panic (Your Data Is Fine)
Your files are backed up during the update process. WordPress copies everything to wp-content/upgrade/ before touching the core files. If something goes wrong, WordPress can roll back. You're not one wrong move away from losing everything.
Your database hasn't been updated yet. Database migrations are the last step. If the update hung early, your database is still on the old version. Even if the files partially updated, your database is safe.
The worst-case scenario is you delete the partial update and start over. Your site stays intact.
Step 1: Check if It's Actually Stuck
Wait 15 minutes
Seriously. WordPress updates on large sites can take 20-40 minutes. If you've been waiting less than 15 minutes, let it finish. The dashboard might not update in real-time, so the progress bar looks frozen even though it's working.
How to know if it's actually running:
- Open your server's terminal (SSH)
- Run:
ps aux | grep php - Look for a process running
wp-cron.phpor any long-running PHP process - If you see one, the update is still running. Wait more.
Check server logs
- Connect via FTP or SSH
- Download
wp-content/debug.log(if it exists) - Look for recent entries. Are there update-related messages?
- If the log is being written to, the update is still running
If you don't see any activity after waiting 30 minutes, it's actually stuck. Move to Step 2.
Step 2: Clear the Update Lock
WordPress uses a flag in the database to know "an update is in progress." If the update fails or hangs, this flag stays set, and WordPress won't let you try again.
Clear it by logging into your hosting control panel and running this SQL query:
DELETE FROM wp_options WHERE option_name = 'core_updater.lock';
If you don't have direct database access:
- Install and activate "DB Switcher" or "Adminer" plugin (upload manually via FTP if you can't access admin)
- Run the query above
- Try the update again
If you can't run SQL queries: Continue to Step 3.
Step 3: Force-Cancel the Update (If It's Really Stuck)
If clearing the lock didn't work, or you can't access the database, force-cancel it.
Option A: Via FTP (Safest)
- Connect via FTP
- Navigate to
wp-content/ - Look for a folder called
upgrade - Delete the entire
upgradefolder - Go back to your WordPress admin and try updating again
Why this works: The upgrade folder holds the partial update. Deleting it tells WordPress "the update was cancelled" and resets the process.
Option B: Via SSH (Faster)
- SSH into your server
- Navigate to your WordPress root:
cd /var/www/wordpress - Run:
rm -rf wp-content/upgrade - Run:
chown -R www-data:www-data wp-content(restores correct permissions) - Try updating again
Now try the update again from the WordPress admin. It should start fresh.
Step 4: If the Update Fails Again, Diagnose Why
Check disk space
df -h
Look for the partition containing WordPress. If it shows 95%+ full, you need more disk space before updating. WordPress needs at least 20% free space to complete updates safely.
Solution: Delete old backups, plugin caches, or unused files. Or upgrade your hosting plan.
Check PHP memory limit
- Create a blank PHP file with:
<?php phpinfo(); ?> - Upload it to your server
- Visit it in a browser
- Look for "memory_limit"
- If it's less than 256MB, increase it
To increase memory limit: Edit wp-config.php and add before "That's all, stop editing!":
define( 'WP_MEMORY_LIMIT', '256M' );
Check max execution time
In that same phpinfo() output, look for "max_execution_time". If it's 30 seconds or 60 seconds, it's too low for large updates.
To increase it: Edit .htaccess (if using Apache) and add:
php_value max_execution_time 300
Or ask your hosting to increase it. Most decent hosts can do this in the control panel.
Check file permissions
The update needs to write to several folders. Run:
ls -la wp-content/ | grep -E "wp-content upgrade|wp-plugins"
Look for permission columns. They should show something like drwxrwxr-x (755) or drwxr-xr-x. If you see drwxr--r-- (644), permissions are too restrictive.
To fix:
chmod 755 wp-content
chmod 755 wp-content/upgrade
chmod 755 wp-admin
chmod 755 wp-includes
Check if plugins are interfering
Temporarily deactivate all plugins, then try updating:
- Via FTP, rename
wp-content/pluginstowp-content/plugins-old - Try the WordPress update
- If it works, rename
wp-content/plugins-oldback towp-content/plugins - Update plugins one at a time to find which one caused the issue
Step 5: Manual Core Update (Last Resort)
If the automatic update keeps failing, you can update WordPress manually.
This sounds scarier than it is. It's actually very safe.
Download the latest WordPress
- Go to wordpress.org
- Download the latest .zip file (say WordPress 6.7)
- Extract it on your computer
- Delete these folders from the extracted WordPress (keep your local version):
- wp-config.php
- wp-content/
- .htaccess
Upload to your server via FTP
- Connect via FTP to your server
- Upload all remaining WordPress files from your extracted folder
- Replace the existing wp-admin and wp-includes folders (they should be safe to overwrite)
- Leave wp-content alone (all your plugins and themes are there)
Run database update
- Visit your site:
yoursite.com/wp-admin - You might see a message: "WordPress database needs to be updated."
- Click the link to update the database
- Wait for it to finish
That's it. Your site is now updated.
Why manual updating is safe:
- You're only replacing wp-admin and wp-includes (WordPress core files)
- Your plugins, themes, and data stay untouched
- The database update is the same whether automatic or manual
- If something breaks, you still have a backup
Step 6: After a Successful Update
Do these things immediately:
- Clear all caches: If using WP Super Cache, LiteSpeed, or a CDN, clear everything
- Test the frontend: Visit your site and make sure pages load
- Test the admin: Log out and back in. Edit a post.
- Check plugins: Do they all still show as active and working?
- Check for errors: Look at debug.log for any errors
- Test a form/feature: If your site has forms or special features, test them
If you see PHP errors:
- A plugin is incompatible with the new WordPress version
- Update or disable the plugin
- Contact the plugin developer if it's a popular plugin
Real-World Stuck Update Story
Scenario: Client's site got stuck on the update screen for 2 hours. Dashboard was frozen. Site was showing the "briefly unavailable" message.
What actually happened:
- Update started at 2pm
- Server ran out of disk space at 2:15pm (upgrade folder was getting too big)
- PHP script timed out at 2:20pm
- Update lock stayed active in the database
- Client kept refreshing the page, panicking
- By 4pm, they called us
Our fix:
- Deleted old backup files (freed up 8GB)
- Cleared the update lock via database
- Tried the update again
- It completed in 3 minutes
Total time to fix: 5 minutes. The panic was worse than the actual problem.
Prevention: Never Get Stuck Again
1. Keep plenty of free disk space
WordPress needs 20% free space minimum. Monitor your disk usage monthly.
2. Increase PHP limits before updating
Before any major update, increase memory_limit and max_execution_time.
3. Update during low-traffic times
Update at 2am, not 2pm. Fewer concurrent users = less stress on the server.
4. Test on staging first
If you have a staging environment, update there first. Catch issues before production.
5. Keep a recent backup
Use BackWPup or UpdraftPlus to auto-backup daily. If an update truly goes wrong, restore from backup.
6. Don't interrupt the update
Don't refresh, don't close the tab, don't restart your server. Let it finish or fail completely. Interrupting it is the #1 cause of stuck updates.
Stuck Update Troubleshooting Checklist
Update has been running for 30+ minutes?
- ā Check if PHP process is still running (ps aux | grep php)
- ā Check debug.log for recent entries
- ā Wait 15 more minutes (seriously)
- ā Clear the update lock (DELETE FROM wp_options)
- ā Try the update again
Update failed/stuck again?
- ā Delete wp-content/upgrade folder
- ā Check disk space (df -h)
- ā Check PHP memory_limit
- ā Check max_execution_time
- ā Check file permissions (chmod 755)
- ā Disable all plugins and try again
Still stuck?
- ā Do a manual update (download, FTP upload, database update)
- ā Contact your hosting support (they might see server errors you can't)
The Real Talk
Stuck WordPress updates are genuinely scary. Your site's down, you don't know what's happening, and you're worried you'll have to restore from backup and lose recent changes.
In reality, 95% of stuck updates can be recovered in under 10 minutes. You're not losing data. The update isn't broken. Something just timed out or ran out of resources.
The difference between a 15-minute problem and a 2-hour panic is knowing what to check. Clear the lock. Delete the upgrade folder. Check disk space. Try again.
Most of the time, one of those steps fixes it.
And if it doesn't? Manual update takes 15 minutes and works 100% of the time. You get your site updated, you keep all your data, and you move on.
Don't let a stuck update terrify you. It's usually smaller than it feels.
