Browser-first · No sign-up

HTTP Status Code Explorer | HTTP Response Codes Reference & Comparisons

Search and browse HTTP status codes with explanations, use cases, comparisons (401 vs 403, 500 vs 502 vs 503), and copyable examples.

No uploads. Everything runs locally in your browser.

Browse HTTP status codes by class, search by keyword, and open details to see when to use each code, common mistakes, and sample responses.

Filter by class
100 · Continue
Informational (1xx)

Interim response telling the client to keep sending the request body.

When to use

Large uploads where the server wants to confirm headers before body.

Common mistakes

Rarely needed for typical APIs; not a final response.

Example response
HTTP/1.1 100 Continue

Related
101
101 · Switching Protocols
Informational (1xx)

Server agrees to upgrade protocols (e.g., to WebSocket).

When to use

When honoring an Upgrade header (HTTP→WebSocket).

Common mistakes

Don’t return if you aren’t actually switching.

Example response
HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Connection: Upgrade
Related
100
200 · OK
Success (2xx)

Request succeeded and returns a representation.

When to use

Standard successful GET/POST with a response body.

Common mistakes

Don’t use when a new resource is created (prefer 201).

Example response
HTTP/1.1 200 OK
Content-Type: application/json
Related
201204
201 · Created
Success (2xx)

Resource created as a result of the request.

When to use

Successful POST/PUT that creates a new resource; include Location header.

Common mistakes

Use 200 if nothing new was created; include representation when helpful.

Example response
HTTP/1.1 201 Created
Location: /items/123
Related
200204
204 · No Content
Success (2xx)

Request succeeded, no body returned.

When to use

DELETE success or updates where no body is needed.

Common mistakes

Don’t send a body with 204.

Example response
HTTP/1.1 204 No Content
Related
200201
301 · Moved Permanently
Redirection (3xx)

Resource has a new permanent URL.

When to use

Permanent redirects; update clients/bookmarks.

Common mistakes

Don’t use for temporary moves; prefer 308 for preserving method/bodies.

Example response
HTTP/1.1 301 Moved Permanently
Location: https://example.com/new
Related
302308
302 · Found
Redirection (3xx)

Temporary redirect (often behaves like 303/307 depending on client).

When to use

Temporary moves when method change is acceptable (though 307/303 clearer).

Common mistakes

Ambiguous semantics; prefer 303 (after POST) or 307 (method preserved).

Example response
HTTP/1.1 302 Found
Location: /temp
Related
301303307
303 · See Other
Redirection (3xx)

Redirect to GET another resource (commonly after POST).

When to use

After POST to redirect user to a confirmation page via GET.

Common mistakes

Don’t use when you need to preserve original method; use 307 instead.

Example response
HTTP/1.1 303 See Other
Location: /receipt/123
Related
302307
307 · Temporary Redirect
Redirection (3xx)

Temporary redirect preserving method/body.

When to use

Short-term moves where POST/PUT bodies must be retried as-is.

Common mistakes

Use 308 for permanent method-preserving redirects.

Example response
HTTP/1.1 307 Temporary Redirect
Location: /maintenance
Related
302303308
308 · Permanent Redirect
Redirection (3xx)

Permanent redirect preserving method/body.

When to use

Permanent move where POST/PUT bodies must stay intact.

Common mistakes

Don’t use 301 if method must be preserved.

Example response
HTTP/1.1 308 Permanent Redirect
Location: https://example.com/new
Related
301307
400 · Bad Request
Client Error (4xx)

Malformed request syntax or invalid parameters.

When to use

Validation failures, malformed JSON, missing required fields.

Common mistakes

Use 422 when semantics are correct but data is invalid; use 401/403 for auth issues.

Example response
HTTP/1.1 400 Bad Request
Content-Type: application/json
Related
401403422
401 · Unauthorized
Client Error (4xx)

Authentication required or failed.

When to use

Missing/invalid credentials; include WWW-Authenticate when applicable.

Common mistakes

Don’t use for forbidden-with-auth cases (use 403).

Example response
HTTP/1.1 401 Unauthorized
WWW-Authenticate: Bearer
Related
403407
403 · Forbidden
Client Error (4xx)

Authenticated but not allowed to perform the action.

When to use

User is known but lacks permission for the resource.

Common mistakes

Don’t use for missing auth (401).

Example response
HTTP/1.1 403 Forbidden
Related
401404
404 · Not Found
Client Error (4xx)

Resource doesn’t exist or is hidden intentionally.

When to use

Unknown routes, missing IDs, or to avoid revealing existence.

Common mistakes

Use 410 when permanently gone; avoid for auth errors (401/403).

Example response
HTTP/1.1 404 Not Found
Related
403410
409 · Conflict
Client Error (4xx)

Request conflicts with current state (e.g., versioning, duplicates).

When to use

Optimistic locking failures, duplicate resource creation.

Common mistakes

Use 422 for validation that passed syntax but failed business rules.

Example response
HTTP/1.1 409 Conflict
Related
400422
410 · Gone
Client Error (4xx)

Resource permanently removed.

When to use

Content intentionally removed with no forwarding address.

Common mistakes

Use 404 when unsure; use redirects when moved.

Example response
HTTP/1.1 410 Gone
Related
404301
415 · Unsupported Media Type
Client Error (4xx)

Server won’t accept the request media type.

When to use

Wrong Content-Type (e.g., XML sent to JSON-only endpoint).

Common mistakes

Use 406 for unacceptable response types instead.

Example response
HTTP/1.1 415 Unsupported Media Type
Related
400406
418 · I’m a teapot
Client Error (4xx)

RFC 2324 Easter egg status.

When to use

Playful/feature-flag stubs; rarely in production.

Common mistakes

Don’t use for real protocol behavior.

Example response
HTTP/1.1 418 I'm a teapot
422 · Unprocessable Entity
Client Error (4xx)

Request well-formed but semantically invalid.

When to use

Domain validation failures after parsing succeeded.

Common mistakes

Don’t use 400 when syntax is fine; don’t use 500 for business rule errors.

Example response
HTTP/1.1 422 Unprocessable Entity
Related
400409
429 · Too Many Requests
Client Error (4xx)

Rate limit exceeded.

When to use

Throttle limits; include Retry-After.

Common mistakes

Don’t hide rate limits as 500.

Example response
HTTP/1.1 429 Too Many Requests
Retry-After: 60
Related
503
500 · Internal Server Error
Server Error (5xx)

Unexpected error on the server.

When to use

Unhandled exceptions or unknown server faults.

Common mistakes

Don’t mask client errors; log and alert.

Example response
HTTP/1.1 500 Internal Server Error
Related
502503
502 · Bad Gateway
Server Error (5xx)

Upstream server returned an invalid response.

When to use

Proxy/load balancer received bad response from upstream.

Common mistakes

Use 500 for origin errors; use 503 for upstream down/overloaded.

Example response
HTTP/1.1 502 Bad Gateway
Related
500503
503 · Service Unavailable
Server Error (5xx)

Service temporarily unavailable (overload/maintenance).

When to use

Planned maintenance windows or overload; include Retry-After.

Common mistakes

Don’t use for permanent removal; that’s 410 with redirects.

Example response
HTTP/1.1 503 Service Unavailable
Retry-After: 120
Related
500502
504 · Gateway Timeout
Server Error (5xx)

Upstream didn’t respond in time.

When to use

Edge/gateway timeouts waiting on upstream service.

Common mistakes

Use client timeouts for local timeouts; log upstream latency.

Example response
HTTP/1.1 504 Gateway Timeout
Related
502503

What are HTTP status codes?

HTTP status codes are 3-digit responses that tell clients how a request was handled. They’re grouped into classes: informational (1xx), success (2xx), redirection (3xx), client error (4xx), and server error (5xx).

Status code classes

1xx = informational handshakes, 2xx = successful operations, 3xx = redirects, 4xx = client issues like validation or auth, 5xx = server or upstream faults. Use the most precise code to aid clients, debuggers, and search engines.

How to use this explorer

Search by code or keyword, filter by class, then open details to see when to use a code, what to avoid, and copyable example responses for your API docs or tests.

Common comparisons

200 vs 201 vs 204

200 returns content for successful actions, 201 signals creation (include Location), and 204 is success with no body—ideal for DELETE or idempotent updates without payloads.

301 vs 302 vs 307 vs 308

301/308 are permanent; 302/307 are temporary. 301/302 may switch to GET, while 307/308 preserve method/body. Use 308 for permanent POST/PUT redirects.

400 vs 401 vs 403

400 = bad request/validation; 401 = auth required/failed; 403 = authenticated but not allowed. Don’t blur auth errors into 400.

404 vs 410

404 means not found or intentionally hidden; 410 signals permanently gone. Use 410 when removal is deliberate and permanent.

409 vs 422

409 is a state conflict (versioning, duplicates); 422 is semantically invalid after parsing succeeded. Use 422 for business rule failures.

500 vs 502 vs 503

500 is an origin error, 502 is a bad response from upstream, 503 is temporary unavailability/overload (often with Retry-After).

Why correct codes matter

Precise status codes improve API debuggability, client handling, caching, SEO crawl signals (301/308 vs 404/410), and user-facing error clarity. They also reduce support load by making failures self-explanatory.

How to use

  1. Search by code, title, or keyword.
  2. Filter by status class (1xx–5xx).
  3. Open a code to see usage, mistakes, and copyable snippets.

Features

  • Searchable HTTP status code reference.
  • Class filters and related code comparisons.
  • Copy example responses for quick API testing.
  • SEO-friendly content for developers and SREs.

FAQ

What are HTTP status codes?

They are 3-digit responses indicating the outcome of an HTTP request, grouped by class from 1xx to 5xx.

How do I choose the right status code?

Match the intent: creation → 201, no body → 204, validation errors → 400/422, auth failures → 401/403, temporary downtime → 503 with Retry-After.

Why does 401 differ from 403?

401 is for missing or invalid authentication; 403 is for authenticated users lacking permission.

When should I use 308 instead of 301?

Use 308 when you need a permanent redirect that preserves the original HTTP method and body.

Which codes impact SEO?

Proper 301/308 for permanent moves, 404/410 for removals, and avoiding 500/503 errors improves crawlability and ranking stability.

Related tools