What is a 503 Service Unavailable error?

A 503 Service Unavailable is an HTTP status code that means the server is temporarily unable to handle the request, because of planned maintenance, overload, or a failing backend. It tells browsers and crawlers "try again later", not "this page is gone".

That distinction is why 503 is the correct response for planned downtime. When Googlebot gets a 503, it slows down and comes back later instead of treating your pages as removed. Serving a maintenance page with a 200 status, or a 404, can get the maintenance message indexed or pages dropped.

How Google handles a 503

Google groups 503 with other server errors (5xx) and with 429 Too Many Requests:

  • Crawling slows down. Googlebot reduces its crawl rate when it sees server errors, to avoid adding load.
  • Indexed pages stay indexed for a short outage. Pages already in the index are not dropped because of a brief 503.
  • Long outages have consequences. If URLs keep returning server errors over an extended period, Google eventually drops them from the index.

A 503 is for hours or a day or two of planned work, not for weeks. If a section of your site is closed long-term, decide whether it should return 404 or redirect.

The Retry-After header

You can add a Retry-After header to suggest when the crawler should return, either in seconds or as a date:

http
HTTP/1.1 503 Service Unavailable
Retry-After: 3600

Google treats it as a hint, not a schedule. It still helps, and it costs nothing to include.

Example: a maintenance response

On Apache, a maintenance rule that sends a 503 to everyone except your own IP:

apache
RewriteEngine On
RewriteCond %{REMOTE_ADDR} !^203\.0\.113\.10$
RewriteCond %{REQUEST_URI} !^/maintenance\.html$
RewriteRule ^ - [R=503,L]
ErrorDocument 503 /maintenance.html

The body can be a friendly page explaining the work. What matters for crawlers is the status code, which you can check with curl -I.

In WordPress

WordPress core already does this during updates: while it installs a core, plugin, or theme update, it serves a brief maintenance message with a 503 status. Maintenance-mode plugins vary; before relying on one, check with curl -I or your browser's developer tools that it sends 503 and not 200. If your host shows 503 errors when you are not doing maintenance, that usually points to exhausted PHP workers or memory, which is worth fixing because Googlebot will crawl less while it lasts. See HTTP status codes for the other codes involved.

Common questions

Will a 503 hurt my rankings?

Not for a short, planned outage. Google keeps indexed pages and returns later. Rankings are at risk only if server errors persist for a long time or keep recurring.

Should I use a 503 or a 302 to a maintenance page?

Use a 503 on the original URLs. Redirecting everything to a maintenance page tells crawlers every page now points elsewhere, which is the wrong message.

What causes unexpected 503 errors?

Common causes are traffic spikes, too few PHP workers, a crashed application server, or a CDN that cannot reach the origin. Your host's error logs usually show which.