How to Fix WordPress Stuck in Maintenance Mode

WordPress | Updated July 2026

If every page of your site, including wp-admin, now reads "Briefly unavailable for scheduled maintenance. Check back in a minute." and it has been a lot longer than a minute, WordPress is stuck in maintenance mode after an update went sideways. This Ultra Web Hosting guide explains exactly why it happens, walks through the one-file fix using cPanel File Manager or FTP, and shows you how to finish the interrupted update so it does not lock you out again.

Do Not Skip This

Deleting the File Is Half the Job

Removing .maintenance unlocks the site, but the update that created it never finished. You are now running a half-updated plugin, theme, or core. Re-run that same update, one item at a time, and fix whatever caused it to stall in the first place, usually a timeout or a memory limit that is too low.

  • Unlocking the site does not complete the update
  • A half-updated component can trigger a fatal error later
  • Re-run the update and address the underlying resource issue

01. The Symptom: Locked Out With a Maintenance Message

You know you have this exact problem when every request to your site returns the same plain-text page:

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

The telltale signs that this is the stuck-maintenance issue and not something else:

  • The message shows on every page, not just one.
  • It shows on wp-admin too, so you cannot log in to fix it from the dashboard.
  • There is no theme styling. It is a bare white page with one sentence, because WordPress serves this notice before it loads your theme.
  • It has been up for far longer than the "minute" it promises.

That last point is the giveaway. A real update takes a few seconds. If the page has been showing this message for several minutes or hours, the update did not finish and WordPress never took the site back out of maintenance mode.

02. Why WordPress Gets Stuck in Maintenance Mode

This is normal WordPress behavior working as designed, right up until something interrupts it.

Any time WordPress updates core, a plugin, or a theme, it does the following:

  1. Writes a temporary file named .maintenance into your site root (the same folder as wp-config.php).
  2. Puts the site into maintenance mode so visitors do not hit a site with half-swapped files.
  3. Downloads and installs the new files.
  4. Deletes .maintenance, which takes the site back out of maintenance mode.

That fourth step is the one that gets skipped. If the update is interrupted before it finishes, the .maintenance file is never deleted and the site stays locked. Common ways an update gets interrupted:

  • A PHP timeout. A large update runs past max_execution_time and the process is killed mid-update.
  • Running out of memory. The update hits the PHP memory limit and dies with a fatal error.
  • Closing the browser tab or navigating away while the update is still running.
  • A plugin or theme conflict that throws an error partway through.
  • Updating several things at once, where one item stalls and takes the whole batch down with it.
Note

The site is not broken in the traditional sense. WordPress is deliberately holding the door shut because it thinks an update is still in progress. Your files, database, and content are all fine. You just need to tell WordPress the update is over.

03. The Fix in One Line: Delete the .maintenance File

Here is the entire fix, in one sentence: delete the file named .maintenance from your site root.

That is it. The moment that file is gone, WordPress stops serving the maintenance notice and your site loads normally again. There is nothing to edit, nothing to reinstall, and no database change. The only catch is that .maintenance is a hidden file, so you have to make hidden files visible before you can see and delete it.

It Is a Hidden Dotfile

Any filename that starts with a dot is hidden by default on Linux hosting, and .maintenance starts with a dot. If you open File Manager or your FTP client and do not see it, that is expected. You must turn on "show hidden files" (also called dotfiles) first, or the file will be invisible and you will think it is already gone.

04. Fix It With cPanel File Manager

This is the fastest route because you do not need any software installed. It all happens in the browser.

  1. Log in to cPanel for your account and open File Manager (under the Files section).
  2. Before anything else, turn on hidden files. Click Settings in the top-right corner, tick Show Hidden Files (dotfiles), and click Save. Without this, .maintenance stays invisible.
  3. Navigate to your site root. For your primary domain this is public_html. For an addon domain or subdomain it is that domain's document root. You are in the right place when you can see wp-config.php, wp-content, and wp-load.php.
  4. Find the file named .maintenance in that folder. It is a small file, only a few bytes.
  5. Right-click it and choose Delete, then confirm. (You can also select it and click Delete in the toolbar.)
  6. Reload your site in a fresh browser tab. The maintenance message should be gone and your site should load normally.
Make Sure You Are in the Site Root

The .maintenance file sits in the same folder as wp-config.php, not inside wp-content or wp-admin. If you cannot find it, double-check you are in the correct document root for the domain that is stuck. On accounts with multiple sites, each WordPress install has its own root.

05. Fix It Over FTP

If you already have an FTP or SFTP client set up (FileZilla, WinSCP, Cyberduck, or similar), you can delete the file that way instead.

  1. Connect to your account with your FTP or SFTP credentials.
  2. Turn on hidden files in the client. In FileZilla this is Server > Force showing hidden files. In WinSCP it is a toolbar toggle. Dotfiles are hidden until you do this.
  3. Browse to your web root, the folder that holds wp-config.php (usually public_html or your domain's document root).
  4. Locate .maintenance, right-click it, and choose Delete.
  5. Reload your site to confirm it is back.
Also Fine

FTP or SFTP Client

A good option if you already work in FileZilla or WinSCP day to day. Just remember to force-show hidden files first, or the dotfile stays invisible.

  • Handy if you are already connected
  • Must enable "show hidden files" per client
  • Same file, same location

06. Confirm the Site, Then Finish the Interrupted Update

Load a couple of pages and log in to wp-admin to confirm everything is working. Once the site is back, you are not quite done, because the update that caused this never actually finished.

  1. Log in to your dashboard and go to Dashboard > Updates. Whatever was mid-update when it stalled will usually still show as available.
  2. Re-run that update deliberately, one item at a time. Update the single plugin, theme, or core that was interrupted, rather than clicking "update all" again.
  3. Watch it complete. Let each update finish before starting the next, and do not close the tab while it runs.
  4. Fix the underlying cause. If the update timed out or ran out of memory, it will very likely stall again unless you address it. That usually means raising PHP memory and execution time, which we cover in the next section and in our performance guide.
Re-Run the Update, Do Not Just Leave It

A half-finished update means some files are new and some are old. That mismatch can run quietly for a while and then throw a fatal error days later when a page hits the mismatched code. Always complete the interrupted update after you unlock the site so core, plugins, and themes are all on matching versions.

If the update keeps failing because the site is under-resourced, our guide on how to optimize WordPress performance (article 276) covers raising PHP memory, caching, and cutting down what runs on each request. Timeouts and memory errors during updates are almost always a resource problem, and the same fixes that speed up a site also let updates finish cleanly. If the update leaves you facing a "There Has Been a Critical Error on This Website" message or a blank page, our guides "How to Fix There Has Been a Critical Error on This Website" and "How to Fix the WordPress White Screen of Death" pick up from there.

07. Preventing It Next Time

Stuck maintenance mode is almost entirely preventable. A few habits keep it from happening:

  1. Update one thing at a time. Do not select every plugin and hit "update all" on a busy site. If one item stalls in a bulk update, it can leave the whole batch and the .maintenance file hanging.
  2. Do not close the tab. Let each update run to completion. Closing the browser or navigating away mid-update is a common way to interrupt it.
  3. Give PHP enough memory and time. Updates that time out or run out of memory are the number-one cause of this. Make sure your PHP memory limit and execution time are high enough for the update to finish. Raising resources ties directly into the same tuning covered in article 276.
  4. Back up first. Take a backup before any batch of updates so you can restore in seconds if something goes wrong. See how to fix a hacked WordPress site (article 478) for backup and restore practices that apply here too.
  5. Test on staging. For important sites, run updates on a staging copy first and push to live once you have confirmed nothing breaks.
Timeouts Trace Back to Resources

If your updates repeatedly stall, the pattern is almost always a PHP timeout or memory ceiling. Bumping memory_limit and max_execution_time in the MultiPHP INI Editor, or asking us to, is usually all it takes. A fresh WordPress install guide (article 343) also shows the recommended baseline settings for a new site.

08. If Deleting the File Does Not Fix It

Occasionally you delete .maintenance, reload the site, and instead of your homepage you get an error or a blank page. That means the interrupted update left the site in a broken, half-updated state. The maintenance lock is gone, but now the mismatched files are throwing a fatal error.

You see "There Has Been a Critical Error on This Website." The half-finished update broke something. Read our guide "How to Fix There Has Been a Critical Error on This Website", which walks through reading the debug log and deactivating the offending plugin or theme.

You get a completely blank white page. This is the classic white screen of death, again usually from a fatal PHP error left by the failed update. Our guide "How to Fix the WordPress White Screen of Death" covers enabling debug output and finding the culprit.

You would rather just roll back. If you took a backup before the update, restoring it is the cleanest fix. It puts every file and the database back to the working state from before the update, so there is no half-updated mismatch left over. See how to fix a hacked WordPress site (article 478) for the restore procedure, which applies equally to a botched update.

A Maintenance Page Is Not Always This Bug

If your maintenance page is styled, branded, or shows a custom message and a countdown, that is not the stuck .maintenance file. That is a maintenance-mode or coming-soon plugin that someone enabled on purpose. The fix there is different: you turn it off in that plugin's settings, not by deleting a file. Deleting .maintenance only clears the bare, unstyled WordPress notice described in this guide.

Watch Out for the PclZip Error Too

If an update fails with a PclZip or "Incompatible Archive" error rather than leaving a maintenance lock, that is a separate, related update problem. See our guide on the PclZip error (article 429) for that one.

Still Stuck After Deleting the File?

If the maintenance message will not clear, the site errors out after you remove the file, or you would rather we handle it, open a ticket. Send us the domain and tell us which update was running when it stalled. We will clear the lock, finish the update safely, and tune your PHP limits so it does not happen again.

Open a Support Ticket

Quick Recap: Unstick WordPress in Six Steps

If you only do six things from this guide, do these:

  1. Confirm the symptom: the "Briefly unavailable for scheduled maintenance" message on every page, including wp-admin.
  2. Enable hidden files in cPanel File Manager or your FTP client, because .maintenance is a dotfile.
  3. Go to your site root, the folder that holds wp-config.php (usually public_html).
  4. Delete the .maintenance file and reload the site to confirm it is back.
  5. Re-run the interrupted update one item at a time and let each one finish.
  6. Fix the cause: raise PHP memory and execution time so timeouts do not lock you out again, and back up before your next round of updates.

Last updated July 2026 · Browse all WordPress articles

  • 0 Users Found This Useful

Was this answer helpful?

Related Articles

How to Move a Weebly Site to WordPress

WordPress | Updated July 2026 There is no automatic importer that turns a Weebly site into a...

The Best WordPress Caching Plugins and How to Configure Them

WordPress | Updated July 2026 A caching plugin is the single biggest speed win available to...

JetPack says my website is offline

WordPress | Updated 2026 Quick Answer JetPack's uptime monitor can report false "offline"...

504 Error - Are You Sure You Want to Do This?

WordPress | Updated March 2026 The "Are you sure you want to do this?" message in WordPress...

Not Receiving Form Email Through WordPress - SMTP

WordPress | Updated March 2026 If your WordPress contact forms aren't sending email, the...



Save 30% on web hosting - Use coupon code Hosting30