Skip to content
http status-codes monitoring web-development uptime

HTTP Status Codes Explained: A Complete Guide for Website Monitoring

Webalert Team
February 21, 2026
12 min read

HTTP Status Codes Explained

Every time a browser requests a page, the server responds with a three-digit number. That number — the HTTP status code — tells the client exactly what happened: success, redirect, client mistake, or server failure.

If you run a website, API, or online service, understanding these codes is essential. They're the language your server speaks, and they're the foundation of how uptime monitors decide whether your site is healthy or broken.

This guide covers every status code category, the most important codes you'll encounter, and what each one means for monitoring.


What Are HTTP Status Codes?

An HTTP status code is a three-digit response issued by a web server for every request it receives. The first digit defines the category:

Range Category Meaning
1xx Informational Request received, processing continues
2xx Success Request was received, understood, and accepted
3xx Redirection Further action needed to complete the request
4xx Client Error The request contains bad syntax or cannot be fulfilled
5xx Server Error The server failed to fulfill a valid request

The key insight: 2xx means things are working. 4xx means the client did something wrong. 5xx means your server has a problem.


1xx — Informational Responses

These codes indicate the server received the request and is continuing to process it. You'll rarely see these in practice, but they exist in the protocol.

100 Continue

The server received the request headers and the client should proceed to send the body. Used in large file uploads where the client wants confirmation before sending data.

101 Switching Protocols

The server is switching to a different protocol as requested by the client. Most commonly seen when upgrading an HTTP connection to a WebSocket connection.

103 Early Hints

Allows the server to send preliminary headers before the final response. Used to let the browser start preloading resources (like CSS or fonts) while the server prepares the full response.

Monitoring impact: 1xx codes are intermediate responses. Your monitoring tool should never see these as final responses — if it does, something is misconfigured.


2xx — Success

These are the codes you want to see. They mean the request was successfully received, understood, and accepted.

200 OK

The standard success response. The request succeeded, and the server returned the requested content. This is what your uptime monitor checks for on every request.

201 Created

The request succeeded and a new resource was created. Common in APIs after a successful POST request (e.g., creating a new user or record).

204 No Content

The request succeeded but there's no content to return. Often used for DELETE requests or form submissions where no response body is needed.

206 Partial Content

The server is returning only part of the resource, as requested by the client using a Range header. Used in video streaming and large file downloads.

Monitoring impact: A 200 response is the gold standard for uptime checks. If your monitor expects 200 and gets anything else, that's worth investigating. For API endpoints, 201 and 204 can also be valid success responses — configure your monitor accordingly.


3xx — Redirection

These codes tell the client the resource has moved and it needs to look somewhere else.

301 Moved Permanently

The resource has been permanently moved to a new URL. Search engines transfer the old URL's ranking to the new one. Browsers and clients should use the new URL going forward.

302 Found (Temporary Redirect)

The resource is temporarily at a different URL. The client should continue using the original URL for future requests.

304 Not Modified

The resource hasn't changed since the last request. The client can use its cached version. This saves bandwidth and speeds up page loads.

307 Temporary Redirect

Similar to 302, but guarantees the HTTP method won't change. If the original request was POST, the redirect will also be POST.

308 Permanent Redirect

Similar to 301, but guarantees the HTTP method won't change. The permanent version of 307.

Monitoring impact: Redirects are tricky for monitoring. A 301 or 302 might be perfectly normal (e.g., redirecting HTTP to HTTPS), but it could also mean a misconfiguration. Most uptime monitors follow redirects automatically and check the final response — make sure yours does. An unexpected redirect chain (3+ hops) is usually a problem.


4xx — Client Errors

These codes mean the request was malformed or unauthorized. The problem is on the client's side — but that doesn't mean you can ignore them.

400 Bad Request

The server can't understand the request due to invalid syntax. In APIs, this often means the request body is malformed or required parameters are missing.

401 Unauthorized

The request requires authentication. The client hasn't provided credentials, or the credentials are invalid. Different from 403 — here the client could potentially authenticate and retry.

403 Forbidden

The server understood the request but refuses to authorize it. The client's identity is known, but they don't have permission. No amount of re-authentication will help.

404 Not Found

The most famous error code. The requested resource doesn't exist on the server. This could mean a broken link, a deleted page, or a typo in the URL.

405 Method Not Allowed

The HTTP method used (GET, POST, PUT, etc.) isn't supported for the requested resource. For example, trying to POST to a read-only endpoint.

408 Request Timeout

The server timed out waiting for the client to finish sending the request. Different from a server-side timeout — this means the client was too slow.

429 Too Many Requests

The client has sent too many requests in a given time period (rate limiting). Common in APIs that enforce usage limits.

Monitoring impact: 4xx codes on your public pages are a problem worth tracking. A spike in 404s might mean broken links after a deployment. A 401 on a public page means something is misconfigured. However, some 4xx responses are expected (e.g., 404 for unknown paths). Configure your monitors to check specific URLs you control, not random paths.


5xx — Server Errors

These are the codes that wake you up at night. They mean your server received a valid request but failed to process it.

500 Internal Server Error

The catch-all server error. Something went wrong, but the server can't be more specific. Often caused by unhandled exceptions, application crashes, or misconfigured server software.

502 Bad Gateway

The server acting as a gateway or proxy received an invalid response from an upstream server. Common when your reverse proxy (Nginx, Cloudflare) can't reach your application server.

503 Service Unavailable

The server is temporarily unable to handle the request. Usually means the server is overloaded or undergoing maintenance. Often paired with a Retry-After header.

504 Gateway Timeout

The server acting as a gateway didn't receive a timely response from the upstream server. Similar to 502, but specifically a timeout rather than an invalid response. Common during high traffic or when backend services are slow.

520–527 (Cloudflare-specific)

If you use Cloudflare, you may see custom 5xx codes. For example, 520 means Cloudflare received an unexpected response from your origin server, and 522 means Cloudflare couldn't reach your server (connection timed out).

Monitoring impact: Any 5xx code is a serious incident. Your monitoring should alert immediately on any 5xx response. The specific code helps you diagnose the issue:

Code Likely cause Where to look
500 Application crash Application logs, recent deployments
502 App server unreachable Process manager, app server status
503 Server overloaded CPU/memory usage, request queue
504 Upstream timeout Database queries, external API calls

What Status Codes Mean for Uptime Monitoring

Not all status codes are created equal when it comes to monitoring. Here's how to think about them:

Codes that should trigger alerts

  • 5xx (any) — Your server is broken. Alert immediately.
  • Unexpected 4xx on known URLs — A 404 on your homepage means something is very wrong.
  • Unexpected 3xx — If your homepage suddenly redirects to an error page, you need to know.

Codes that are usually fine

  • 200 — Everything is working.
  • 301/302 — Normal redirects (HTTP→HTTPS, www→non-www).
  • 304 — Cached content, perfectly healthy.

Codes that need context

  • 401/403 — Fine on protected endpoints, a problem on public pages.
  • 429 — Rate limiting is working, but if your own monitoring is being rate-limited, reduce check frequency or whitelist the monitoring IP.
  • 503 — Could be planned maintenance (fine) or an unexpected outage (alert).

False positives to watch for

Monitoring tools can sometimes report misleading status codes:

  • A 301 redirect isn't downtime — it's working as intended. Make sure your monitor follows redirects.
  • A 403 from a WAF might block your monitoring requests. Whitelist your monitoring service's IPs.
  • A 429 rate limit on your own monitor means you're checking too aggressively.
  • Intermittent 502s during deployments might be normal if you don't use zero-downtime deploys.

How to Monitor HTTP Status Codes Effectively

1. Check the right URLs

Monitor the pages that matter: your homepage, key landing pages, API health endpoints, checkout flow, and login page. Don't just monitor the root URL — a healthy homepage doesn't mean your API is working.

2. Validate the full response

Don't just check for "not 5xx." Validate that you get the expected status code (usually 200) and optionally check for expected content in the response body. This catches cases where a page returns 200 but shows an error message.

3. Check from multiple locations

A 502 error might only appear from certain regions if the issue is with a specific CDN edge node or data center. Multi-region monitoring catches problems that single-location checks miss.

4. Set up tiered alerting

  • 5xx errors: Alert immediately via SMS/Slack/call.
  • Unexpected 4xx: Alert via email or Slack — investigate soon, but it's not always urgent.
  • High response times: Warn early so you can act before it becomes a 504 timeout.

5. Track trends over time

A single 500 error might be a blip. A rising trend of 502s over a week means your infrastructure is degrading. Response time graphs help you spot problems before they become outages.


How Webalert Handles Status Codes

Webalert monitors your URLs and validates the HTTP status code on every check:

  • Expected status code validation — Set the expected code (200, 201, 301, etc.) and alert when the response doesn't match.
  • Smart redirect following — Follows redirect chains and validates the final response, so legitimate redirects don't trigger false alarms.
  • Response body checks — Optionally verify that the page contains expected text, catching soft failures where the status code is 200 but the content is wrong.
  • Multi-region checks — Runs from multiple global locations so you catch region-specific issues.
  • Instant alerts — Get notified via email, SMS, Slack, Discord, or webhooks the moment a check returns an unexpected status code.
  • Response time tracking — See how long each request takes, and get alerted when response times cross your threshold — before they become timeouts.

See features and pricing for the full monitoring capabilities.


Quick Reference Table

Code Name Category Alert?
200 OK Success No — this is healthy
201 Created Success No
301 Moved Permanently Redirect Only if unexpected
302 Found Redirect Only if unexpected
400 Bad Request Client Error If on your own pages
401 Unauthorized Client Error If on public pages
403 Forbidden Client Error If on public pages
404 Not Found Client Error If on known URLs
429 Too Many Requests Client Error Review rate limits
500 Internal Server Error Server Error Yes — immediately
502 Bad Gateway Server Error Yes — immediately
503 Service Unavailable Server Error Yes — immediately
504 Gateway Timeout Server Error Yes — immediately

Summary

HTTP status codes are the simplest and most reliable signal of your website's health. Every monitoring strategy starts here:

  • 2xx = healthy. Your site is responding correctly.
  • 3xx = redirection. Usually fine, but validate redirect chains.
  • 4xx = client error. Track them on your own pages to catch broken links and misconfigurations.
  • 5xx = server error. Alert immediately and investigate.

The goal of monitoring isn't just to know your site is "up." It's to know exactly how it's responding and to catch problems before your users do.


Monitor every response, catch every failure

Start monitoring your website free with Webalert →

See features and pricing. No credit card required.

Written by

Webalert Team

The Webalert team is dedicated to helping businesses keep their websites online and their users happy with reliable monitoring solutions.

Ready to Monitor Your Website?

Start monitoring for free with 3 monitors, 10-minute checks, and instant alerts.

Get Started Free