You went to update a plugin or WordPress core, stepped away for a moment, and came back to find your entire website displaying this message:
But a minute passes. Then five. Then an hour. The message is still there — and your website is completely inaccessible to every visitor.
Your WordPress site is stuck in maintenance mode.
The good news: this is one of the easiest WordPress errors to fix. You can resolve it in under two minutes — and you don't need any technical expertise to do it. This guide will explain exactly why it happens, how to fix it right now, and how to make sure it never happens again.
When WordPress performs an update — whether it's a core update, a plugin update, or a theme update — it temporarily puts your site into maintenance mode to protect visitors from seeing a broken or half-updated website during the process.
Here's what WordPress does behind the scenes during every update:
.maintenance in your WordPress root directory.maintenance file when the update completes successfullyThis whole process usually takes 10 to 30 seconds. Visitors might not even notice.
The problem happens in step 4. If the update is interrupted — your browser closed, your internet dropped, a PHP timeout occurred, or a server error fired mid-update — WordPress never gets to delete the .maintenance file. Your site stays in maintenance mode indefinitely because the trigger to end it never fires.
.maintenance file in placeThis is the fastest method and requires no extra software.
public_html, www, or a folder named after your domain.maintenance.maintenance file is hidden by default. In cPanel File Manager, click Settings in the top-right corner and check "Show Hidden Files (dotfiles)" then click Save.
.maintenance file to select itIf you don't have access to a file manager, FTP works just as well.
wp-config.php and wp-login.php).maintenanceIf you have SSH access to your server, this is the fastest method of all — one single command:
rm /path/to/your/wordpress/.maintenance
Replace /path/to/your/wordpress/ with your actual WordPress installation path (e.g., /var/www/html/ or /home/username/public_html/).
If you're not sure of the path, run:
find / -name ".maintenance" 2>/dev/null
This will locate the file wherever it is on your server.
Once your site is back online, don't just breathe a sigh of relief and move on. The update that triggered maintenance mode likely didn't complete. Here's what to do next:
Step 1: Check what was being updated
Log in to your WordPress admin dashboard and go to Dashboard → Updates. You'll see a list of available updates. Check whether any plugins, themes, or WordPress core still show as having updates available — a sign that the interrupted update didn't finish.
Step 2: Run the update again
This time, stay on the page and wait for it to fully complete before doing anything else. Don't click elsewhere, don't close the tab, and make sure your internet connection is stable.
Step 3: Update one item at a time
Instead of selecting all plugins and updating them simultaneously, update them one by one. This is slower but far less likely to trigger a maintenance mode issue, especially on shared hosting.
Step 4: Verify your site is working correctly
After updating, check your homepage, a few posts or pages, your contact form, and any other key functionality. If something breaks after an update, you'll want to know immediately.
In very rare cases, deleting the .maintenance file doesn't bring the site back. This usually means the interrupted update caused a secondary problem:
The update broke a plugin or theme
If a plugin update was interrupted partway through, the plugin's files may be in a half-updated, broken state. This can cause a white screen or 500 error even after maintenance mode ends.
Fix: Connect via FTP, navigate to /wp-content/plugins/, and delete the folder of the plugin that was being updated. Then reinstall it fresh from Plugins → Add New.
WordPress core update was interrupted
A partial core update can leave critical WordPress files in a damaged state.
Fix: Download the latest WordPress version from wordpress.org, delete the wp-content folder from the downloaded package (to protect your existing content), then upload all remaining files to your server via FTP, overwriting existing files.
The site now shows a White Screen of Death or 500 error
The maintenance mode file is gone but the underlying update damage is causing a new error.
Fix: Refer to our guides on fixing the WordPress White Screen of Death and fixing the 500 Internal Server Error.
You still can't access wp-admin
Fix: Try deactivating all plugins via FTP by renaming the /wp-content/plugins/ folder to plugins_disabled. If that restores access, reactivate plugins one by one to find the broken one.
The fix is easy — but prevention is even better:
For those curious about what's actually happening under the hood, here's what the .maintenance file looks like:
<?php $upgrading = 1715000000; ?>
It's a tiny PHP file containing a single variable — a Unix timestamp recording when the maintenance period started. WordPress checks for this file on every page load.
If it exists and the timestamp is less than 10 minutes old, WordPress displays the maintenance message. If the timestamp is older than 10 minutes, WordPress should ignore it automatically.
If you're reading this because you want to put your site into maintenance mode deliberately — not because you're stuck in it — here's the right way to do it.
Never manually create a .maintenance file for planned downtime. It's unreliable and gives you no control. Instead, use a dedicated maintenance mode plugin:
| Plugin | Features |
|---|---|
| SeedProd | Most popular. Drag-and-drop builder for beautiful coming soon/maintenance pages. Email opt-in forms to capture leads while your site is down |
| WP Maintenance Mode | Lightweight and free. Countdown timer, custom messages, easy on/off toggle from dashboard |
| Elementor Maintenance Mode | If you use Elementor, built-in feature under Settings → Maintenance Mode lets you use any Elementor-designed page |
All of these plugins handle the enable/disable process cleanly — no orphaned files, no getting stuck.
| Situation | Action |
|---|---|
| Site showing "Briefly unavailable for scheduled maintenance" | Delete the .maintenance file from WordPress root via File Manager or FTP |
| Can't see the .maintenance file | Enable "Show Hidden Files" in your file manager or FTP client |
| Site still broken after deleting .maintenance | Check for an interrupted plugin/theme update — reinstall the affected plugin or re-upload WordPress core files |
| White screen or 500 error after maintenance mode | See our White Screen of Death and 500 Error fix guides |
| Want to prevent this happening again | Update one plugin at a time, stay on the page, use a staging site and take backups |
| Want to use maintenance mode intentionally | Use SeedProd or WP Maintenance Mode plugin instead of the .maintenance file |
.maintenance file manually.
.maintenance file is a temporary PHP file that only controls whether the maintenance message is shown. Deleting it has zero effect on your database, posts, pages, settings, or any other content.
Yes. Add this line to wp-config.php to disable automatic core updates:
define( 'WP_AUTO_UPDATE_CORE', false );
However, automatic minor updates (security patches) are important for keeping your site safe. Consider disabling only major auto-updates and keeping minor security updates enabled.
WordPress getting stuck in maintenance mode
sounds alarming but is genuinely one of the simplest problems to solve. Find the .maintenance file in your WordPress root directory, delete it, and your site is back online in seconds.
The key is knowing where to look and how to see hidden files — once you know that, it's a two-minute fix you can do yourself without any developer help.
Get in touch with us today and we'll sort it out