You need to take your website offline to patch it, move hosts, or redesign a page. The maintenance page is the easy part; what your server says underneath it matters more, because Google reads the status code. Using the 503 status code for website maintenance is the difference between a short pause and a rankings problem you spend weeks fixing.
In October 2026, Google reminded site owners of this point: when sites went offline to patch critical PHP flaws, serve a 503 — not a 404, 500, or a normal-looking page with a 200 code. A 503 tells Google, “We are temporarily unavailable, please come back later.”
What the 503 Status Code for Website Maintenance Actually Tells Google
A 200 means “here is the page,” a 404 means “this page does not exist,” and a 503 means “the service is temporarily unavailable.” For planned downtime, that last meaning is exactly what you want.
When Googlebot hits a 503, it slows crawling, ignores the maintenance page for indexing, and keeps indexed URLs in place at first. That protection is not unlimited: Google warns against 503s lasting more than a day or two, after which URLs may be dropped.
Google 503 SEO: Why 200, 404, and 500 Send the Wrong Message
The page can look identical to visitors in every case; only the status code changes what Google does next, as Search Engine Journal’s coverage of Google’s October 2026 reminder explains.
| Status code | What Google does | Safe for maintenance? |
|---|---|---|
| 503 Service Unavailable | Slows crawling, keeps indexed URLs for now, retries later | Yes |
| 200 OK | May index the maintenance page itself as your content | No |
| 404 Not Found | Removes already-indexed URLs from the index | No |
| 500 Internal Server Error | Signals a broken site, not planned work | No |
The 200 case is the sneakiest mistake: to Google, your professional-looking page looks like you replaced your homepage with placeholder text, which it may index. That is why “maintenance mode vs coming soon 200” matters — coming soon is for a site that does not exist yet, while maintenance must hide a site that already exists. A 404 says the page is gone; a 500 signals failure, not scheduled work.
WordPress Maintenance Mode 503: What Core, Plugins, and Builders Actually Send
WordPress understands the 503, but not every tool uses it the same way — checking the real code, not just the design, is the step most owners skip.
During core, plugin, or theme updates, WordPress briefly creates a .maintenance file and shows a “Briefly unavailable for scheduled maintenance” message, already returning a 503 with a 600-second Retry-After header. If an update is interrupted, the file can get stuck; deleting it fixes that. Do not use it for planned maintenance, though — core treats a timestamp older than 10 minutes as expired. For a custom message, place a maintenance.php file in wp-content; WordPress loads it while keeping the 503.
Measured plugin behavior in October 2026 shows a clear split:
- SeedProd and CMP send a 503 only in “Maintenance” mode, not in “Coming Soon” mode, which sends a 200.
- Elementor’s Tools > Maintenance Mode returns a 503 for Maintenance, but 200 for Coming Soon.
- LightStart sends a 503 by default.
- Some free Under Construction and Minimal Coming Soon tools send a 200 — risky for an established site.
Never assume a plugin labeled “maintenance” returns a 503. Turn it on, open your site in a private window, and verify with curl -I (see below). If it sends a 200, switch modes or set the code at the server level.
How to Set Up a 503 Status Code for Website Maintenance on Your Server
Setting the 503 at the server level gives full control even if a plugin breaks. Replace YOUR_IP_ADDRESS with your real IP, and keep robots.txt responding normally — a 503 on it blocks all crawling.
Nginx: return 503 for everyone except your IP, serve a custom page, and prevent caching of it:
error_page 503 /maintenance.html;
add_header Retry-After 3600;
add_header Cache-Control "no-store";
Apache (.htaccess): use a rewrite rule with a 503 flag and an ErrorDocument 503 pointing to your maintenance page, with the same IP exemption.
Plain PHP: a small snippet at the top of your entry point works for a lightweight, plugin-free setup:
<?php
http_response_code(503);
header("Retry-After: 3600");
include("maintenance.html");
exit;
?>
Test from a private window, not just while logged in.
The Retry-After Header: How Long Should You Tell Google to Wait?
The Retry-After header is the polite second half of a 503. It tells crawlers roughly when to try again, as a delay in seconds (Retry-After: 3600 for one hour) or an HTTP date in UTC. Use your best honest estimate, and update it if work runs long — a stale date is worse than a rough one.
How Long Can a Site Be Down SEO? The Honest Answer
So, how long can a site be down SEO-wise before damage starts? Minutes to a few hours is normal; one to two days is the outer edge Google recommends for 503s; several days or weeks is risky, as Google may drop URLs. For a longer closure, Google recommends a proper placeholder homepage served with a 200, not an endless 503. If work will take a week, break it into smaller live deployments or use a staging site. For background on the October 2026 patches, see TechCoff’s PHP critical vulnerability in October 2026 coverage, and after the site returns, how to speed up a WordPress site in 2026.
Verify It: The 30-Second curl -I Check
Never trust the page design alone. From a terminal, run:
curl -I https://example.com/
You want HTTP/2 503, plus retry-after and cache-control: no-store. Check the homepage, one article URL, and robots.txt: the first two should return 503, while robots.txt should still return 200. Purge any CDN cache and recheck — many “still down” reports are just a cached 503.
Common 503 Maintenance Mistakes to Avoid
Avoid these errors:
- Serving the maintenance page with a 200, so Google indexes it.
- Using a 404 for a temporary outage, so URLs get removed.
- Leaving a 503 in place for weeks instead of hours.
- Letting a CDN cache the maintenance page after return.
- Blocking
robots.txtwith the same 503 rule. - Forgetting to exempt your own IP address.
- Setting a Retry-After date and never updating it.
- Skipping the
curl -Icheck and trusting a plugin label.
A detailed measurement of WordPress maintenance mode status codes confirms this plugin split and why the curl check matters.
FAQ: 503 Status Code for Website Maintenance
Does a 503 hurt my SEO if it only lasts a few hours?
No. A short 503 is the Google-approved way to handle temporary downtime; problems start only after multiple days.
What is the difference between maintenance mode and coming soon mode?
Maintenance mode is for an existing site temporarily offline, and should return a 503. Coming soon mode is for an unlaunched site, and normally returns a 200 because there is nothing in the index to protect.
Should I use a 503 or a 500 during maintenance?
Use a 503 for planned maintenance and a 500 only for unexpected failure. A 503 signals “temporarily unavailable by design” and pairs with a Retry-After header.
What should the Retry-After value be?
Your best estimate of return time, in seconds or as an HTTP date in UTC — 3600 for a one-hour patch, updated if the timeline slips.
Do I need to do anything special for robots.txt during maintenance?
Yes — keep it at 200, outside your 503 rule. A 503 on robots.txt blocks crawling entirely.
Conclusion: The 503 Status Code for Website Maintenance Is Your Safety Net — If You Use It Right
The 503 status code for website maintenance is not a detail to leave to chance. It tells Google your absence is temporary, protects indexed pages while you patch or rebuild, and — with an honest Retry-After header — brings crawlers back at the right time. Set it in WordPress or at the server level, verify it with curl -I, keep robots.txt live, keep the window short, and purge any cached maintenance page on return.
Do that, and maintenance becomes a brief pause visitors barely notice and rankings never feel. For help planning a safe update, see TechCoff’s services or contact page.
