Website Down for Maintenance? How to Tell (and Do It Right)
You open a site and see "We'll be back soon" or "Briefly unavailable for scheduled maintenance." Is the website down for maintenance on purpose, actually broken, or only down for you? This guide shows you how to tell in under a minute. If it's your own site, it also shows how to do maintenance right: a real 503 maintenance page with a Retry-After header, examples for nginx, Apache, and WordPress, and how uptime monitoring should handle planned work.
Short answer: a site that's down for maintenance usually shows a branded "under maintenance" page and returns the HTTP status 503 Service Unavailable, often with a Retry-After header that says when to come back. A broken site tends to show a raw 500, 502, or 504 error, a timeout, or a DNS error. If the site loads fine from another network, it isn't down at all, just down for you.
Website down for maintenance? How to tell in 3 checks
Three quick checks answer the question.
- Read the page. A planned maintenance page usually says so ("site under maintenance", "scheduled maintenance", "back at 06:00 UTC") and carries the site's logo. A default server error page, or a blank one, points to an unplanned problem.
- Check the status code from outside your network. Paste the URL into our free instant website checker. It shows the HTTP status code, response time, and SSL details, with no signup. A
503means the server is deliberately refusing requests for now. A200means the site is up for everyone and the problem is on your end. - Look for an announcement. Big services post scheduled maintenance notices on their status page, social accounts, or in-app banners. Timing helps too: 3 a.m. on a Sunday in the company's time zone suggests planned work.
If you're comfortable with a terminal, curl -I shows the status line and headers directly:
curl -I https://example.com
HTTP/1.1 503 Service Unavailable
Retry-After: 3600
Content-Type: text/html
Maintenance vs broken vs down just for you
| What you see | Likely status code | What it means | What to do |
|---|---|---|---|
| Branded "under maintenance" page, often with a return time | 503, often with Retry-After | Planned maintenance | Wait, and check back after the stated time |
| Raw "Internal Server Error" | 500 | The application crashed | It's a real outage; the owner needs to fix it |
| "Bad Gateway" or "Gateway Timeout" | 502 / 504 | The proxy or CDN is up, the app behind it isn't | Usually an unplanned outage |
| Page never loads, or "server not found" | No status (timeout or DNS error) | Server unreachable, DNS problem, or expired domain | Check from another network before assuming anything |
| Works on your phone's mobile data but not on Wi-Fi | 200 from the checker | It's only down for you | Clear cache and DNS, try without VPN |
For a full walkthrough of the "down for everyone or just me" case, see our guide Is my website down? How to check. For what every code means, see HTTP status codes explained.
What does a 503 Service Unavailable for maintenance mean?
503 Service Unavailable means the server is working but temporarily can't handle requests, usually because of overload or maintenance. When the owner knows how long, they add a Retry-After header with a number of seconds (Retry-After: 1800) or a date in GMT (Retry-After: Sat, 31 Oct 2026 06:00:00 GMT).
A 503 with no maintenance message may just mean overload, so if it outlasts the announced window, treat it as an outage.
How to put a website in maintenance mode the right way
If your own site needs to go down for maintenance, tell visitors and search engines the downtime is temporary. Five rules:
- Return a 503, not a 200. A maintenance page served with
200 OKlooks like your real content to Google, which can index "We'll be back soon" in place of your pages. - Don't redirect to a /maintenance URL. A 301 or 302 to a separate page sends the wrong signal and can get cached. Serve the page at every URL, with a 503.
- Add a Retry-After header with an honest estimate. Google's crawlers may use it to decide when to come back.
- Keep robots.txt reachable. Google's guidance is not to return a 503 for robots.txt, because that blocks crawling of the whole site.
- Keep it short. Google suggests no more than a day or two. Googlebot retries a 503 for up to about a week before pages can start dropping out of search results.
What to put on a website under maintenance page
A good website under maintenance notice is short and self-contained:
- What's happening, in one plain sentence ("We're upgrading our checkout")
- When you expect to be back, with a time zone
- Where to get updates (status page, social account, or support email)
- Inline CSS and images only, so it works even if your app or CDN is down
A simple website down for maintenance message might be: "We're doing scheduled maintenance and will be back by 06:00 UTC. Orders placed before 22:00 UTC are safe. Questions? Email support@example.com."
503 maintenance page examples: nginx, Apache, WordPress
The examples below all use a flag file: create the file to switch maintenance on and delete it to switch it off. Replace the paths with your own and test on a staging site first.
nginx maintenance page with 503 and Retry-After
Add this inside your server { } block, and put a static maintenance.html in /var/www/maintenance/:
set $maintenance 0;
if (-f /var/www/maintenance.on) {
set $maintenance 1;
}
if ($uri = /robots.txt) {
set $maintenance 0;
}
if ($maintenance = 1) {
return 503;
}
error_page 503 @maintenance;
location @maintenance {
root /var/www/maintenance;
rewrite ^ /maintenance.html break;
add_header Retry-After 3600 always;
}
Reload nginx once to apply the config. After that, touch /var/www/maintenance.on turns maintenance on and rm /var/www/maintenance.on turns it off, with no further reloads. Keep the always flag: without it, nginx won't add Retry-After to a 503. To let yourself through while everyone else sees the page, add a check like if ($remote_addr = 203.0.113.10) { set $maintenance 0; } with your own IP.
Apache (.htaccess) maintenance mode
This needs mod_rewrite and mod_headers and works on Apache 2.4. On WordPress, place it above the # BEGIN WordPress block:
ErrorDocument 503 /maintenance.html
RewriteEngine On
RewriteCond %{DOCUMENT_ROOT}/maintenance.on -f
RewriteCond %{REQUEST_URI} !^/maintenance\.html$
RewriteCond %{REQUEST_URI} !^/robots\.txt$
RewriteRule ^ - [R=503,L]
<If "-f '%{DOCUMENT_ROOT}/maintenance.on'">
Header always set Retry-After "3600"
</If>
Create maintenance.on in your document root to switch it on, and delete it to switch it off. Excluding /maintenance.html prevents a rewrite loop.
WordPress maintenance mode
WordPress already does the right thing during core, plugin, and theme updates. It creates a hidden .maintenance file in the site root and serves "Briefly unavailable for scheduled maintenance. Check back in a minute." with a 503 and Retry-After: 600.
- WordPress maintenance mode stuck? If an update fails halfway, the
.maintenancefile can be left behind. Current WordPress ignores the file once it's 10 minutes old, but if you still see the message, delete.maintenancefrom the root folder (it's a hidden file, so enable "show hidden files" in your file manager or FTP client). - Maintenance mode without a plugin: with WP-CLI, run
wp maintenance-mode activate, thenwp maintenance-mode deactivatewhen you're done.wp maintenance-mode statusshows the current state. - A custom page: put a
maintenance.phpfile inwp-content/. WordPress sends the 503 and Retry-After headers before loading it. - Using a maintenance plugin? Make sure it sends a 503. Some "coming soon" modes return 200, which is wrong for maintenance on a live site.
Afterwards, purge your page cache and CDN, or visitors may keep seeing the maintenance page.
Maintenance and uptime monitoring
To an outside check, planned maintenance is still downtime, and that's useful.
Expect an alert when maintenance starts
When you switch on your maintenance page, an uptime monitor that expects 200 will see a 503 and alert you. ismysiteup alerts include the status code and response time, so a 503 confirms your maintenance page is served correctly, while a 500 or 502 means something else broke. When you switch it off, the recovery message confirms the site is back for everyone, not just your logged-in browser.
How quickly you see each change depends on your check interval: every 5 minutes on Free, every minute on Pro, and every 30 seconds on Business. See the pricing page for current details and availability of each plan.
Tell the people who'd otherwise panic
If alerts go to a shared channel, post a note first so nobody escalates an expected 503. Our Slack alerts setup guide shows how to route alerts to a team channel. WhatsApp, Telegram, and email alerts work on every plan too. Running sites for clients? Warn them first; our guide to monitoring client websites covers organizing monitors by client.
Pausing a monitor (and remembering to resume it)
If you'd rather not get alerts during a long, planned window, you can pause the monitor and resume it afterwards. ismysiteup's REST API has a pause/resume endpoint (POST /api/v1/dev/monitors/{id}/toggle, using an API key with the monitors:write scope), so deploy scripts can pause before maintenance and resume after. The risk is forgetting to resume: a paused monitor can't tell you the site never came back. For short work, letting alerts fire is safer.
Check that the business works again, not just the homepage
A site can return 200 after maintenance while checkout or signups are still broken. Our guide on how to detect silent failures shows how to watch a value like orders per hour so you know the business is working, not just the server. Maintenance also counts against uptime unless your SLA excludes scheduled windows; see what 99.9% uptime really means.
After-maintenance checklist
- Remove the flag file,
.maintenancefile, or plugin setting. - Purge page cache and CDN.
- Run
curl -Ior the instant checker and confirm200. - Load a real page in a private window, and place a test order or submit a form.
- Confirm your uptime monitor sent its recovery message, and resume any paused monitors.
Monitor your site before and after maintenance
Set up monitoring before your next maintenance window, so you get proof it started and ended cleanly. Create a free ismysiteup account: it includes 5 uptime monitors with checks every 5 minutes and WhatsApp, Telegram, Slack, and email alerts, with no credit card.
FAQ
What does it mean when a website is under maintenance?
The owner has taken the site offline on purpose, usually for updates, a migration, database work, or security patches. You see a "we'll be back soon" page until the work is done.
How long are websites usually down for maintenance?
Most planned website maintenance takes a few minutes to a few hours. A WordPress plugin update often takes under a minute, while migrations or database upgrades can take longer. Good maintenance pages state an expected return time.
How can I tell if a website is down for maintenance or actually broken?
A branded maintenance page with a return time and a 503 status code means it's planned. A raw 500, 502, or 504 error, a timeout, or a DNS error points to a real outage. Check the status code with an outside checker to be sure.
What does 503 Service Unavailable mean?
It means the server is up but temporarily can't handle the request, usually because of maintenance or overload. It's a temporary error, so try again after a few minutes or after the time given in the Retry-After header.
How do I put my WordPress website in maintenance mode?
Use WP-CLI (wp maintenance-mode activate), a maintenance plugin that sends a 503 status, or a custom wp-content/maintenance.php file. Turn it off as soon as you're done, and purge your cache.
Does putting my site in maintenance mode hurt SEO?
Not if it's short and done right. Return a 503 with a Retry-After header, keep robots.txt reachable, and keep the downtime to a day or two at most. Long maintenance, or a maintenance page served with a 200 status, can hurt your rankings.
Monitor your websites for free
Get instant email, Telegram, and WhatsApp alerts when your sites go down. Check every 5 seconds. No credit card required.
Start Monitoring Free