What are HTTP status codes?

Every time you visit a website, your browser and the server have a short conversation. Part of that conversation is a three-digit number that tells you how the request went. That number is the HTTP status code.

Most of the time it's a boring 200. Sometimes it's a 404, or the dreaded 500. Whether you're building APIs, running a website, or just trying to figure out what that error page means, knowing the common status codes saves you a lot of time.

Here's a practical cheat sheet.

What are HTTP status codes?

HTTP status codes are 3-digit numbers that describe the result of a request. They're part of the HTTP protocol, the foundation of almost everything that moves around the web.

The first digit tells you what kind of response it is:

  • 1xx: informational
  • 2xx: success
  • 3xx: redirection
  • 4xx: client errors
  • 5xx: server errors

Let's break each of those down.

1xx, informational responses

Rare in day-to-day use. Mostly relevant when you're debugging low-level networking.

100 Continue

The server received the request headers and is telling the client to go ahead and send the body. You'll almost never see this unless you're inspecting raw TCP traffic.

2xx, success codes

The happy path.

200 OK

Everything worked. The response contains what you asked for. No fix needed.

201 Created

A new resource was successfully created, typically in response to a POST. Common in API responses.

204 No Content

The request succeeded, but there's no body to return. Often used for DELETE or empty PUT responses.

3xx, redirection codes

The server is pointing you somewhere else.

301 Moved Permanently

The resource has permanently moved. Search engines treat this as "update your index". Use it when you move or rename pages that already have links pointing to them.

302 Found

The resource is temporarily at a different URL. Use sparingly: 302 doesn't pass as much SEO authority as 301, and if you meant "permanently moved", the wrong status code can hurt rankings.

307 Temporary Redirect

Like 302, but preserves the original HTTP method. If you sent a POST, the redirected request is also a POST.

308 Permanent Redirect

Like 301, but preserves the HTTP method.

4xx, client errors

Something's wrong with the request. Usually (but not always) the caller's fault.

400 Bad Request

The server couldn't parse the request. Check for malformed URLs, invalid JSON, missing headers, or corrupted cookies.

401 Unauthorized

Authentication is required. Log in, send the right credentials, or refresh your token.

403 Forbidden

Authenticated, but not allowed. Permission settings or a file's access mode are usually to blame.

404 Not Found

The requested resource doesn't exist. Fix options:

  • Double-check the URL
  • Set up a redirect if the page moved
  • Build a custom 404 page that helps visitors get unstuck

405 Method Not Allowed

The HTTP method (GET, POST, etc.) isn't supported on that URL. Check which methods the endpoint actually accepts.

408 Request Timeout

The server waited too long for the request to finish. Can indicate slow clients or a network issue.

429 Too Many Requests

You've hit a rate limit. Slow down, back off exponentially, or ask for a higher quota. If you're not making the requests yourself, it could be a bot or a misbehaving client.

5xx, server errors

The server couldn't fulfil the request, and the caller didn't do anything wrong.

500 Internal Server Error

A catch-all "something went wrong on our end". Check application logs, failing deploys, missing environment variables, or broken plugins.

502 Bad Gateway

A server acting as a proxy or gateway got an invalid response from an upstream service. Common with load balancers, CDNs, or API gateways.

503 Service Unavailable

The server is temporarily unavailable: overloaded, under maintenance, or restarting. Often intentional, sometimes not.

504 Gateway Timeout

A proxy didn't get a response from upstream in time. Usually means a slow or hung backend.

Why do HTTP status codes matter?

Status codes are the first clue when something's wrong. They affect:

  • User experience (nobody likes seeing 404s)
  • SEO (Google pays attention to broken and slow responses)
  • API reliability (clients rely on correct status codes to handle responses)
  • Uptime monitoring (tools like Oh Dear use status codes to decide if your site is healthy)

Small status code issues can quietly snowball. Monitoring them is a cheap way to catch problems early.

In summary

  • 2xx means it worked
  • 3xx means it moved
  • 4xx means the client did something wrong
  • 5xx means the server did something wrong

If you'd rather not watch for these yourself, Oh Dear keeps an eye on every response from your site, every minute, from multiple locations, and lets you know the moment a bad status code shows up.

Related Questions

View all General questions →

Want to get started? We offer a no-strings-attached 10 day trial. No credit card required.

Start monitoring

You're all set in
less than a minute!