Writing

503 Service Unavailable

Published 18 September 2026

A 503 service unavailable is the odd one out among server errors, and the difference decides what you should do about it. A 500, a 502 and a 504 are all failures. A 503 is frequently a decision. Something decided not to serve you, on purpose, and the useful question is whether that decision was deliberate or a symptom.

What it proves before anything else

The server answered. For a 503 to reach you, the name resolved, a TCP connection opened, TLS negotiated, your request was delivered and a response travelled back. Something is running and healthy enough to compose a reply and hand it to you.

That already rules out a great deal. It is not your network, not your DNS, and not a firewall: none of those produce a numbered HTTP reply. Whatever is wrong is a policy or a capacity decision on their side, made after your request arrived safely.

The distinction that matters: deliberate or failing

Deliberate 503Failing 503
Has a Retry-After headerNo Retry-After
A maintenance page, written by a humanThe web server's stock error page
Every path returns it, consistentlyIntermittent, or only some paths
Announced somewhere: status page, bannerNothing anywhere
Ends at a predictable timeEnds when someone notices

Retry-After is the strongest single tell. A server that tells you when to come back has been configured by someone who knew this would happen. Its absence does not prove a fault: plenty of maintenance pages omit it, but its presence almost always means the 503 is planned.

The wording is a tell too

If the page says "503 Service Temporarily Unavailable", that phrasing is nginx's built-in error page, not something anyone wrote. Apache's default is similar. Seeing the stock wording means the request never reached an application that could have produced a considered response, which usually points at no healthy backend rather than a planned window.

A deliberate maintenance page nearly always says something specific: what is happening, and when it ends. Nobody ships "Service Temporarily Unavailable" on purpose. The HTTP 503 status is the same either way; only the body differs, and the body is where the intent shows.

How long does a 503 last?

The honest answer is that the error itself cannot tell you, with one exception. If there is a Retry-After header, that is the answer, and it comes in one of two forms:

Retry-After: 120                              # seconds
Retry-After: Fri, 18 Sep 2026 20:00:00 GMT    # an HTTP date

Without it, the shape of the outage is the clue. A deliberate maintenance window is typically minutes to a couple of hours and ends cleanly. A 503 from overload comes and goes as traffic rises and falls: you will see it, then not, then see it again. A 503 that is constant for hours with a stock error page is usually something nobody has noticed yet.

What actually causes one

503, 502 and 504 are three different stories

CodeWhat happenedDeliberate?
502A proxy got an unusable answer from a backendNever
504A proxy waited for a backend and gave upNever
503A server that is running declined to serve youOften

The practical difference: a 502 or 504 means something is broken and someone needs to fix it. A 503 may mean exactly what it says, and the right response may be to wait.

If you own the server

If you do not own it

See the headers, not just the code. The HTTP status checker fetches the URL and shows the response headers: including Retry-After, which is the one that tells you whether this 503 was planned. It also says plainly whether the fault is yours, theirs, or actually the network.

Check a URL

What a 503 is never