Server Error
503

Service Unavailable

The server is temporarily unable to handle the request due to overloading or maintenance.

# Quick Definition

The server is currently unable to handle the request due to temporary overloading or scheduled maintenance. This implies the condition is temporary and the server will be available again after some time. Unlike a 500 error, a 503 explicitly signals that the outage is expected to resolve.

# When Does a 503 Error Occur?

A 503 Service Unavailable error is returned during planned maintenance windows, traffic spikes beyond server capacity, application pool recycling, or when the server is deliberately taken offline. It's the "polite" server error -- the server knows it can't help right now, but it expects to recover.

This is the correct status code for maintenance pages and is often accompanied by a Retry-After header that tells clients when to come back.

# Common Causes

# How to Fix a 503 Error

  1. Check if maintenance is scheduled -- Look for maintenance mode flags, deployment scripts, or team announcements. If maintenance is planned, the 503 is intentional.
  2. Review server load -- Run top, htop, or uptime to see if the server is overwhelmed. High CPU or memory usage points to capacity issues.
  3. Check application pool status -- For IIS, check Application Pool health. For PHP-FPM, check systemctl status php-fpm and worker process counts.
  4. Verify database connection pool -- Check if the database connection pool is exhausted. Increase max_connections or optimize queries to release connections faster.
  5. Scale up server resources -- Add more instances behind the load balancer or increase the current server's CPU/RAM to handle the load.
  6. Implement or adjust rate limiting -- Use rate limiting to prevent any single client from overwhelming the server while still serving most users.
  7. Check for DDoS patterns -- Review access logs for unusual traffic patterns. Implement WAF rules or use a DDoS protection service if under attack.
  8. Use Retry-After header -- Include a Retry-After header in your 503 response so clients and search engines know when to come back.

# HTTP Example

Request
GET /api/data HTTP/1.1
Host: example.com
Accept: application/json
Response
HTTP/1.1 503 Service Unavailable
Content-Type: application/json
Retry-After: 300
Date: Thu, 20 Feb 2026 12:00:00 GMT

{
  "error": "Service Unavailable",
  "message": "Server is under maintenance. Please retry after 300 seconds."
}

# Related Status Codes

# Frequently Asked Questions

Does 503 mean the website is down? +
Temporarily, yes. A 503 Service Unavailable means the server cannot handle requests right now, but it should come back. Unlike a complete outage, a 503 specifically signals that the downtime is temporary -- often due to scheduled maintenance, traffic overload, or server restarts. The server is expected to recover.
What is a Retry-After header? +
The Retry-After header is sent with a 503 response to tell clients when they should try the request again. It can contain either a number of seconds (e.g., Retry-After: 300 means wait 5 minutes) or an HTTP date. Well-behaved clients, bots, and search engine crawlers will respect this header and wait before retrying, which helps prevent further overload.
How to prevent 503 errors? +
Prevent 503 errors by using auto-scaling to handle traffic spikes, load balancing to distribute requests across multiple servers, implementing proper capacity planning, using CDNs to cache static content, and setting up monitoring to detect issues early. Rate limiting and request queuing also help protect against sudden traffic surges.

Get alerted before your users notice

Monitor your website 24/7 and receive instant alerts when 503 errors occur.

Start Free Monitoring