AI Overview
A 503 Service Unavailable error means the server is temporarily unable to handle requests, usually because of overload or maintenance. Check resources, restart hung services, read the logs and, on WordPress, clear a stuck maintenance mode.
Key takeaways
- A 503 Service Unavailable means the server is temporarily unable to handle requests, usually because of overload or maintenance.
- Common causes are traffic spikes, hosting resource limits, a stuck WordPress update, failing load balancer health checks and bad deploys.
- Site owners should check CPU, memory and process limits, restart hung services, read the logs and delete a stuck .maintenance file.
- Google slows crawling on 5xx errors and keeps indexed pages for a while, but URLs that keep returning errors are eventually dropped.
- For planned maintenance, return a 503 with a Retry-After header and keep it short, instead of a maintenance page served with 200.
Summarize with AI
Opens the assistant in a new tab with a link to this post.
On this page
A 503 Service Unavailable error means a website is temporarily unable to handle requests. Sometimes that's planned, like a maintenance window. More often it isn't: a traffic spike, a stuck update or a server that ran out of resources. Either way, nobody can use the site while it lasts, and if it lasts too long, search engines start to notice.
This guide explains what a 503 error means, how it differs from 500, 502 and 504, what causes it, and how to fix it step by step, including on WordPress, nginx, cloud load balancers and Cloudflare. It also covers how to use a 503 the right way during planned maintenance, so your rankings survive the downtime.
What does 503 Service Unavailable mean?#
503 Service Unavailable is an HTTP status code. The HTTP standard (RFC 9110) defines it as a response from a server that is currently unable to handle the request because of a temporary overload or scheduled maintenance, which will likely be fixed after some delay.
Two words matter there: temporary and server. A 503 doesn't say the page is gone. It says "not right now, try again later." The server may even say how much later, using a Retry-After header.
That makes the 503 the right code for planned downtime, and a warning sign when it appears unplanned.
What a 503 error looks like#
The wording depends on the server and platform:
- 503 Service Unavailable
- Service Temporarily Unavailable
- HTTP Error 503. The service is unavailable. (IIS)
- Briefly unavailable for scheduled maintenance. Check back in a minute. (WordPress during updates)
- 503 Service Temporarily Unavailable nginx
- Error 503 Backend fetch failed (Varnish and some CDNs)
503 vs 500 vs 502 vs 504#
All four are 5xx server errors, but they point to different problems:
| Code | Meaning | Typical cause |
|---|---|---|
| 500 Internal Server Error | The server hit an unexpected error | Bug, broken plugin, bad config |
| 502 Bad Gateway | A proxy got an invalid response from the server behind it | App server crashed or refused the connection |
| 503 Service Unavailable | The server is temporarily unable to handle requests | Overload, maintenance, no healthy backends |
| 504 Gateway Timeout | A proxy waited too long for the server behind it | Slow queries, long-running requests |
If you're dealing with one of the others, see our guides to the 500 Internal Server Error and 502 Bad Gateway.
Common causes of a 503 error#
- Traffic spikes. A sale, a viral post or a bot swarm sends more requests than the server can handle.
- Exhausted resources. Shared hosting plans cap CPU, memory and the number of simultaneous processes. Hit the cap and new requests get a 503.
- Maintenance mode. Planned maintenance, or a maintenance mode that was switched on and never switched off.
- A stuck WordPress update. WordPress puts the site into maintenance mode during updates. If the update is interrupted, the site can stay there.
- No healthy backends. Load balancers, such as AWS Application Load Balancers, return 503 when none of the servers behind them pass health checks.
- Application pool or process manager stopped. On IIS, a stopped application pool returns 503. On other stacks, a crashed worker pool has a similar effect.
- Rate limiting or DDoS protection. Some servers and CDNs answer excess requests with 503.
- A bad deploy. A release that won't start, or a database that's unreachable, can leave the app unable to serve requests.
How to fix a 503 error as a visitor#
A 503 is almost always the website's problem, but you can:
- Wait a minute and reload. Most 503s are short.
- Check whether it's just you with a down checker or by trying another network. Our guide to checking if a website is down explains how.
- Come back later. If the site is in maintenance, it will return when the work is done.
Clearing your cache rarely helps with a 503, because the response comes from the server.
Try it on your site · free
Check your own page's meta tags
Title, description, canonical and robots - including an accidental noindex - in a few seconds.
How to fix a 503 error on your website#
1. Confirm the scope and timing#
- Is the whole site down, or only some pages?
- Did it start after a deploy, an update, a traffic spike or a configuration change?
- Is it constant, or does it come and go? Intermittent 503s usually point to resource limits.
Check your important URLs from outside with the free Bulk URL Status Checker, so you see what visitors and crawlers see.
2. Check server resources#
Log in to your server or hosting panel and look at CPU, memory and process counts.
- On a VPS, run
toporhtopand checkfree -m. If memory is exhausted, the kernel may be killing processes. - On shared hosting, look for resource usage graphs. Hitting the "entry processes" or memory limit is a classic cause of intermittent 503s.
- If you're consistently at the limit, the fix is caching, blocking abusive bots, optimizing slow pages, or a bigger plan.
3. Restart the service#
If a process is hung, a restart often restores service while you find the cause:
sudo systemctl restart php8.3-fpm
sudo systemctl restart nginx
Use the PHP version and services your server actually runs. On IIS, restart the application pool. On a managed platform, use the restart option in the dashboard.
4. Read the logs#
The web server and application logs usually explain why requests are being refused:
- nginx:
/var/log/nginx/error.log - Apache:
/var/log/apache2/error.logor/var/log/httpd/error_log - PHP-FPM: look for "server reached pm.max_children setting", which means every worker is busy.
- Application logs: database connection failures and startup errors often show up here first.
5. Check the load balancer's health checks#
If you run behind a load balancer, a 503 often means every backend is failing its health check. Check the target health in your cloud console. The cause may be the app, or a health check pointing at a path that no longer returns 200.
6. Fixes specific to WordPress#
- Stuck in maintenance mode: delete the
.maintenancefile in the site's root folder over FTP or your host's file manager. The site comes back immediately. Then rerun the update that was interrupted. - Plugin or theme overload: rename the
wp-content/pluginsfolder to deactivate all plugins. If the site recovers, rename it back and reactivate plugins one at a time. - Heavy traffic: add page caching, and block bad bots at the firewall or CDN.
Our guide to safely updating WordPress plugins helps prevent stuck updates in the first place.
7. Fixes specific to Cloudflare#
If Cloudflare shows a 503, check whether the page is branded as coming from your origin server or from Cloudflare. An origin 503 means your server returned it, so work through the steps above. If you've enabled aggressive rate limiting, check the security events log for rules returning 503 to real visitors.
Does a 503 error hurt SEO?#
A short 503 doesn't, and that's the point of the code. Google's documentation says that 5xx errors make Google's crawlers temporarily slow down crawling, and that already indexed URLs are preserved in the index, but eventually dropped if the errors continue. Once the server starts returning 200 again, Google gradually increases the crawl rate.
So the risk is duration. A few minutes or hours of 503 is normal. Days of 503 risk losing pages from search.
One special case: if your robots.txt returns a 503 or another server error, Google pauses crawling of the whole site, because it can't be sure what it's allowed to crawl.
How to use a 503 for planned maintenance#
When you take a site down on purpose, a 503 is the correct response. It tells search engines the downtime is temporary, so they don't treat your pages as gone.
Do it properly:
- Return status 503, not a 200 maintenance page. A maintenance message served with 200 can be indexed in place of your real content.
- Add a
Retry-Afterheader with the number of seconds until you expect to be back, such asRetry-After: 3600. - Keep robots.txt returning 200 if you can, so crawling of the rest of the site isn't paused.
- Keep it short. Plan maintenance for hours, not days.
- Don't return 404 or 410 during maintenance. Those tell Google the page is gone.
An nginx example that serves a maintenance page with the right status:
location / {
return 503;
}
error_page 503 @maintenance;
location @maintenance {
add_header Retry-After 3600 always;
rewrite ^ /maintenance.html break;
}
How to catch 503 errors before your customers do#
Intermittent 503s are easy to miss. The site works when you check, but fails for customers during the busiest moments, which is exactly when it matters most.
MyKavo watches for them in two ways:
- Uptime checks every 5 minutes. Any 5xx status, including 503, counts as down. After two failed checks in a row, so a single blip doesn't wake you up, MyKavo sends a down alert by email and to Slack, Discord or a webhook, then a recovery alert when the site is back.
- Page scans against your baseline. If a monitored page that used to return 200 starts returning 503, MyKavo raises it as a critical change, with the old and new status side by side.
Frequently asked questions
What does 503 Service Unavailable mean?
It means the server is temporarily unable to handle the request, usually because it's overloaded or in maintenance. It signals a temporary problem, not a missing page.
How long does a 503 error last?
Usually minutes. If it's planned maintenance, it lasts until the work is done. If a 503 lasts hours or keeps coming back, the server likely has a resource or configuration problem to fix.
How do I fix a 503 error on WordPress?
If WordPress is stuck in maintenance mode, delete the .maintenance file in the site's root. Otherwise, deactivate plugins to find a faulty one, check server resources and add caching.
What is the difference between a 502 and a 503 error?
A 502 means a proxy got an invalid response from the server behind it. A 503 means the server is temporarily unable to handle requests, often because of overload or maintenance.
Does a 503 error affect SEO?
Not briefly. Google slows crawling and keeps indexed pages for a while, but URLs that keep returning 5xx errors are eventually dropped. Keep 503s short.
Should I use a 503 for website maintenance?
Yes. Return a 503 with a Retry-After header during planned maintenance, keep it short, and avoid serving a maintenance page with a 200 status.
The bottom line#
A 503 Service Unavailable error means the server can't handle requests right now. Visitors can only wait and retry. Site owners should check resources, restart hung services, read the logs, check load balancer health and, on WordPress, clear a stuck maintenance mode.
Used on purpose, with a Retry-After header and kept short, a 503 is the safest way to take a site down for maintenance. Unplanned, it's a warning to fix fast. Check your key URLs now with the free Bulk URL Status Checker, then start free with MyKavo to get alerted within minutes when your site starts returning 503.
Get alerted when your site breaks. Free, no card.
Start free