HTTP Status Codes

Every HTTP status code with what it actually means and when to send it — searchable, and rendered as plain HTML so you can Ctrl+F it.

Runs locally

32 status codes

Code Name What it means
100 Continue The client should keep going and send the request body. Triggered by an Expect: 100-continue header.
101 Switching Protocols The server is changing protocol as asked — this is the handshake response for a WebSocket upgrade.
102 Processing WebDAV. The request was received and is still being worked on, so the client should not time out.
103 Early Hints Sends Link headers before the final response so the browser can preload or preconnect while the server thinks.
200 OK The standard success response. For GET the body is the resource; for POST it is the result of the action.
201 Created A new resource exists as a result of the request. Return its URL in the Location header.
202 Accepted Queued but not finished. Use for async jobs where the outcome is not known yet.
204 No Content Success with deliberately no body. Common for DELETE and for PUT that returns nothing useful.
206 Partial Content The body is only the byte range the client asked for via the Range header. Backs resumable downloads and video seeking.
301 Moved Permanently This URL is retired and the new one is in Location. Search engines transfer ranking signals to the target.
302 Found Temporary redirect. The original URL stays canonical, so use it only when the move really is temporary.
303 See Other Redirects to a different resource with GET, regardless of the original method. The classic POST-redirect-GET response.
304 Not Modified The cached copy is still good. Sent in reply to If-None-Match or If-Modified-Since, with no body.
307 Temporary Redirect Like 302 but the method must not change — a POST stays a POST.
308 Permanent Redirect Like 301 but the method must not change. Use when a POST endpoint moves permanently.
400 Bad Request Malformed syntax the server refuses to parse. Do not use it as a catch-all for validation failures — prefer 422.
401 Unauthorized Actually means unauthenticated: no credentials, or bad ones. Must include a WWW-Authenticate header.
403 Forbidden Authenticated but not allowed. Re-sending with the same credentials will not help.
404 Not Found No resource at this URL, with no comment on whether it ever existed. Also used to hide the existence of protected resources.
405 Method Not Allowed The URL exists but not for this verb. Must list the ones that work in an Allow header.
409 Conflict The request clashes with current state — an edit against a stale version, or a duplicate unique key.
410 Gone Deliberately removed and not coming back. Deindexes faster than 404 because it states the removal was intentional.
415 Unsupported Media Type The Content-Type of the body is one this endpoint cannot handle.
418 I'm a Teapot An April Fools joke from RFC 2324 that never died. Kept in most servers purely as a gag.
422 Unprocessable Content Syntax parsed fine but the content failed validation. The right code for most form and API validation errors.
429 Too Many Requests Rate limited. Should include Retry-After telling the client how long to wait.
500 Internal Server Error An unhandled failure. A generic bucket meaning the server broke and cannot say more.
501 Not Implemented The server does not recognise the method at all. Different from 405, which is per-URL.
502 Bad Gateway A proxy got an invalid reply from upstream. Usually the app behind the load balancer crashed or is not listening.
503 Service Unavailable Temporarily down — overloaded or in maintenance. Should include Retry-After. Does not harm SEO short-term.
504 Gateway Timeout A proxy waited for upstream and gave up. Points at a slow backend, not a broken one.
507 Insufficient Storage WebDAV. The server cannot store what is needed to finish the request.

What are HTTP status codes?

An HTTP status code is the three-digit number a server puts at the start of every response to say how the request went. The first digit is the class: 1xx is informational, 2xx succeeded, 3xx means go somewhere else, 4xx blames the request, and 5xx admits the server broke. The distinctions that matter in practice are the narrow ones — 401 versus 403, 301 versus 302, 400 versus 422 — because getting them wrong changes how browsers cache, how search engines treat your URLs, and whether a client knows it is worth retrying.

How to use this tool

  1. 1 Type a number or a word into the search box — "502", "timeout" and "redirect" all match.
  2. 2 Use the class filters to narrow to just 4xx client errors or 5xx server errors.
  3. 3 Read the meaning column for the practical distinction, not just the spec name.
  4. 4 Every code is in the page source, so browser find (Ctrl+F / Cmd+F) works too.

Frequently asked questions

What's the difference between 401 and 403?

401 means unauthenticated — you sent no credentials or bad ones, and retrying with valid credentials will work. It must include a WWW-Authenticate header. 403 means authenticated but not permitted; the same credentials will never work, so there is no point retrying. Sending 401 when you mean 403 makes clients loop on a login prompt forever.

Should I use 301 or 302 for a redirect?

301 is permanent: search engines transfer ranking signals to the target and browsers cache it aggressively — sometimes indefinitely, which makes a mistaken 301 painful to undo. 302 is temporary and keeps the original URL canonical. Use 301 only when the old URL is genuinely retired for good.

When should I return 422 instead of 400?

400 means the server could not parse the request at all — malformed JSON, a broken header. 422 means the syntax parsed fine but the content failed your validation rules, like a missing required field or an email that is not an email. Most API validation errors are 422, not 400.

Do 404s hurt my SEO?

No. Google has stated repeatedly that 404s are a normal part of the web and do not penalise a site. What hurts is a soft 404 — returning 200 for a page that does not exist — because it fills the index with duplicate content. If a page is deliberately and permanently gone, 410 tells Google that explicitly and deindexes it faster.

What does 502 Bad Gateway actually mean?

A proxy or load balancer forwarded your request upstream and got a reply it could not understand — or no reply at all. Almost always it means the application behind the proxy has crashed, is not listening on the expected port, or was killed mid-response. It is a problem behind the proxy, not in the proxy itself.