HTTP Status Codes Explained: The Complete Reference

5 min read

What Are HTTP Status Codes?

When your browser requests a webpage, or when an uptime monitor checks your URL, the server responds with a three-digit HTTP status code. This code tells the client (browser, monitor, API consumer) what happened with the request.

Status codes are grouped into five classes based on their first digit:

Class Range Meaning
1xx 100–199 Informational
2xx 200–299 Success
3xx 300–399 Redirection
4xx 400–499 Client Error
5xx 500–599 Server Error

For uptime monitoring, the most important classes are 2xx (everything is working) and 4xx/5xx (something is wrong).

2xx — Success Codes

200 OK

The standard success response. The request was received, understood, and processed. This is what you want your uptime monitor to see.

201 Created

The request was successful and a new resource was created. Common response for POST requests to REST APIs.

204 No Content

The request was successful but there's no content to return. Common for DELETE requests and API health checks that just need to confirm availability.

3xx — Redirection Codes

301 Moved Permanently

The URL has permanently moved to a new location. Browsers and search engines update their records. Your monitor should follow this redirect.

Monitoring tip: If your monitor sees a 301, update your monitored URL to the new destination. Monitoring a redirect chain adds latency.

302 Found (Temporary Redirect)

The URL has temporarily moved. Browsers redirect, but search engines don't update their records. Common for login redirects.

304 Not Modified

The resource hasn't changed since the last request (used with caching headers). Not a failure — but unusual to see in monitoring responses.

4xx — Client Error Codes

These indicate the problem is with the request itself (the URL, credentials, or permissions).

400 Bad Request

The server couldn't understand the request due to malformed syntax. For monitoring, this usually means the URL or request headers are malformed.

401 Unauthorized

Authentication is required and wasn't provided (or failed). If your monitor sees 401, the URL may require authentication that you need to configure.

403 Forbidden

The server understood the request but refuses to authorize it. The difference from 401: no amount of authentication will help — the resource is simply not accessible to this client.

Monitoring alert: If your public homepage returns 403, your server may have blocked the monitoring service's IP range. Whitelist the monitoring IPs.

404 Not Found

The requested URL doesn't exist on the server.

Common causes in monitoring:
- The page was deleted or moved
- A typo in the monitored URL
- The server is partially down (database disconnected but web server running)

429 Too Many Requests

The client has sent too many requests in a given time window (rate limiting). If your monitor triggers 429, reduce the check frequency.

5xx — Server Error Codes

These indicate the server encountered an error processing the request. These are the codes your uptime monitor cares most about.

500 Internal Server Error

The most common server error. Something went wrong on the server — a crashed application, database error, or unhandled exception.

Action required: Check your application logs immediately.

502 Bad Gateway

The server was acting as a gateway or proxy and received an invalid response from an upstream server.

Common causes:
- Your application server (Node.js, Python, PHP-FPM) crashed
- Your reverse proxy (Nginx, Caddy) can't reach the app server
- Memory exhaustion on the application server

503 Service Unavailable

The server is temporarily unable to handle requests — usually due to overload or maintenance.

Monitoring tip: Some sites return 503 during planned maintenance. You can configure your monitor to expect this code during maintenance windows to avoid false alerts.

504 Gateway Timeout

The gateway didn't receive a timely response from the upstream server. Similar to 502, but specifically a timeout.

Common causes:
- Slow database queries blocking request completion
- Upstream microservice taking too long
- Network issues between servers

521, 522, 523, 524 (Cloudflare-specific)

If you're behind Cloudflare, you may see these proprietary codes:
- 521: Web server is down (Cloudflare can reach the origin but it refuses connections)
- 522: Connection timed out
- 523: Origin unreachable
- 524: A timeout occurred (request reached origin but took too long)

What Status Code Should My Monitor Expect?

By default, uptime monitors expect 200 OK. But some URLs legitimately return other codes:

URL Type Expected Code
Standard webpage 200
API health endpoint 200 or 204
Redirect (www → non-www) 301 (monitor the destination)
Protected page (login required) 200 or 302 to login
API with authentication 401 (if not authenticated)

In ismysiteup, you can set the expected status code per monitor. This lets you correctly monitor redirects, health endpoints that return 204, and other non-standard responses.

How Status Codes Affect SEO

Code SEO Impact
200 No impact — healthy
301 Passes ~99% of link equity to new URL
302 Doesn't pass link equity — use 301 for permanent moves
404 Page removed from index over time
500/503 Page temporarily removed from index; may recover
Consistent 5xx Significant negative impact on crawl frequency and rankings

Conclusion

HTTP status codes are the language your server uses to communicate its health. Understanding them makes you a more effective developer, sysadmin, and website owner — and helps you configure your uptime monitors correctly so you catch real problems and avoid false alerts.

Set your expected status code correctly in ismysiteup and you'll never miss a real outage again.

Monitor your websites for free

Get instant email, Telegram, and WhatsApp alerts when your sites go down. Check every 5 seconds. No credit card required.

Start Monitoring Free