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.
| Setup | Usual cause | Fix |
|---|---|---|
| WordPress | Stuck maintenance mode after an update | Delete the .maintenance file in the site root |
| Windows IIS | Application pool stopped after repeated crashes | Fix the crash, then start the pool |
| Kubernetes ingress | No ready pods behind the service | Check pod readiness and the service selector |
| Shared or small server | Traffic or a bot spike used all workers | Add 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
- Check whether the 503 is constant or comes and goes with traffic.
- Look for maintenance switches left on: plugins, files or a load balancer setting.
- Check the app's health: running processes, ready containers, an IIS app pool.
- 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
- 504 Gateway Timeout: What Timed Out and How to Fix It
- Abandoned Cart Email Examples and Templates
- Abandoned Cart Text Messages
- About Us Page Examples: 6 Annotated Designs for Small Businesses | How-to Guide
- How to Accept Payments on a Website
- An Accessibility Testing Process Web Teams Can Actually Keep Up | How-to Guide
- Accessible PDF Alternatives for Public Websites: When to Turn a PDF Into a Web Page | How-to Guide
- ADA Title II Website Deadline: April 2027 and April 2028 Explained | How-to Guide
Product
Who It's For
- For Agencies
- For Freelancers
- For Hosting Providers
- For SaaS Platforms
- For Startups
- For Financial Services
- For Healthcare
Features
Resources
- Blog
- Help Center
- Free Business Tools
- Free UI Components
- Website Templates
- Template Collections
- Website Examples
- Guides
- Comparisons
- Alternatives
- Best Lists
- Reviews
- Pricing Guides
- Use Cases
- Glossary & Guides
- Integrations
- Developers
- Benchmark
- Windows App