WordPress Stuck in Maintenance Mode? How to Fix It Safely

wordpress stuck in maintenance mode feature image

You clicked update, the page spun for a while, and now your site is showing a maintenance message instead of your homepage. Worse, wp-admin may be showing the same thing. If your WordPress stuck in maintenance mode, the moment it started right after an update, it is usually not a broken site.

It is usually WordPress leaving a small update lock file behind. Maintenance for WordPress is normal during updates; problems only arise when the site gets trapped there.

TL;DR: Wait a few minutes if an update just started, then delete the hidden .maintenance file from your WordPress root folder using File Manager, FTP/SFTP, or SSH. If the message remains, clear caches and troubleshoot the failed plugin/theme update, maintenance plugin, server resources, or redirects.

The important thing is to fix the lock without making the failed update worse. Deleting the maintenance file can bring the site back, but it does not prove the plugin, theme, or core update finished properly.

So treat this as two jobs:

  1. Get the site out of maintenance mode.
  2. Find out whether the update that caused it still needs attention.

Check the Type of Maintenance Page

This step matters because there are two different problems that look similar.

WordPress has a built-in maintenance mode that appears during updates. It usually shows a plain message like:

Briefly unavailable for scheduled maintenance. Check back in a minute.

Default WordPress maintenance mode message

That default message usually points to the hidden .maintenance file in your WordPress root folder.

A designed maintenance page is different. If you see a branded page, a coming-soon layout, a countdown, a custom login redirect, or a page that still looks styled after the update failed, you may be dealing with a maintenance-mode plugin, theme setting, host page, redirect, or cache.

Here is the quick route:

What you seeMost likely causeStart with
Plain “Briefly unavailable…” messageWordPress update lock fileDelete .maintenance from the WordPress root
Branded maintenance or coming-soon pageMaintenance plugin, theme option, host setting, or cacheDisable the maintenance plugin or clear the page source
Maintenance page after deleting .maintenanceCache, failed update, redirect, wrong document root, or plugin issueClear caches and follow the deeper checks below
.maintenance keeps returningAuto-updates, server limits, cron/update failure, or compatibility issueCheck logs, update settings, resources, and failed components

The mistake is assuming every maintenance page comes from the same place. The visible problem is one page. The hidden problem can be a file, a plugin, a cache layer, or an update process that keeps failing.

Ensure Any Ongoing Update Has Stopped

If you clicked update 30 seconds ago, wait a few minutes before deleting anything.

During plugin, theme, and core updates, WordPress temporarily creates a file named .maintenance. While that file exists, WordPress shows the default maintenance message. When the update completes, WordPress removes the file.

Most normal updates finish quickly. On a slower server, a large plugin update or a bulk update can take longer. Give it 5 to 10 minutes if the update has just started and the server still seems busy. Do not wait forever. If the same page is still there after several minutes, or if you know the browser tab closed, the connection dropped, or the update screen froze, move to the fix.

Choose the Safest Fix

You are not about to perform a complex repair. In most cases, you are deleting one temporary file. Still, this is production, and production has a habit of making simple things feel personal.

  • Confirm you have automatic WordPress backups or another recent backup you trust.
  • Use your host’s File Manager if FTP/SFTP feels unfamiliar.
  • Use FTP/SFTP if you are comfortable navigating site files.
  • Use SSH only if you already know how to work in the correct directory.
  • Do not delete plugin or theme folders as your first move.

If you are not sure which folder is your WordPress site, stop and ask your host. The WordPress root is the folder that contains wp-admin, wp-content, wp-includes, and wp-config.php. On many hosts, that folder is named public_html, www, htdocs, or the domain name, but the folder name is less reliable than those WordPress landmarks.

Decision rule: if you cannot find wp-config.php, you are probably not in the right place yet.

Delete the .maintenance File

This is the fix for the default WordPress maintenance screen.

1) Use your hosting File Manager

For most site owners, File Manager is the easiest route because it works inside the hosting dashboard. Consider taking an on demand backup as a safety measure.

  • Log in to your hosting account and open File Manager.
  • Go to the WordPress root folder. Enable hidden files or dotfiles if your host has that setting.
  • Look for a file named .maintenance and hit Delete.
  • Refresh your website. Visit wp-admin and confirm you can log in.

The file name starts with a dot, so many file managers hide it by default. This is the most common reason people think the file is missing.

2) Use FTP or SFTP

FTP/SFTP is useful if your hosting File Manager is limited or hard to use.

  • Connect with your FTP/SFTP client. Open the WordPress root folder.
  • Turn on hidden file visibility in your FTP/SFTP client. Find .maintenance and Delete it.
  • Refresh the site and check your site to confirm success.

In FileZilla, Cyberduck, Transmit, and similar tools, hidden file visibility is usually a view or settings option. If you do not turn that on, .maintenance may exist while your client politely pretends it does not.

3) Use SSH

Use SSH only if you are comfortable in the terminal and know you are in the WordPress root directory.

From the WordPress root, run:

ls -la
rm .maintenance

The ls -la command matters because it shows hidden files and helps confirm your location. Before removing anything, you should see familiar WordPress items like wp-admin, wp-content, wp-includes, and wp-config.php.

For a technical user, this is the fastest fix. For everyone else, File Manager is less stressful.

What if the File Is Missing?

Do not jump straight to deleting plugins. Work through the these checks first.

1) Show Hidden Files

Because .maintenance starts with a dot, it is a hidden file on many systems. In File Manager, look for settings such as:

  • Show hidden files
  • Show dotfiles
  • Display hidden items

In FTP/SFTP tools, check the view or preferences menu. If you can see files like .htaccess, hidden files are probably visible. If you cannot see .htaccess on a typical Apache-based WordPress site, hidden files may still be off.

2) Check the Site Root

The correct folder contains:

  • wp-admin
  • wp-content
  • wp-includes
  • wp-config.php

If you are inside wp-content, you are too deep. If you are above several domain folders, you may be too high. If the host uses multiple document roots, the domain may point somewhere other than the folder you are checking.

3) Rule Out a Maintenance Plugin

If the page is branded or designed, stop treating it like the default WordPress update lock. Look for:

  • A maintenance-mode plugin
  • A coming-soon plugin
  • A theme maintenance setting
  • A host-level maintenance page
  • A redirect rule
  • A cached static page

If wp-admin is inaccessible, disable the suspected maintenance plugin by renaming its folder under wp-content/plugins. For example, rename maintenance-plugin-name to maintenance-plugin-name-disabled. Then try wp-admin again.

Once you are in, restore the folder name and fix the plugin settings. If the plugin keeps locking out admins, check login-page exclusions, custom login URL settings, and cache exclusions.

4) Check Cache and Redirects

If there is no .maintenance file and no maintenance plugin explains the page, check whether a cache or redirect is serving the wrong thing.

Common culprits include:

  • CDN rules
  • Host page cache
  • Static HTML cache files
  • .htaccess redirects
  • Nginx redirects
  • A domain pointing to the wrong document root

This is less common than the hidden-file issue, but it is real. If the domain points to the wrong folder, deleting files in the right WordPress install will not change what visitors see.

Verification

Once the site loads again, the emergency feels over. It may not be.

Deleting .maintenance removes the lock. It does not repair an update that stopped halfway through. A plugin may still be on the old version, a theme update may have failed, or a core update may need to be rerun.

Check these immediately:

  • Does the public site load?
  • Does wp-admin load?
  • Can you open the Plugins page?
  • Does WordPress still show a pending core, plugin, or theme update?
  • Are there fatal errors, missing layouts, broken forms, or checkout problems?
  • Does the maintenance message come back after a refresh?
WordPress Updates page after maintenance mode recovery

If the update is still pending, rerun it carefully. If you were updating many plugins at once, update one at a time now. Bulk updates are convenient until one component fails and you have to guess which one caused the lock.

For WooCommerce, membership sites, forms, LMS sites, or client sites, also test the pages that make the site useful. A homepage loading does not prove checkout, login, contact forms, or scheduled jobs survived the update.

Clear cache if the message remains. Cache can make a fixed site still look broken. After deleting .maintenance, clear your browser, plugin, server, and CDN caches, then test again in a private window or another network.

Often, the site is already back — you are just seeing a cached maintenance page.

If Deleting .maintenance Did Not Work

Now you are past the simple lock-file problem. The goal is to identify what failed without making the outage wider.

1) See if the File Returned

If the file reappears, something may still be trying to update. That could be automatic updates, a cron task, or a failed update loop.

Check recent automatic updates, your WordPress admin activity log, and server logs. If the same plugin or theme keeps appearing around the time the site locks, start there.

2) Disable the Suspected Plugin

If you know which plugin was updating when the site got stuck, disable that plugin by renaming its folder.

Example:

wp-content/plugins/example-plugin
wp-content/plugins/example-plugin-disabled

Then refresh the site and wp-admin. If the site works, the plugin update or compatibility issue is likely involved.

WordPress Plugins page for post-recovery diagnostics

Do not delete the plugin folder unless you have a backup and know what data it stores. Renaming is reversible. Deleting turns a diagnosis into a cleanup project.

3) Test by Disabling All Plugins

If you do not know which plugin failed, you can temporarily rename the whole plugins folder:

wp-content/plugins
wp-content/plugins-disabled

Then create a new empty folder named plugins so WordPress has a plugins directory again. Try loading the site. If the site works, restore the original folder name and reactivate plugins one by one in wp-admin. This is slower, but it tells you which plugin broke the site.

This is not the first move because it disrupts every plugin at once. On a simple blog, that may be fine. On a store, membership site, or client site, it can temporarily disable payments, forms, logins, popups, analytics, and integrations.

4) Rule Out a Theme Problem

If the failed update was a theme update, rename the active theme folder under wp-content/themes. WordPress will try to fall back to another available theme. This works best when a default WordPress theme is installed.

If your site uses a custom theme, child theme, or page builder-heavy setup, be careful. A theme switch can make the site accessible but visually broken. That is still useful for diagnosis, but it is not a finished repair. If the update left the site accessible but damaged the layout, troubleshoot it as a theme update broke design issue after the maintenance lock is gone.

5) Check wp-content/upgrade

During updates, WordPress uses the wp-content/upgrade folder for temporary update files. Leftover files here can be a clue that an update failed.

Do not treat this folder as the main fix for every case. The main built-in maintenance lock is still .maintenance in the root. But if a plugin/theme update failed halfway through, wp-content/upgrade can help confirm that the update process did not clean up normally.

6) Check Server Limits

Some stuck updates are not plugin mysteries. They are resource problems. Check:

  • PHP memory limit
  • PHP max execution time
  • Disk space
  • File permissions
  • Server error logs
  • Hosting resource limits
WordPress Site Health screen for server checks

Increase PHP memory only when the symptoms point there, such as memory-related fatal errors in logs or repeated failures during large updates. Do not treat memory increases as a universal cure. If the plugin is incompatible, more memory only gives it more room to fail.

What Triggers This Issue?

The plain explanation is that WordPress started an update and did not finish the cleanup.

The more useful explanation is that updates have more moving parts than the maintenance screen shows. WordPress has to download a package, unpack it, replace files, update records, clean up temporary files, and remove the lock. If one part stalls, the site can be left wearing the maintenance sign after the work has stopped.

Common causes include:

  • A browser tab closed during an update.
  • The connection dropped.
  • A plugin, theme, or core update timed out.
  • Too many plugins or themes were updated at once.
  • PHP memory or execution time was too low.
  • Disk space ran out.
  • File permissions prevented WordPress from replacing or deleting files.
  • A plugin or theme had a compatibility problem.
  • Auto-updates ran without anyone watching the result.
  • Cache kept serving an old maintenance page.
  • A redirect or document-root issue sent visitors to the wrong place.

This does not automatically mean the site was hacked. The default WordPress maintenance message is usually an update artifact, not a security warning.

Still, do not ignore strange behavior. If the page looks custom, suspicious, injected, or unrelated to an update, treat it as a different incident and escalate sooner.

If the failure happened around a PHP version change, test that separately in staging; PHP 8.4 WordPress staging is a useful model for separating version compatibility from a normal plugin-update problem.

Prevention

The real fix is not memorizing where .maintenance lives. The real fix is making updates less likely to fail silently.

Use these best practices for WordPress updates as your baseline:

  • Set up automatic WordPress backups before updates.
  • Test updates on a staging site when the update is risky.
  • Update high-risk plugins one at a time.
  • Avoid closing the update screen while it is running.
  • Check plugin/theme compatibility and plugin update change logs before major updates.
  • Keep enough PHP memory, disk space, and server resources.
  • Schedule updates during lower-traffic windows.
  • Test key pages after updates.
  • Monitor the site after updates instead of assuming silence means success.

The higher the stakes, the more careful your update process should be. A quick backup may be enough for a small brochure site, but for WooCommerce, membership, or client sites, production should not be where you discover an update broke something important.

This is where WPRemote helps. Once the site is back, it supports safer updates, staging, backups, and monitoring, so updates are not just a click-and-hope routine.

Decision rule: if a failed update would cost sales, leads, client trust, or a weekend, test and monitor it like it matters.

When You Need Expert Help

Escalation is not failure. It is good judgment when the problem has moved beyond the safe first steps.

Contact your host or developer if:

  • You cannot access hosting files.
  • The site is ecommerce or mission-critical and still down.
  • .maintenance keeps reappearing.
  • The maintenance page is custom, suspicious, or not explained by a plugin.
  • You see PHP fatal errors after deleting .maintenance.
  • File permissions or disk space problems keep blocking updates.

Ask the host to check server logs, disk space, file permissions, PHP memory, and whether the domain points to the correct document root. Those are concrete requests, and they usually get a better answer than “my site is stuck.”

If you need ongoing help after the outage, take time to hire freelancers who can explain access needs before they touch the site.

FAQs

How do I get WordPress out of maintenance mode?

If it is the default WordPress maintenance message, delete the hidden .maintenance file from the WordPress root folder. Then clear caches and verify the interrupted update.

Why can’t I see the .maintenance file?

Your File Manager or FTP/SFTP client may be hiding dotfiles. Enable hidden files, then check again. Also confirm you are in the correct WordPress root folder.

Can I fix maintenance mode without wp-admin?

Yes. Use your host’s File Manager, FTP/SFTP, SSH, or WP-CLI. The primary fix does not require wp-admin access.

How long should WordPress maintenance mode last?

Usually only a few seconds to a few minutes. If the site is still showing the maintenance message after 5 to 10 minutes, it is reasonable to investigate.

Is WordPress maintenance mode a sign that my site was hacked?

Usually no. The default “Briefly unavailable for scheduled maintenance” message is normally caused by an update lock file. If the page looks custom, suspicious, or unrelated to an update, escalate and check logs.

Final take

If WordPress is stuck on the default maintenance screen, start with the small fix: wait briefly, find the WordPress root, show hidden files, and delete .maintenance.

Then do the part people skip. Clear caches, verify the failed update, and test the pages that matter. The lock file is the visible problem. The interrupted update is the thing that can come back later if you ignore it.

Tags:

You may also like


How do you manage your websites?

Managing multiple WordPress websites can be time consuming and error-prone. WP Remote will save you hours every day while providing you complete peace of mind.

Managing everything yourself

But it’s too time-consuming, complicated and stops you from achieving your full potential. You don’t want to put your clients’ sites at risk with inefficient management.

Putting together multiple tools

But these tools don’t work together seamlessly and end up costing you a lot more time and money.