In short
A 503 Service Unavailable error means the server received the request but is temporarily unable to handle it, usually because it is overloaded, is in maintenance mode, or a hosting resource limit has been hit. Unlike a 500, it signals that the condition is expected to pass, and search engines treat a short-lived 503 as temporary without dropping pages. It is the correct code to send deliberately during planned maintenance, with a Retry-After header. Persistent 503s point at capacity, a stuck maintenance flag, or a hosting account being throttled.
What it means
The 5xx codes are server-side failures. 500 says something broke. 502 says the server behind a proxy did not answer properly. 503 says the server is functioning but cannot take this request at the moment: it is overloaded, it has been put into maintenance, or a resource it needs is unavailable. The status carries an implication the others do not, that the situation is temporary, and it can carry a Retry-After header saying when to try again.
Because of that meaning, 503 is the one error a site should send on purpose when it is deliberately unavailable, and the one that crawlers and clients are designed to back off from and revisit.
The common causes
Overload. Too many requests for the available workers, connections or memory. A traffic spike, a viral link, a scraper, a marketing email landing all at once. The server starts refusing requests it cannot queue.
Maintenance mode. WordPress writes a .maintenance file during updates and serves 503 until it is done; if an update fails midway, the file remains and the site stays in maintenance. Application frameworks have equivalent flags. Deploy tools may put a site into maintenance deliberately.
Hosting resource limits. Shared hosting accounts have CPU, memory, process and entry-process caps. Exceeding them makes the host refuse requests with a 503 or a branded error page until usage falls. This is the most common cause on cheap hosting and the one that appears exactly when a site becomes busy.
A dependency being unavailable. The database, a cache, or an upstream API the application requires is down and the application has been written to return 503 rather than fail obscurely.
Bot protection and rate limiting. CDNs and firewalls return 503 to clients they are challenging or throttling, which is why an automated tool sometimes sees 503s a browser does not.
Application not fully started. During a deploy or a restart, a load balancer with health checks returns 503 while no instance is healthy.
Denial-of-service attacks, which are overload by design.
What search engines do with a 503
Google treats a 503 as a temporary condition. It notes the page was unavailable, retries later, and does not remove the URL from the index for a short outage. This makes 503 far safer than serving a 200 with a "we are down" message, which Google would index as the page's content, or a 404, which tells Google the page is gone. Google's guidance for planned maintenance is precisely this: return 503 with a Retry-After header, keep it as brief as possible, and do not leave it for days, since a 503 that persists for an extended period is eventually treated as a sign the site has gone away and pages can be dropped.
Sending it deliberately
For planned maintenance, configure the server or a maintenance page to respond with status 503, a Retry-After header giving seconds or a date, and a short human-readable page. On Apache, a rewrite rule with [R=503] and a matching ErrorDocument; on Nginx, a return 503 with a custom error page; most frameworks and hosting platforms provide a maintenance mode that does this correctly. Keep the window short and lift it as soon as the work is done.
Fixing an unplanned 503
- Check whether it is maintenance. On WordPress, look for a
.maintenancefile in the site root and delete it if the update is not still running. Check the framework's maintenance flag. - Check the hosting control panel for resource usage. If the account is at its limits, the host is throttling; identify what is consuming resources, which is often a plugin, a cron job, a bot, or an attack.
- Check the server's load and the application's workers. Overloaded PHP-FPM pools, exhausted connection limits, or memory pressure show in the server logs and monitoring.
- Check dependencies. Database up, cache up, external APIs responding.
- Check for a traffic spike or attack in the access logs or CDN analytics, and enable bot protection or rate limiting if the traffic is hostile.
- Check the deploy state if it followed a release: are instances healthy, did the health check pass, did the process start.
Preventing it
A CDN caching pages and assets so that spikes never reach the origin. Capacity provisioned for peak rather than average, or a platform that scales. Rate limits on expensive endpoints and forms. Bot protection against scrapers and attacks. A hosting tier appropriate to the traffic; the 503 from a resource cap is the host telling you the site has outgrown the plan. And monitoring on 5xx rates and response times so overload is caught while it is still slow rather than when it is down.
The 503 is the most polite of the ways a site goes down, and the easiest to use well. If yours is recurring under load, book a call and we will look at where the capacity is going.
Common questions
What causes a 503 Service Unavailable error?
The server is running but temporarily cannot handle requests: overload from a traffic spike, maintenance mode left on after an update, a shared-hosting account hitting its CPU or memory limits, a database or other dependency being down, a CDN or firewall throttling the client, or instances failing health checks during a deploy.
How do I fix a 503 error on WordPress?
Check the site root for a .maintenance file left by a failed update and delete it. If none exists, check hosting resource usage for throttling, disable plugins to find one consuming resources or a cron job running amok, and look at the access log for a traffic spike or bot. Persistent 503s under normal traffic usually mean the hosting plan is undersized.
Is a 503 error bad for SEO?
Not if it is brief. Google treats 503 as temporary, retries later, and does not drop pages for a short outage; it is the recommended status for planned maintenance, with a Retry-After header. A 503 that persists for days is eventually treated as the site having gone away, and pages can be removed from the index.
What is the difference between a 503 and a 502 error?
A 503 means the server itself is declining requests because it is overloaded or in maintenance. A 502 means a proxy or gateway in front of the server got an invalid or no response from it, typically because the application behind the proxy crashed or is unreachable. Both are temporary server-side conditions; the 503 usually comes from the server, the 502 from the layer in front of it.
What is the Retry-After header?
An HTTP header sent with a 503 (or a 429) telling the client how long to wait before trying again, as a number of seconds or a date. Browsers mostly ignore it, but crawlers including Google use it to schedule a retry, which is why it should accompany any deliberate maintenance response.
