WordPress Stuck on 'Briefly Unavailable for Maintenance'
You clicked "Update" on a plugin, and now every page on your site just shows: "Briefly unavailable for scheduled maintenance. Check back in a minute." Except a minute has turned into an hour, and refreshing doesn't help. Here's what's actually happening and how to get your site back up in under five minutes.
Symptom
Every URL on the site - front end, wp-admin, even wp-login.php - returns the same plain white page with a one-line message about scheduled maintenance. There's no error code, no stack trace, nothing in the browser console. It looks intentional, because technically it is - WordPress is doing exactly what it's designed to do.
Cause
WordPress puts itself into maintenance mode automatically whenever it runs an update - a plugin update, a theme update, or a core update. The moment the update process starts, WordPress creates a tiny file called .maintenance in your site's root directory. That file is what triggers the "briefly unavailable" message across the whole site.
Under normal conditions, WordPress deletes this file the second the update finishes, and the message disappears in a second or two. The problem happens when the update process gets interrupted before it can clean up after itself. Common triggers:
- The PHP process hit your host's
max_execution_timelimit mid-update (common on shared hosting with large plugins like WooCommerce or Elementor). - You closed the browser tab or hit the back button while the update was still running.
- A memory limit was exceeded (`PHP Fatal error: Allowed memory size exhausted`) partway through.
- An auto-update job ran via WP-Cron at the same time you were manually updating something else, and the two processes collided.
- A flaky connection dropped the request before the server could respond.
In every case, the fix is the same: WordPress never got to the line of code that deletes .maintenance, so the flag is just sitting there, stuck on.
The Fix
Option 1: Delete the file via cPanel File Manager
This is the fastest route if you don't have SSH access.
- Log in to cPanel and open File Manager.
- Navigate to your WordPress root - usually
public_html, orpublic_html/yourdomain.comif it's an addon domain. - Make sure Settings → Show Hidden Files (dotfiles) is turned on. The
.maintenancefile won't show up otherwise. - Find
.maintenancein the file list and delete it. - Reload your site. It should be back immediately - no cache clearing needed for this part.
Option 2: Delete it over SSH
If you have terminal access, this takes about ten seconds:
cd /home/username/public_html
ls -la | grep maintenance
rm .maintenanceSwap in your actual cPanel username and site path. If your WordPress install lives in a subdirectory, cd into that instead.
Option 3: Use WP-CLI
If WP-CLI is available on your server (most Getwebup VPS and reseller plans have it), you can check and clear maintenance mode without hunting for the file manually:
wp maintenance-mode status
wp maintenance-mode deactivateThis is the safest option because WP-CLI knows exactly which file to remove and won't touch anything else.
If the file keeps coming back
Sometimes you delete .maintenance, the site comes back, and then thirty seconds later it's stuck again. That almost always means an update is still trying to run in a loop - usually a scheduled auto-update via WP-Cron that keeps failing at the same step. To stop the loop:
- Go to Plugins in wp-admin and disable auto-updates for the plugin that was mid-update when this started.
- Check Tools → Site Health → Info → WordPress Constants for your PHP memory limit. If it's below 256M, that's a likely culprit for large plugin updates.
- Manually re-run the update once the site is back up, and watch it complete instead of walking away.
Prevention
| Cause | Prevention |
|---|---|
| Execution timeout during update | Ask your host to raise max_execution_time to 300s for admin-ajax and update requests, or update plugins one at a time instead of in bulk. |
| Low PHP memory limit | Set WP_MEMORY_LIMIT to at least 256M in wp-config.php. |
| Interrupted browser session | Don't navigate away or close the tab until you see the "Updated successfully" confirmation. |
| Auto-update collisions | Stagger auto-updates - let core update overnight, review plugin updates manually during the day. |
| Flaky connection | Run bulk updates over SSH with WP-CLI instead of the browser when your connection is unreliable. |
One more habit worth building: before any plugin or theme update, take a quick cPanel backup (or check that your Getwebup automated backup ran in the last 24 hours). A stuck .maintenance file is harmless and easy to clear, but it's a good reminder that updates can fail in messier ways too - and a recent backup means a bad update is a five-minute rollback instead of a bad day.
Frequently asked questions
Is it safe to just delete the .maintenance file?
Yes. It's a tiny flag file with no content that matters - it only tells WordPress to show the maintenance message. Deleting it doesn't affect your database, themes, or plugin files.
Why can't I see the .maintenance file in File Manager?
It's a hidden file because the filename starts with a dot. Turn on 'Show Hidden Files (dotfiles)' under File Manager settings, or use ls -la over SSH.
Will deleting the file undo the plugin update?
No. It only removes the maintenance-mode flag. If the update itself didn't finish, you may need to re-run it from Plugins > Updates once the site is back online.
The file keeps reappearing every time I delete it - what's going on?
An update is stuck in a retry loop, usually from a failing auto-update via WP-Cron. Disable auto-updates for the plugin involved, clear the file once more, and update it manually instead.
Can I prevent this without SSH access?
Yes. Update plugins one at a time rather than in bulk, avoid closing the browser tab mid-update, and raise WP_MEMORY_LIMIT in wp-config.php if your site runs memory-heavy plugins like WooCommerce.