Error 503
An Error 503 Service Unavailable means the server is alive and sees your request, but is refusing to serve it. Two very different things sit behind that code: maintenance you scheduled, or capacity that actually ran out. The fastest way to tell them apart is the Retry-After header.
Deliberate or not
A deliberate 503 comes from a CMS maintenance mode or a custom page. It is honest and controlled. A wild 503 shows up unannounced, flickers in during traffic spikes, and signals exhausted PHP workers, gone memory, or a plan resource limit hit. The difference matters: you set the first one yourself, while the second quietly drains your uptime and makes crawlers fail to fetch your pages. Check whether your cache plugin also serves static pages, because some visitors may keep seeing stale content while others hit the 503.
Retry-After and cache rules
A correct 503 should send a Retry-After header so clients know when to come back, either in seconds or as an HTTP date. Never let the 503 itself get cached. If a CDN stores that response, visitors keep seeing a closed site even after the origin recovers. Make sure status 503 is not stored and that Cache-Control tells clients to skip it. Without the header, crawlers and bots retry as fast as they can and add load exactly when the server is weakest.
When Cloudflare or the load balancer answers
This is the most common confusion. Cloudflare or a load balancer can serve a 503 while the origin is actually healthy, for example when every backend gets marked down or just one layer fails. So a 503 on screen does not prove your application server is broken. Check the origin directly, then compare it with what the front layer sends before blaming your host.
Duration and prevention
A planned hour of 503 during a migration is fine, search engines treat it as a signal to return later. What hurts is an unintentional, drawn-out 503. For moments like a flash sale, warm the cache before the peak and pick a plan whose process limits sit above your expected traffic. If only one client keeps getting blocked while everyone else is fine, suspect an Error 429 rather than a 503. If the 503 appears during a deploy, make sure the new health check is live before you route traffic back.
FAQ
How is 503 different from 500?
An Error 500 means broken code. A 503 means the system is healthy but too busy to serve. A 500 will not recover on its own, a 503 can once the load drops.
Can a maintenance page return status 200?
It should not. A maintenance page that answers 200 tricks search engines into thinking the site is normal while its content changed. Planned maintenance should genuinely send 503.
Disclaimer: Hosting Wiki articles are prepared for educational and reference purposes. Hosting technology keeps evolving, so some technical details may change over time.