14+ years building on WordPress / Replies in under 5 hours
Troubleshooting 4 min read · Updated July 2026

How to Fix a WordPress Site Stuck in Maintenance Mode

AK
Ajay Khandal
WordPress Developer
Illustration of a padlock gate across a browser window being unlocked by an SSH terminal cable and key, representing fixing a WordPress site stuck in maintenance mode
TL;DR

WordPress creates a .maintenance file in your site root when an update starts, and deletes it when the update finishes. If the update was interrupted, the file stays and your site stays locked. The fix: delete the .maintenance file via FTP, SSH (rm .maintenance), or WP-CLI (wp maintenance-mode deactivate). After clearing it, check Dashboard → Updates for incomplete updates and rerun any that were mid-install.

Your site is showing “Briefly unavailable for scheduled maintenance. Check back in a minute.” It’s been more than a minute. Here’s what happened and how to clear it fast.

The 30-Second Fix

WordPress creates a hidden file called .maintenance in your site’s root directory when an update starts. It deletes the file when the update finishes. If the update was interrupted — server timeout, browser closed mid-update, plugin conflict — the file stays behind and your site stays locked.

The fix is deleting that file. That’s it.

Method 1: Delete via FTP or cPanel File Manager

This is the most common route if you don’t have SSH access.

  1. Connect to your server via FTP (FileZilla, Cyberduck) or open your host’s File Manager in cPanel/Plesk.
  2. Navigate to your WordPress root directory — the one containing wp-admin, wp-content, and wp-includes.
  3. Enable hidden files. In cPanel File Manager, look for “Settings” and tick “Show Hidden Files”. In FileZilla: Server → Force showing hidden files.
  4. Find the file named .maintenance and delete it.
  5. Reload your site.

If the file isn’t there, your site may have a different problem. A blank white screen or database error showing after refresh points to something else — the database connection error guide or the ‘site can’t be reached’ fix covers those cases.

Method 2: Delete via SSH

If you have SSH access, this takes five seconds.

cd /var/www/html  # or wherever your WordPress root is
rm .maintenance

Swap the path for your actual document root. Your host’s control panel will show the full path if you’re not sure — it’s usually something like /home/username/public_html on shared hosting.

Method 3: WP-CLI

If WP-CLI is installed on your server, this is the cleanest option because it also checks and reports maintenance state cleanly:

wp maintenance-mode deactivate

Run it from your WordPress root directory. If you’re managing maintenance mode intentionally (scheduled work, deployments), wp maintenance-mode status shows you the current state before making changes.

After Clearing Maintenance Mode

Deleting .maintenance gets your site back online. It doesn’t fix whatever interrupted the update. Do these two things next:

Check for incomplete updates

Log into wp-admin and go to Dashboard → Updates. If any plugins, themes, or core files show as available for update, they may have been mid-install when the interruption happened. Run them individually rather than all at once — manual plugin updates are safer than bulk-updating when you’re already dealing with instability.

Check for plugin conflicts

If the same plugin keeps causing interruptions, temporarily rename the wp-content/plugins folder to plugins-disabled via FTP. If the site behaves normally with plugins disabled, rename it back and reactivate plugins one at a time until the problematic one surfaces.

Why Updates Get Interrupted

Four things cause this most often:

  • Server timeout: Shared hosting often has tight PHP execution time limits (30–60 seconds). A large plugin update can hit the limit before finishing.
  • Low PHP memory: Add define('WP_MEMORY_LIMIT', '256M'); to wp-config.php if you’re repeatedly hitting this issue.
  • Browser or network disconnect: The update process runs server-side, but some hosts rely on the browser to keep the connection alive. Closing the tab can orphan the process.
  • Plugin conflict during update: One plugin’s update triggers a PHP error that kills the entire process before .maintenance is cleaned up.

How to Prevent It Next Time

None of these are complicated, but skipping them is why most people end up back here:

  • Back up before every update. UpdraftPlus or your host’s snapshot tool takes two minutes and means any failed update is reversible. More on this in the WordPress maintenance guide.
  • Update one thing at a time. Bulk-updating eight plugins simultaneously multiplies the chance of a conflict and makes it harder to identify which one caused the problem.
  • Use a staging site. Test updates on a clone before running them on production. Most managed WordPress hosts include staging environments — if yours doesn’t, it’s worth reconsidering the host.
  • Keep your server environment current. PHP 8.1 or later, adequate memory, and a host that doesn’t kill long-running processes all reduce update failures significantly.

Taking update instability seriously is also a security issue — failed updates often mean security patches didn’t apply. An unpatched plugin is one of the most common entry points for site compromises.

Still Not Resolved?

If your site is still down after deleting .maintenance, or if this keeps happening every time you run updates, get in touch. Recurring maintenance mode issues usually point to a server configuration problem or a specific plugin conflict that needs proper diagnosis — not another manual delete. As part of a WordPress care plan, updates are handled with staging, backups, and conflict testing before anything touches the live site.

Frequently asked questions

Delete the .maintenance file from your WordPress root directory. Connect via FTP or your host's File Manager, enable hidden files, find .maintenance in the root folder (same level as wp-config.php), and delete it. Refresh your site — it should be back immediately.

It's in the WordPress root directory — the same folder that contains wp-admin, wp-content, wp-includes, and wp-config.php. It's a hidden file, so you need to enable 'show hidden files' in your FTP client or File Manager before it will appear.

An update that didn't finish. WordPress creates .maintenance at the start of any update and removes it at the end. If the process was interrupted — server timeout, PHP memory limit, browser disconnect, or a plugin conflict mid-update — the file never gets deleted and the site stays locked.

Use your hosting control panel's File Manager (available in cPanel, Plesk, and most shared hosts). Navigate to the WordPress root, enable hidden files in the settings, and delete the .maintenance file. Alternatively, if your host provides SSH access, run: rm .maintenance from the site root.

Yes. From your WordPress root directory, run: wp maintenance-mode deactivate. You can also run wp maintenance-mode status first to confirm the site is actually in maintenance mode before making changes.

Update plugins one at a time instead of in bulk, back up before every update, and increase your PHP memory limit if you're on shared hosting (define('WP_MEMORY_LIMIT', '256M') in wp-config.php). Using a staging environment to test updates before applying them to the live site eliminates the risk entirely.

AK

Written by Ajay Khandal

WordPress Developer — building, fixing and speeding up WordPress sites.

Work with me →