WordPress Stuck in Maintenance Mode
What Is This Error?
Every time WordPress runs an update — for core, a plugin, or a theme — it puts your site into maintenance mode and shows visitors this message: “Briefly unavailable for scheduled maintenance. Check back in a minute.” This is intentional and normally lasts only a few seconds while files are swapped out.
To trigger that message, WordPress creates a hidden file called .maintenance in your site’s root directory. Once the update finishes successfully, WordPress deletes that file and your site comes back online. The problem is that if the update crashes, times out, or gets interrupted, WordPress never gets the chance to clean up — so that file just sits there, keeping your site locked in maintenance mode forever.
The good news: this is one of the simplest WordPress problems to fix. No database edits, no reinstall. You delete one file and your site is back.
Get free WordPress & AI tips
Join 500+ readers. No spam, unsubscribe anytime.
Why Does This Happen?
- PHP execution timeout: Your server has a maximum time limit for running scripts. A large plugin or theme update that exceeds that limit gets cut off mid-process, leaving the
.maintenancefile behind. - Dropped browser connection: If you close the tab or lose internet while an update is in progress, WordPress has no way to complete the final cleanup step — even if the actual file changes finished.
- PHP memory exhaustion: Updates that demand more RAM than your server’s
memory_limitallows will crash partway through, stopping WordPress before it can remove the maintenance flag. - Running too many updates at once: Selecting every plugin and hitting Update All can overload a shared hosting environment, causing one or more updates to fail mid-execution.
- Caching or CDN locking: Some caching layers or CDN configurations lock files during the update window and inadvertently prevent WordPress from deleting the
.maintenancefile even after a clean update.
How to Fix It — Step by Step
-
Connect to your server via FTP or File Manager. Use an FTP client like FileZilla, or open the File Manager inside your hosting control panel (cPanel, Plesk, etc.). Navigate to your WordPress root directory — the folder that contains
wp-admin,wp-content, andwp-includes.You should see: The main WordPress directory listing with all core folders visible.
-
Enable hidden file visibility. The
.maintenancefile starts with a dot, which hides it by default. In FileZilla, go to Server → Force Showing Hidden Files. In cPanel File Manager, click Settings and tick Show Hidden Files (dotfiles), then click Save.You should see: Dotfiles like
.htaccessnow appearing alongside your regular files in the directory listing. -
Find and delete
.maintenance. Locate the file named exactly.maintenancein the root directory. Right-click it and choose Delete. This file contains only a timestamp — there is nothing in it worth keeping.You should see: The
.maintenancefile disappear from the listing immediately. -
Reload your website. Open a fresh browser tab, clear your browser cache (Ctrl+Shift+Delete on Windows, Cmd+Shift+Delete on Mac), and visit your site’s URL.
You should see: Your homepage loading normally with no maintenance message.
-
Verify the original update completed. Log in to wp-admin and go to Dashboard → Updates or check your Plugins list. If the update that triggered this is still showing as available, run it again now.
You should see: Either “Everything is up to date” or the plugin displaying its latest version number.
-
Alternative — delete via SSH (fastest method for developers). If you have SSH access, connect to your server and run:
rm /var/www/html/.maintenanceReplace the path with your actual WordPress root. No output means success.
You should see: A silent return to the prompt. Confirm with
ls -la | grep maintenance— nothing should appear.
Common Mistakes When Fixing This
- Waiting for it to self-resolve: Once the update process has ended — successfully or not — nothing will automatically delete the
.maintenancefile. Waiting hours won’t help. Manual deletion is always required. - Deleting the wrong file: Do not confuse
.maintenancewith.htaccessorwp-config.php. Deleting either of those will cause a far more serious site failure. Read the filename carefully before clicking delete. - Forgetting to clear the cache: Even after you delete the file, a caching plugin or CDN may continue serving the cached maintenance page. Purge your caching plugin (WP Rocket, W3 Total Cache, etc.) and — if applicable — clear your Cloudflare cache before concluding the fix didn’t work.
- Fixing the symptom but ignoring the root cause: If this keeps happening on your site, your PHP
max_execution_timeormemory_limitis too low. Add these lines to yourwp-config.phpas a starting point and check with your host about raising server-level limits:@ini_set('memory_limit', '256M');
Frequently Asked Questions
How long should WordPress maintenance mode normally last?
For a typical plugin update, anywhere from a few seconds to about a minute. Larger updates — like a major WordPress core release — can take two to three minutes on slower servers. If your site has shown the maintenance screen for more than five minutes, the update has almost certainly failed and you should go ahead and delete the .maintenance file.
Will deleting the .maintenance file cause any data loss?
No. The .maintenance file holds nothing but a Unix timestamp that marks when the update began. Deleting it has zero effect on your posts, pages, media, database, or settings. Your content is completely untouched.
My site still shows the maintenance page after I deleted the file — what now?
This is almost always a caching problem. First clear your browser cache, then purge your WordPress caching plugin, and finally clear any server-side caches (Redis, Varnish) or CDN caches. If you use Cloudflare, log in and do a full cache purge from the Caching tab. One of those layers is almost certainly serving a stale copy of the maintenance page.
How do I stop this from happening again?
Two practical steps help most: first, increase your PHP time and memory limits so updates have enough resources to finish cleanly. Second, avoid bulk-updating every plugin at once — update them in small batches of two or three. You can also take a full backup before any update run, which won’t prevent the issue but makes recovery much easier if something else goes wrong.
