503 Service Unavailable: Meaning, Causes and Fixes

503 Service Unavailable tells the browser the server is up but cannot handle the request right now: it is overloaded, in maintenance, or has no healthy app behind it. Unlike 500, it promises the problem is temporary. Visitors should wait and retry; owners should find what is out of capacity or switched off.

What a 503 usually means, by setup
SetupUsual causeFix
WordPressStuck maintenance mode after an updateDelete the .maintenance file in the site root
Windows IISApplication pool stopped after repeated crashesFix the crash, then start the pool
Kubernetes ingressNo ready pods behind the serviceCheck pod readiness and the service selector
Shared or small serverTraffic or a bot spike used all workersAdd capacity, caching or rate limits

Updated

A 503 can be an accident or a choice. Servers send it by accident when they run out of workers or lose their app. Site owners send it on purpose during maintenance, ideally with a Retry-After header, because it tells search engines to come back later instead of treating the page as gone.

A maintenance 503 in Nginx

Return 503 with Retry-After while a flag file exists

Create /var/www/maintenance.on to switch it on and delete it to switch it off; reload is not needed for the check.

server {
    # ...
    if (-f /var/www/maintenance.on) {
        return 503;
    }
    error_page 503 /maintenance.html;
    location = /maintenance.html {
        root /var/www/static;
        add_header Retry-After 3600 always;
    }
}

Fixes by platform

WordPress: core and plugin updates create a .maintenance file and delete it when they finish. If the update stops halfway, the file stays and every visitor sees the maintenance notice with a 503. Delete it over SFTP or your host's file manager, then rerun the update.

IIS: when an app crashes several times in a short period, rapid-fail protection stops its application pool and IIS returns 503 for every request. Fix the crash shown in the Windows event log, then start the pool in IIS Manager.

Kubernetes: an ingress returns 503 when the service has no ready endpoints. kubectl get endpoints shows an empty list when readiness probes fail or the selector matches no pods.

Serving a planned 503 correctly

Send the 503 status, a Retry-After value in seconds or as a date, and a short human page. Keep robots.txt itself reachable during the window, since a 5xx on robots.txt can make Google pause crawling of the whole site.

On a site hosted by We.Inc there is no web server, PHP process or function timeout of your own to tune. If a page on a We.Inc site returns this code, send support the address and the time so we can check our side.

How it works

  1. Check whether the 503 is constant or comes and goes with traffic.
  2. Look for maintenance switches left on: plugins, files or a load balancer setting.
  3. Check the app's health: running processes, ready containers, an IIS app pool.
  4. Watch CPU, memory and worker counts during a spike to confirm an overload.

Tips

  • For planned maintenance, return 503 with Retry-After rather than a normal page saying 'back soon', which search engines would index as your content.
  • Keep maintenance windows short. Google retries 5xx pages, but a 503 that lasts for days can lead to pages being dropped.
  • If a 503 appears every day at the same time, look for a scheduled job, backup or cron task that saturates the server.
  • A burst of bot traffic can cause 503s on small plans. Caching and rate limiting at the CDN protect the origin.

Frequently asked questions

What does 503 Service Unavailable mean?

The server cannot handle the request at the moment because of overload or maintenance, and expects to recover. It may send a Retry-After header saying how long to wait.

How do I fix a 503 error on WordPress?

If an update was interrupted, delete the .maintenance file in the WordPress root folder. Otherwise rename the plugins folder to rule out a plugin, and ask your host whether you hit a resource limit.

Is 503 the same as 500?

No. 500 Internal Server Error is a generic failure while handling the request. 503 says the service is temporarily unavailable and should work again later.

How long does a 503 error last?

As long as the cause lasts: seconds for a restart, minutes for maintenance, longer if a server stays overloaded. If it lasts more than an hour on a site you run, look at logs rather than waiting.

Should I use 503 for maintenance?

Yes. A 503 with a Retry-After header is the standard way to say a site is down temporarily, and it keeps search engines from indexing the maintenance page.

Related: 502 Bad Gateway, 504 Gateway Timeout, 429 Too Many Requests, HTTP status codes.

Start for free or see all free tools. We.Inc is free to start, with no card needed. AI building is on paid plans from $20 a month.

More in Guides

Product

Who It's For

Features

Resources

Company

View Sitemap