Your site is showing a white page that reads “Briefly unavailable for scheduled maintenance.” Nobody can get in, including you.
It happens when a plugin or core update dies before WordPress deletes the .maintenance file from your root directory. The fix takes about 90 seconds once you know where to look.
Learning how to turn off maintenance mode in WordPress covers more than one scenario, though, because the same screen has 3 completely different sources: the automatic 503 from a failed update, a plugin toggle somebody left switched on, and a host or CDN page sitting in front of your install.
This guide walks through each one:
- Deleting the
.maintenancefile via FTP, cPanel, or WP-CLI - Switching off coming soon mode in SeedProd, LightStart, and Elementor
- Clearing the cache when the screen refuses to go away
- Repairing the failed update underneath it all
What Is WordPress Maintenance Mode
WordPress maintenance mode is a temporary site state that returns a 503 Service Unavailable response while core, plugin, or theme files are being replaced. WordPress switches it on automatically during every update and switches it off the second the update finishes.
Visitors get a plain white page with a single line of text on it. The default message reads: Briefly unavailable for scheduled maintenance. Check back in a minute.
Logged-in administrators see the exact same screen. There is no bypass for the automatic version, which catches almost everyone off guard the first time.
Googlebot reads the 503 response header and treats the site as temporarily unavailable instead of permanently gone.
WordPress powers 43.3% of all websites and 60.7% of every site running a known CMS, according to W3Techs (October 2025). That scale is why this one white screen generates so much panic traffic.
Automatic Maintenance Mode vs Plugin Maintenance Mode
| Trait | Automatic Maintenance Mode (Core) | Plugin or Theme Maintenance Mode |
|---|---|---|
| Trigger | Activated automatically during any WordPress core, plugin, or theme update | Enabled manually through a plugin or theme setting |
| Duration | Usually lasts 2–30 seconds, depending on the update | Remains active until someone manually disables it |
| HTTP Response Code | Typically returns 503 Service Unavailable | May return 503 or 200, depending on how the plugin is configured |
| How to Fix | Delete the .maintenance file if WordPress gets stuck in maintenance mode | Turn off the maintenance mode toggle in the plugin or theme settings |
Diagnostic shortcut: a styled page with your logo on it is a plugin. A bare white page with one sentence is core.
What the .maintenance File Contains
One line of PHP. The file stores a Unix timestamp assigned to the $upgrading variable, and nothing else.
WordPress checks that timestamp inside the wpmaintenance() function in wp-includes/load.php. If the value is more than 10 minutes old, WordPress ignores the file completely and loads the site normally.
That 10 minute rule explains why a small number of sites recover on their own. Most do not, because a half-finished update usually leaves a second problem behind it.
Why Does WordPress Get Stuck in Maintenance Mode
WordPress stays stuck when the update process dies before it can delete the .maintenance file. 6 causes account for nearly every case: interrupted updates, PHP timeouts, memory exhaustion, file permission conflicts, an active plugin toggle, and host-level maintenance pages.
Interrupted update: closing the tab, losing wifi, or clicking away mid-install. The single most common trigger for a site stuck in maintenance mode.
PHP execution limit: most shared hosts cap maxexecutiontime at 30 seconds. Kinsta and Cloudways both confirm 30 seconds as the standard default, and a bulk plugin update blows past it easily, throwing a script timeout before cleanup runs.
Memory exhaustion: a low WPMEMORYLIMIT value kills the process mid-write, producing a memory exhausted error instead of a finished update.
Permission conflicts: PHP cannot delete a file it does not own. Worth checking your file permissions if this keeps repeating on the same install.
Plugin toggle left on: a previous developer or agency enabled coming soon mode and never switched it back.
Host or CDN page: the block sits above WordPress entirely, so no file deletion will help.
The average WordPress site runs 12 to 15 plugins, and 80% run at least one. Updating a dozen at once on a 30 second limit is asking for it, and plugin update errors spike during exactly those bulk runs.
How to Turn Off Maintenance Mode by Deleting the .maintenance File
Delete the .maintenance file from your WordPress root directory. Connect over FTP or SFTP, enable hidden file display, find the file sitting beside wp-config.php, and remove it. The site comes back on the next page load.
- Open FileZilla or Cyberduck and connect to your server with SFTP credentials.
- Navigate to the folder holding
wp-config.php,wp-admin, andwp-content. Usuallypublichtml. - In FileZilla, click Server, then Force showing hidden files. Dot-prefixed files stay invisible otherwise.
- Right-click
.maintenanceand delete it. - Hard-refresh the front end with Ctrl+Shift+R (Cmd+Shift+R on Mac).
Nothing else in the root needs touching. This is one of the rare cases where working directly with core files is the correct move rather than a last resort.
Site loads but the dashboard nags about a pending database update? Visit /wp-admin/upgrade.php and let the routine finish.
No .maintenance file in the root at all? Then core never created one, and your maintenance screen is coming from a plugin, a theme, or your host. Skip ahead.
How to Turn Off Maintenance Mode Without FTP Access
4 routes remove the file without an FTP client: your host’s file manager, WP-CLI, SSH, or your host’s built-in terminal. File manager access ships with almost every hosting panel, so most people never need FTP credentials at all.
| Hosting Panel | Path to Website Root | How to Show Hidden Files |
|---|---|---|
| cPanel | File Manager → public_html | Settings → Show Hidden Files |
| Hostinger hPanel | Files → File Manager | Settings (⚙️) → Show Hidden Files |
| SiteGround Site Tools | Site → File Manager | Hidden files are shown by default |
| Plesk | Files → httpdocs | Settings → Show Hidden Files |
WP-CLI: run wp maintenance-mode deactivate from the WordPress root. Check the current state first with wp maintenance-mode status.
SSH: cd into the root and run rm .maintenance. One command, done.
WP Engine, Kinsta, and Flywheel all expose a browser-based terminal, so SSH keys are optional on managed plans.
If the deletion succeeds and the site still misbehaves, check the WordPress error log before touching anything else. Raising limits blind wastes time, and locating php.ini matters more once you know which limit failed.
How to Turn Off Maintenance Mode Enabled by a Plugin
Plugin-driven maintenance mode has no .maintenance file behind it. Open the plugin’s settings and switch the status to inactive. SeedProd, LightStart, and Maintenance each use a single toggle, and the change takes effect immediately on save.
SeedProd alone sits on 900,000+ active installations, with LightStart (formerly WP Maintenance Mode) at 600,000+ and Under Construction close behind. Odds are decent your mystery screen belongs to one of the three.
- SeedProd: SeedProd > Landing Pages, set Coming Soon Mode to Inactive
- LightStart: Settings > LightStart > General, set Status to Deactivated
- Maintenance by WebFactory: single on/off switch on the plugin dashboard
- CMP and Minimal Coming Soon: Settings panel, status dropdown
- Hostinger Tools: Hostinger > Tools, toggle the Maintenance mode section off
Wondering why your site says coming soon instead of maintenance? Same mechanism, different label. Turn it off the same way.
Turning Off Maintenance Mode When You Are Locked Out of the Dashboard
Rename the plugin folder. Go to wp-content/plugins, rename the offending folder (seedprod-coming-soon-pro-5 to seedprod-off, for instance), and WordPress deactivates it on the spot.
Rename it back afterwards. The settings survive intact, so nothing gets lost.
Still hitting a login error after that? The maintenance plugin was not the problem, and something else is blocking /wp-admin.
How to Turn Off Maintenance Mode in Elementor, Divi, and Theme Settings
Builder and theme toggles live outside the plugins list, which is why people miss them for hours. Elementor keeps its switch under Tools, Divi under Theme Options, and most themes bury theirs in the Customizer or a dedicated options panel.
| Platform | Where the Maintenance Mode Toggle Is Located |
|---|---|
| Elementor | Elementor → Tools → Maintenance Mode → Choose Mode: Disabled |
| Divi | Divi → Theme Options, or disable the Coming Soon template in Theme Builder |
| Astra / OceanWP / Kadence | Appearance → Customize, or the theme’s dedicated settings panel (if available) |
| Jetpack | Jetpack → Settings → Coming Soon or Site Visibility (depending on the version) |
Elementor runs on roughly 22.4% of all WordPress sites, and Divi holds 700,000+ active installations. Between them, that covers a large share of builder-driven maintenance screens.
Can’t find the panel at all? Theme options move around depending on whether you’re on a block theme or a classic one.
Database fallback: when the dashboard is unreachable, open phpMyAdmin, browse wpoptions, search for elementormaintenancemodemode, and set the value to an empty string.
Some themes hard-code a redirect into the theme files instead of using an option row. That means editing functions.php to strip out a wpredirect() call, always through a child theme.
How to Turn Off a Maintenance Page Set by Your Host or CDN
Host and CDN maintenance pages sit in front of WordPress, so deleting files inside WordPress changes nothing. Turn them off inside the host dashboard, the Cloudflare panel, or the server config. Confirm the source first with a header check.
Cloudflare proxies 23.4% of all websites and 83.5% of sites running any reverse proxy, per W3Techs (June 2026). Statistically, it’s a likely culprit.
Managed hosts: WP Engine, Kinsta, Flywheel, and Pantheon each have their own maintenance toggle inside their dashboards, fully independent of WordPress.
Cloudflare: check Under Attack mode, custom error pages, and any Worker returning a static maintenance response.
Apache: look for a rewrite rule in .htaccess sending all traffic to a maintenance.html file.
NGINX: a server block returning 503 fires before PHP ever executes, which is why nothing you do inside WordPress helps.
Run curl -I yourdomain.com and read the headers. A server: cloudflare line with a 503 Service Unavailable status points at the edge, not at your install.
If the response instead says the server is currently unable to handle this request, the problem is PHP-level and belongs back in the earlier sections.
How to Fix Maintenance Mode That Comes Back After Deleting the File
The .maintenance file is gone but the screen persists because a cache layer is still serving the old 503 snapshot. Purge page cache, object cache, and CDN cache in that order, then retest in a private window.
82.4% of WordPress sites run at least one caching plugin, per SQ Magazine’s 2025 figures. Those layers are doing exactly what they were installed to do, which is why a fixed site keeps showing a broken page.
Page cache: WP Rocket (Settings > Clear Cache), LiteSpeed Cache at 7 million+ active installations (Toolbox > Purge All), W3 Total Cache at 900,000+ (Performance > Purge All Caches), or WP Super Cache (Delete Cache).
Object cache: flush Redis or Memcached from the host panel, or run wp cache flush over SSH.
CDN cache: Cloudflare > Caching > Configuration > Purge Everything. Development Mode bypasses the edge entirely for 3 hours while you test.
Server cache: Varnish, NGINX FastCGI, and host-level full page caches sit outside WordPress and need purging from the hosting dashboard.
Browser cache comes last. A private window beats a hard refresh, because it drops the admin session at the same time.
Purged everything and the page still loads? Check the root folder again. A second update fired and wrote a fresh .maintenance file while you were working.
A screen that reappears within seconds of every purge is a recurring maintenance mode error, not a caching problem. Different diagnosis, different fix.
How to Repair the Failed Update That Caused Maintenance Mode
Deleting the file clears the symptom, not the cause. Finish the interrupted job: empty the leftover upgrade folder, reinstall whatever was mid-update, run the database routine, and raise the PHP limits that killed the process in the first place.
- Empty
wp-content/upgrade. It’s a temporary staging folder and safe to clear out. - Check
wp-content/upgrade-temp-backup/plugins/for the previous version. WordPress 6.3 introduced this backup, and 6.6 extended rollback to auto-updates with fatal error protection. - Reinstall the affected plugin or theme manually over SFTP, replacing the folder wholesale.
- Load
/wp-admin/upgrade.phpso the pending database routine finishes properly. - Raise
maxexecutiontimeto 300 and bumpWPMEMORYLIMITbefore retrying.
Core caught mid-update is a different animal. Download a fresh copy of WordPress, then replace wp-admin and wp-includes entirely.
Leave wp-content and wp-config.php alone. Overwriting either turns a recoverable upgrade error into a much longer afternoon.
Most shared hosts cap PHP execution at 30 seconds, and 300 is the standard replacement value used by Kinsta, Cloudways, and Hostinger in their own documentation.
Still landing on a blank page after all that? That’s a white screen of death, which points at a fatal PHP error rather than an unfinished update. Broken core files call for a clean reinstall.
How to Confirm Maintenance Mode Is Fully Off
Your own browser lies to you. Confirm a 200 status code from outside the site, in a logged-out session, and check what Googlebot currently sees rather than trusting the front end you’re looking at.
| Verification Check | Tool | What It Confirms |
|---|---|---|
| Response Header | curl -I or httpstatus.io | The server returns HTTP 200 OK instead of 503 Service Unavailable |
| Sitewide Crawl | Screaming Frog SEO Spider | No remaining 503 responses on internal URLs |
| Logged-Out View | Incognito/Private Browsing or mobile data | Confirms the site is visible to visitors and not hidden by an active admin session |
| Search Engine View | Google Search Console – URL Inspection | Verifies whether Googlebot still encounters a 503 response |
Run the Test Live URL option inside URL Inspection rather than reading the cached verdict. The cached result reflects the last crawl, which may predate your fix by days.
Google’s own recrawl documentation notes that crawling takes anywhere from a few days to a few weeks after a request, and that repeat submissions for the same URL change nothing.
Confirm the dashboard side too: the plugin toggle reads inactive, and no fresh .maintenance file has appeared in the root.
A full Screaming Frog crawl doubles as a way to catch broken links the failed update left behind.
What Extended Maintenance Mode Does to Search Rankings
A 503 response is the correct signal during maintenance and costs nothing over short windows. Googlebot retries for roughly a week before treating the response as permanent, and crawl rate drops well before that point.
John Mueller has been consistent on this: hours of 503 is fine, weeks is not temporary, and holding an error page in the index would be misleading. Nothing happens to indexing or rankings until a few days have passed.
Gary Illyes added the crawl angle, noting that serving 503 for an extended period lowers crawl rate, while 10 to 15 minute windows now and then are harmless.
| Maintenance Duration | Typical Impact on SEO |
|---|---|
| Under 1 Hour | Usually no measurable impact on crawling or rankings |
| 1–24 Hours | Crawl rate may decrease, but search rankings typically remain stable |
| 1–7 Days | Pages may temporarily drop from search results, but usually return once the site is back online |
| More Than 7 Days | Significant risk of deindexing, loss of rankings, and reduced organic traffic |
The worse scenario: a maintenance plugin returning 200 instead of 503. Google then indexes an identical thin page across every URL on the site, which is a far uglier cleanup than a temporary outage.
There’s a revenue side too. Gartner’s long-cited baseline puts downtime at $5,600 per minute on average, and ITIC’s 2024 data pegs micro-SMBs at roughly $1,670 per minute.
Recovery after an accidental long outage: resubmit the XML sitemap, request indexing on your 10 highest-value URLs, and watch the host status verdict in the Crawl Stats report.
Planning to be down for weeks rather than hours? Unpublishing the site properly is a cleaner call than leaving a 503 hanging.
How to Prevent WordPress From Getting Stuck Again
Update in small batches, on raised limits, with a backup already in place. The average WordPress site now runs 23 plugins releasing 4 to 8 updates each per year (WordPress.org Plugin Directory, 2025), which works out to 90 to 180 update events annually.
| Best Practice | Why It Helps |
|---|---|
| Update one plugin at a time | Makes it easy to identify which update caused a problem instead of troubleshooting multiple changes at once. |
| Test updates on a staging site first | Reduces the risk of production outages. According to WP Engine (2025), staging-first workflows can significantly reduce deployment-related issues. |
| Increase server limits before major updates | Helps prevent updates from timing out due to the common 30-second execution limit on many shared hosting plans. |
| Create a backup before updating | Ensures you can quickly restore your site if an update fails. Many website owners still operate without a recent backup. |
| Use PHP 8.3 or later | Delivers noticeably better performance than PHP 7.x, allowing update scripts to complete faster and reducing the chance of timeout errors. |
Staging tools worth using: WP Staging, Local by Flywheel, or the native staging environments in WP Engine, Kinsta, and SiteGround. WP Engine’s 2025 developer survey also found teams on staging resolve issues 3x faster when something does break.
UpdraftPlus sits on 3 million+ active installations and BlogVault on 450,000+ sites, so there’s no real excuse for skipping the backup step.
34.2% of WordPress sites still ran PHP 7.4 or older as of late 2025. That’s a lot of installs quietly running slower than they need to, on versions with no security patches.
Add uptime monitoring with 503 alerts through UptimeRobot or your host’s own monitor. Catching a stuck update in 5 minutes instead of 5 hours changes the ranking conversation entirely.
Core rollback covers some of this now, restoring the previous version when an update triggers a fatal error. It does not cover timeouts, which is why the limits still matter.
Running a portfolio rather than one site? Managing multiple WordPress sites from a single dashboard makes staggered updates realistic instead of theoretical.
FAQ on How To Turn Off Maintenance Mode In WordPress
Where is the .maintenance file located in WordPress?
The .maintenance file sits in your WordPress root directory, alongside wp-config.php, wp-admin, and wp-content. On most hosts that folder is publichtml. Enable hidden file display first, since dot-prefixed files stay invisible by default.
Can I turn off maintenance mode without FTP access?
Yes. Use your host’s file manager (cPanel, hPanel, Site Tools, Plesk), run wp maintenance-mode deactivate through WP-CLI, or delete the file over SSH with rm .maintenance. Managed hosts like Kinsta include a browser terminal.
Why does the maintenance page still show after deleting the file?
A cache layer is serving the old 503 snapshot. Purge your page cache in WP Rocket or LiteSpeed Cache, flush the object cache, then clear Cloudflare. Test in a private window afterwards, not a hard refresh.
Is it safe to delete the .maintenance file manually?
Completely safe. The file holds one timestamp and nothing else, so deleting it destroys no data. WordPress recreates it automatically during the next update and removes it again when that update finishes cleanly.
What causes WordPress to get stuck in maintenance mode?
An update process that dies before cleanup runs. Usual triggers: a closed browser tab mid-install, a PHP maxexecutiontime timeout at 30 seconds, memory exhaustion during bulk plugin updates, or file permission conflicts blocking deletion.
How do I turn off maintenance mode if there is no .maintenance file?
Core never created one, so a plugin, theme, or host is responsible. Check SeedProd, LightStart, Elementor Tools, and your theme’s own settings before looking at the hosting dashboard or CDN.
How do I disable maintenance mode when locked out of wp-admin?
Rename the plugin folder inside wp-content/plugins over FTP. WordPress deactivates any plugin whose folder it cannot find, which kills the maintenance screen instantly. Rename it back afterwards and the settings survive intact.
Does maintenance mode hurt SEO?
Short windows cost nothing. Google retries a 503 for roughly a week before treating it as permanent, though crawl rate dips sooner. Past 7 days, deindexing becomes a genuine risk rather than a theoretical one.
How do I confirm maintenance mode is actually off?
Run curl -I yourdomain.com and look for a 200 status code instead of 503 Service Unavailable. Then check URL Inspection in Google Search Console using Test Live URL, not the cached verdict.
How do I hide my site from visitors without using maintenance mode?
Password-protect it or restrict access by IP at the server level. Both keep the 503 header off your URLs entirely. Making WordPress private suits longer projects better than an open-ended maintenance page.
Conclusion
Knowing how to turn off maintenance mode in WordPress comes down to one question: what is actually producing the screen? Answer that and the fix is a single file deletion, a toggle, or a cache purge.
Check the root folder in publichtml first. No file there means the block sits in a plugin, a builder, or your host.
Then verify with curl -I rather than your browser. A 200 status code from outside a logged-in session is the only proof that counts.
One habit prevents almost all repeat visits to this problem: update one plugin at a time, on a raised maxexecution_time`, with a backup already sitting in UpdraftPlus.
Boring advice. Also the reason some sites never see that white page twice.


