How to Fix WordPress Stuck in Maintenance Mode
Remove the temporary .maintenance file only after confirming the update process has stopped, then complete or roll back the interrupted update and verify the site.
Quick fix: wait a few minutes and confirm no WordPress update is still running. Then delete the hidden .maintenance file from the WordPress root—the directory containing wp-admin, wp-content and wp-includes. Reload the site and finish checking the update that was interrupted.
Do not delete files while an update process is actively replacing them.
Why WordPress gets stuck
During a core, plugin or theme update, WordPress creates .maintenance so visitors do not receive partially updated code. It normally removes the file when the update completes.
The file can remain when:
- the browser or network disconnects;
- PHP reaches its execution or memory limit;
- the process is killed;
- file permissions block an update;
- the disk fills up;
- several updates run together;
- a deployment is interrupted.
The maintenance message is often the leftover symptom, not the root problem.
Confirm the update has stopped
Wait two to five minutes, then check the hosting process view or ask support whether PHP/CLI update processes are still running. If you started an update through WP-CLI, return to that terminal and inspect its status.
Take a filesystem and database backup if the site has valuable recent data. An interrupted plugin update may leave a directory half replaced.
Remove .maintenance
Using SFTP or the hosting file manager:
- open the WordPress root;
- enable Show hidden files;
- find
.maintenance; - delete only that file;
- reload the homepage and
/wp-admin/.
With SSH:
cd /path/to/wordpress
ls -la .maintenance
rm .maintenance
Resolve /path/to/wordpress explicitly before removing anything. The file should be in the same directory as wp-config.php on a standard installation.
With WP-CLI, when WordPress can still bootstrap:
wp maintenance-mode deactivate
Check which update failed
Sign in and open Dashboard → Updates. Check plugin and theme screens for an update that remains pending or reports an error.
Review:
wp-content/debug.log
and the host’s PHP/server log around the interruption time. Look for memory exhaustion, timeouts, permission errors and failed file moves.
If one plugin directory is incomplete, restore that plugin from a known-good backup or install the same clean version from its official source. Do not mix files from different releases.
For core, verify checksums:
wp core verify-checksums
Replace damaged core files using the matching official WordPress release, preserving wp-content and wp-config.php.
Fix repeated maintenance failures
If updates repeatedly stall:
- update one component at a time;
- check free disk space and inodes;
- confirm WordPress can write the required directories;
- review PHP execution and memory limits;
- run updates from WP-CLI when the browser request times out;
- ask the host about killed processes or security rules;
- test the same update on staging.
Use the memory-limit guide only when logs show memory exhaustion.
If the maintenance page remains
A caching plugin, host cache or CDN may have cached the maintenance response. Purge the WordPress/host page cache first, then CDN cache. Test with a cache-busting query string and inspect the HTTP response:
https://example.com/?maintenance-check=1
Also check for a maintenance or coming-soon plugin. Its page is independent of WordPress core’s .maintenance file.
Verify the site after recovery
Do more than load the homepage:
- sign in to wp-admin;
- open the component that was updated;
- test forms, checkout or bookings;
- visit several uncached pages;
- run Tools → Site Health;
- check logs for new fatal errors;
- confirm scheduled tasks are running.
If removing .maintenance reveals a blank page or HTTP 500, the interrupted update damaged or exposed incompatible code. Continue with the White Screen or 500 error guide rather than repeatedly deleting the maintenance file.
Frequently asked
- It is a hidden file in the WordPress root directory, usually beside wp-admin, wp-content, wp-includes and wp-config.php. Enable hidden-file display in your file manager.
- Yes after the update process has stopped. Deleting it only removes the temporary maintenance flag; it does not repair files left incomplete by an interrupted update.
- Another update or deployment process may still be running, or a maintenance plugin/cache may be serving a separate page. Check active processes, plugins and cache layers.