21+ years in hosting · Jaipur, India · INR billing with 18% GST · 24/7 email support
Blog · WebJi® India

How to Put WordPress in Maintenance Mode

Quick answer

WordPress maintenance mode shows logged-out visitors a 503 holding page while administrators keep the full site. Install one maintenance plugin and switch it on, or create a .maintenance file containing $upgrading = time(); in the WordPress root. Test in a private window, then turn it off when done.

For WordPress site owners in India who need to take a live site down briefly without losing visitors or search visibility.

✓ In business since 2005
✓ INR + GST billing
✓ 24/7 Email Support — avg reply < 60 min
GuideWebJi®
knowledge
Read time
4 min
Sections
7
Updated
14 Nov 2026
Written by
WebJi® team

What WordPress maintenance mode does

Maintenance mode swaps the public site for a holding page that returns HTTP 503, while logged-in administrators keep seeing and editing the real site. The 503 status is the part that matters for search engines: it says "temporarily unavailable, come back", so Google does not treat the downtime as removed content the way a 404 would. Reach for it during a theme switch, a plugin audit, a database change or a redesign that moves navigation. Skip it for writing a post — a live site does not need to go dark for typing.

Two built-in pieces make this work in WordPress core, no plugin involved: a check that looks for a file named .maintenance in the WordPress root (the folder holding wp-config.php and wp-admin), and the wp_maintenance() routine that renders the holding page with the right headers. A plugin simply wraps the same idea in a settings screen.

How to put WordPress in maintenance mode with a plugin

Install exactly one maintenance plugin, switch its mode on, write the message with a return time, and verify the holding page in a private browser window before starting the real work. One plugin is a hard limit: two maintenance plugins both try to own the same screen, and the second one usually wins without telling you.

  1. In the dashboard, go to Plugins → Add New, search "maintenance", and install a plugin with recent updates and a healthy install count. Activate one only.
  2. Open the plugin's settings and switch maintenance mode on.
  3. Write a one-sentence message with an expected return time, and turn on the 503 option if the plugin offers one.
  4. Keep your admin session open, then load the site in a private window — the holding page should appear there while your tab still shows the real site.
  5. Finish the work, switch the mode off, and re-check the private window.

Most maintenance plugins also let you style the page with your logo and colours, which is worth two minutes: a branded notice reads as "we are working", an unbranded one reads as "something broke". The hosting account this runs on is covered on WordPress hosting in India; for anything longer than an afternoon, do the work on a WordPress staging site instead and skip the downtime entirely.

The no-plugin way: the .maintenance file in the WordPress root

WordPress core enters maintenance mode on its own when a file named .maintenance exists in the root directory containing <?php $upgrading = time(); — and it expires that state after 10 minutes unless the timestamp is refreshed. The core check compares the stored $upgrading timestamp against the current time and considers maintenance over once 10 minutes have passed. The page rendered is the default "Briefly unavailable for scheduled maintenance. Check back in a minute." unless you supply your own template as a maintenance.php drop-in inside wp-content/, which WordPress loads instead.

  1. Open File Manager in the hosting panel (or FTP) and navigate to the folder that contains wp-config.php.
  2. Create a new file named .maintenance — with the leading dot.
  3. Paste one line and save: <?php $upgrading = time();
  4. Open the site in a private window; the default maintenance notice should appear.
  5. For work longer than 10 minutes, save the file again to refresh the timestamp, or set a future timestamp such as $upgrading = time() + 3600; to hold the state for an hour.
  6. Delete the file when finished; the site returns immediately.

Knowing this file matters even if you never create it: during an automatic update WordPress creates .maintenance itself, and if the update dies halfway the file can stay behind and pin the site in maintenance. There is also a maintenance page built for exactly this state on the white screen of death guide when things go further wrong.

Why you still see the live site — or a stuck maintenance screen

If you still see the normal site, you are logged in as an administrator — maintenance mode only gates logged-out visitors — so test in a private window or a second browser. That is the feature working, not failing: it lets you edit while the public sees the notice.

The opposite failure is a maintenance screen that outlives the work. The usual culprit is a failed core or plugin update that left .maintenance behind in the root. Delete that one file in File Manager and reload — the site returns at once. Do not delete wp-config.php, and never rename wp-admin. If the page instead shows a 503 with no maintenance notice at all, the cause sits elsewhere — PHP limits, the database or an upstream proxy — and the 503 error fix guide covers those paths.

What the maintenance page should say

A maintenance page needs three things: what is happening, when the site will be back, and one contact for urgent matters. One sentence, one specific time, one email address. A countdown timer only helps when the end time is actually known; a wrong countdown is worse than none.

  • What — "We are updating the site and will be back shortly." Plain and true.
  • When — a clock time or IST window, never "soon".
  • Contact — one email address for urgent orders, e.g. orders@yourshop.in.
  • Brand — logo and your colours, so the page reads as maintenance rather than an error.

Keep "coming soon" pages separate: those run before launch and can stay up for weeks while you build. Maintenance mode is for a live site that is briefly unavailable — hours, not weeks.

How to turn maintenance mode off and confirm it worked

Switch the plugin off or delete the .maintenance file, purge the caches, then load the homepage in a private window and confirm the response is 200, not 503. A cached holding page that survives the switch-off is almost always cache, not the plugin.

  1. Turn off the plugin's maintenance toggle, or delete .maintenance from the WordPress root.
  2. Purge the hosting cache and any CDN cache — the clear WordPress cache guide lists every layer.
  3. Open the homepage in a private window; the real page should load.
  4. In the browser DevTools Network tab, confirm the document response is 200.
  5. Open one inner page — a post or a product — and log in to check the dashboard is unchanged.
FAQ

Frequently asked questions

How do I enable WordPress maintenance mode without a plugin?

Create a file named .maintenance in the WordPress root — the folder with wp-config.php — containing <?php $upgrading = time();. Visitors then see the default maintenance notice. Delete the file to bring the site back. Note the 10-minute expiry: refresh the timestamp for longer jobs, or use a future timestamp like time() + 3600.

Why does my .maintenance file stop working after 10 minutes?

By design. WordPress core compares the $upgrading timestamp inside .maintenance with the current time and treats maintenance as over once 10 minutes have passed. Save the file again to refresh the timestamp, set a future timestamp, or use a plugin when the work needs hours.

Does maintenance mode hurt SEO?

Not if the holding page returns HTTP 503, which tells crawlers the downtime is temporary. Problems start when the holding page returns 200 (it can get indexed in place of real content) or a 404 (it reads as removed pages). Keep maintenance windows short and the 503 intact.

The maintenance screen will not go away. What do I delete?

Delete the .maintenance file in the WordPress root, then purge hosting and CDN caches and reload. A failed core or plugin update usually leaves this file behind. Do not delete wp-config.php or rename wp-admin — neither is the cause.

Can I show my own maintenance page instead of the default message?

Yes. Place a maintenance.php file inside wp-content/ — a drop-in template WordPress loads instead of the default notice — or use any maintenance plugin's page designer. Keep the 503 status header in either route so search engines see the downtime as temporary.

Last editorial update: 15 November 2026. Core behaviour (the .maintenance file, its 10-minute expiry and the maintenance.php drop-in) checked against the WordPress source on wp-includes/load.php.

WebJi® since 2005

Ready to get started with WebJi®?

Join 12,000+ businesses across India and overseas. INR pricing, 18% GST shown before payment and 24/7 email support in Hindi and English — average first reply under 60 minutes.