A maintenance page gives visitors a controlled response during a short full-site outage such as planned infrastructure work, a platform cutover, or an emergency rollback window. It replaces broken forms, application errors, and half-rendered templates with a single message that says the site is temporarily unavailable and where to look next.
For this page to do its job, the response has to come from a lightweight standalone document and the affected public URLs have to return 503 Service Unavailable instead of normal content. Current Google Search guidance still treats a whole-site 503 response as the short-outage status for an emergency shutdown, and the page is stronger when it also sends a best-effort Retry-After header and keeps robots.txt reachable.
Use this pattern only when the site really needs to stop serving normal pages for a short window. If only checkout, login, or another bounded feature is affected, keep the rest of the site online and limit that function instead of hiding the whole site behind a maintenance page.
Google's current documentation treats a whole-site 503 shutdown as a short measure for about 1-2 days, not as a multi-week placeholder.
Do not promise an exact recovery time unless the team can actually meet it.
<!doctype html> <title>Scheduled maintenance</title> <h1>Scheduled maintenance</h1> <p>The website is temporarily unavailable.</p> <p>Expected return: 02:00 UTC.</p> <p>Status page: status.example.com</p>
Keep the file self-contained so the maintenance page does not need the failing app, CDN bundle, or third-party script to render.
A common pattern is a file such as
/maintenance.html
outside the application's template pipeline.
HTTP/1.1 503 Service Unavailable Retry-After: 3600 Content-Type: text/html
Do not use 200 OK, 403 Forbidden, 404 Not Found, 410 Gone, or page-level noindex as the temporary shutdown signal, because they tell crawlers something different from a short maintenance outage.
Related: How to create a robots.txt file for your website
Do not return the maintenance page or a 503 response for
/robots.txt
, because that blocks normal crawl control checks.
Use a browser path that is not already authenticated so the page is checked as an ordinary visitor instead of as an admin session.
503 Service Unavailable Retry-After: 3600 Content-Type: text/html
Retry-After can be either seconds or an HTTP date.
200 OK Content-Type: text/plain
This check catches broad maintenance rules that accidentally intercept the root crawl policy file.
200 OK Content-Type: text/html
If a CDN or reverse proxy keeps serving the stale maintenance page after recovery, clear or bypass that cache before declaring the site back online.