Productivity and Utilities

HTTP Status Codes Reference

Look up what an HTTP status code means and what usually causes it.

Try 404, 5, redirect, timeout or teapot. A number matches the start of a code.

62 status codes

  • 100 Continue Informational

    The server has received the request headers and the client should go on to send the body.

    In practice: Seen with large uploads when the client sent an Expect: 100-continue header. Most code never handles it directly.

  • 101 Switching Protocols Informational

    The server agrees to change to the protocol the client asked for, such as WebSocket.

    In practice: A normal reply to an Upgrade request. If the upgrade fails, check proxy settings that strip the Upgrade header.

  • 102 Processing Informational

    The server has accepted a long-running request and has not finished yet (WebDAV).

    In practice: Rare outside WebDAV. It only tells the client the request is still alive.

  • 103 Early Hints Informational

    The server sends header hints, such as preload links, before the final response is ready.

    In practice: Lets a browser start loading files while the server builds the page.

  • 200 OK Success

    The request succeeded and the response carries the result.

    In practice: The default success code for GET and for most POST calls that return data.

  • 201 Created Success

    The request succeeded and a new resource was created.

    In practice: Return it after a POST that adds something, ideally with a Location header that points to the new item.

  • 202 Accepted Success

    The request was accepted for processing, but the work is not finished.

    In practice: Use it for queued or background jobs and tell the client where to check progress.

  • 203 Non-Authoritative Information Success

    The request succeeded, but a proxy changed the response from the origin server.

    In practice: Uncommon. It signals that a transforming proxy sits between you and the origin.

  • 204 No Content Success

    The request succeeded and there is nothing to send back.

    In practice: A good fit for DELETE and for updates where the client needs no body.

  • 205 Reset Content Success

    The request succeeded and the client should reset the form or view that sent it.

    In practice: Rarely used in practice.

  • 206 Partial Content Success

    The server is sending only the byte range the client asked for.

    In practice: Used for resumable downloads and video seeking. It answers a Range header.

  • 207 Multi-Status Success

    The body holds separate status codes for several operations (WebDAV).

    In practice: Read each part of the body, because one request can contain successes and failures.

  • 208 Already Reported Success

    Members of a WebDAV binding were already listed earlier in the same response.

    In practice: Seen only in WebDAV responses.

  • 226 IM Used Success

    The server fulfilled a GET using instance manipulations, such as a delta encoding.

    In practice: Very rare on the public web.

  • 300 Multiple Choices Redirection

    The request matches more than one resource and the client may pick one.

    In practice: Rarely used because there is no standard way to present the choices.

  • 301 Moved Permanently Redirection

    The resource has a new permanent address given in the Location header.

    In practice: Use it for permanent URL changes. Clients may change a POST into a GET when they follow it, so use 308 to keep the method.

  • 302 Found Redirection

    The resource is temporarily at a different address given in the Location header.

    In practice: A temporary redirect. Many clients switch POST to GET, so use 307 when the method must stay the same.

  • 303 See Other Redirection

    The response to the request is at another address and should be fetched with GET.

    In practice: Common after a form POST, so a reload does not submit the form again.

  • 304 Not Modified Redirection

    The cached copy is still current, so no body is sent.

    In practice: Returned for conditional requests that use If-None-Match or If-Modified-Since. It is a sign that caching works.

  • 305 Use Proxy Redirection

    The resource must be reached through a proxy. This code is deprecated.

    In practice: Do not use it. Clients ignore it for security reasons.

  • 307 Temporary Redirect Redirection

    The resource is temporarily at another address and the same method and body must be reused.

    In practice: The method-preserving version of 302.

  • 308 Permanent Redirect Redirection

    The resource has moved permanently and the same method and body must be reused.

    In practice: The method-preserving version of 301.

  • 400 Bad Request Client error

    The server cannot process the request because it is malformed or invalid.

    In practice: Check the URL, headers and body syntax. Return a clear message about which field was wrong.

  • 401 Unauthorized Client error

    The request lacks valid authentication credentials.

    In practice: Despite the name, it means "not authenticated". Send or refresh credentials. The response should include a WWW-Authenticate header.

  • 402 Payment Required Client error

    Reserved for future use. Some services use it when payment is needed.

    In practice: There is no standard behavior, so read the documentation of the service that returned it.

  • 403 Forbidden Client error

    The server understood the request but refuses to allow it.

    In practice: The identity is known or irrelevant, but access is denied. Check permissions, IP rules and file ownership.

  • 404 Not Found Client error

    The server cannot find the requested resource.

    In practice: Check the URL for typos. Servers also use it to hide a resource that exists.

  • 405 Method Not Allowed Client error

    The method is known but not supported for this resource.

    In practice: The response should list the allowed methods in an Allow header.

  • 406 Not Acceptable Client error

    The server cannot produce a response that matches the Accept headers.

    In practice: Loosen the Accept, Accept-Language or Accept-Encoding headers.

  • 407 Proxy Authentication Required Client error

    The client must authenticate with the proxy first.

    In practice: Like 401, but the credentials are for the proxy.

  • 408 Request Timeout Client error

    The server gave up waiting for the client to finish sending the request.

    In practice: The client was too slow or the connection stalled. A retry on a new connection is usually safe.

  • 409 Conflict Client error

    The request conflicts with the current state of the resource.

    In practice: Common with edit collisions and duplicate unique values. Fetch the latest state and try again.

  • 410 Gone Client error

    The resource was here but has been removed on purpose, with no forwarding address.

    In practice: Stronger than 404 because it says the removal is permanent.

  • 411 Length Required Client error

    The server requires a Content-Length header.

    In practice: Add Content-Length to the request.

  • 412 Precondition Failed Client error

    A condition in the request headers, such as If-Match, was not true on the server.

    In practice: Used for safe updates. Reload the resource and compare its current version.

  • 413 Content Too Large Client error

    The request body is larger than the server allows.

    In practice: Send less data or raise the server limit. Older documents call it Payload Too Large.

  • 414 URI Too Long Client error

    The request address is longer than the server will accept.

    In practice: Move long query data into a POST body.

  • 415 Unsupported Media Type Client error

    The server does not accept the format of the request body.

    In practice: Check the Content-Type header, for example application/json.

  • 416 Range Not Satisfiable Client error

    The requested byte range lies outside the size of the resource.

    In practice: Ask for a range inside the file size.

  • 417 Expectation Failed Client error

    The server cannot meet the requirements in the Expect header.

    In practice: Remove the Expect header or send the body without waiting.

  • 418 I'm a teapot Client error

    A joke code from an April Fools specification for a coffee pot protocol.

    In practice: Not meant for real use, though some services return it on purpose for blocked or unwanted requests.

  • 421 Misdirected Request Client error

    The request was sent to a server that cannot give an answer for that host.

    In practice: Seen with connection reuse across hosts on HTTP/2. Retry on a new connection.

  • 422 Unprocessable Content Client error

    The syntax is valid, but the server cannot process the instructions in it.

    In practice: Common for validation failures in APIs. List which fields failed.

  • 423 Locked Client error

    The resource is locked (WebDAV).

    In practice: Wait for the lock to be released or use the lock token.

  • 424 Failed Dependency Client error

    The request failed because an earlier request it depended on failed (WebDAV).

    In practice: Fix the first failure and send the group again.

  • 425 Too Early Client error

    The server will not process a request that might be replayed.

    In practice: Related to TLS early data. The client can retry after the handshake completes.

  • 426 Upgrade Required Client error

    The server wants the client to switch to a newer protocol.

    In practice: The response names the protocol in an Upgrade header.

  • 428 Precondition Required Client error

    The server requires the request to be conditional.

    In practice: Add an If-Match header so edits do not overwrite each other.

  • 429 Too Many Requests Client error

    The client has sent too many requests in a given time.

    In practice: Slow down and respect the Retry-After header when it is present.

  • 431 Request Header Fields Too Large Client error

    The headers, or one header, are too large.

    In practice: Often caused by oversized cookies. Clear cookies or trim headers.

  • 451 Unavailable For Legal Reasons Client error

    The resource is blocked for legal reasons.

    In practice: The number is a nod to the novel Fahrenheit 451. The response may name the party that required the block.

  • 500 Internal Server Error Server error

    The server hit an unexpected problem and could not complete the request.

    In practice: A server-side bug or misconfiguration. Check server logs for the real cause.

  • 501 Not Implemented Server error

    The server does not support the feature needed to answer the request.

    In practice: Often seen when the method is not recognized at all.

  • 502 Bad Gateway Server error

    A gateway or proxy received an invalid response from the server behind it.

    In practice: Check that the upstream app is running and reachable from the proxy.

  • 503 Service Unavailable Server error

    The server cannot handle the request right now, often from overload or maintenance.

    In practice: Usually temporary. A Retry-After header may say when to try again.

  • 504 Gateway Timeout Server error

    A gateway or proxy did not get a timely response from the server behind it.

    In practice: The upstream is slow or stuck. Look at timeouts and slow queries.

  • 505 HTTP Version Not Supported Server error

    The server does not support the HTTP version used in the request.

    In practice: Try an older or newer version of the protocol.

  • 506 Variant Also Negotiates Server error

    A server configuration error in content negotiation.

    In practice: A circular reference in the server setup.

  • 507 Insufficient Storage Server error

    The server cannot store what is needed to finish the request (WebDAV).

    In practice: Free up space on the server.

  • 508 Loop Detected Server error

    The server found an infinite loop while processing the request (WebDAV).

    In practice: Check for resources that point back to themselves.

  • 510 Not Extended Server error

    The server needs further extensions to the request to fulfill it.

    In practice: Rare. It comes from an experimental extension framework.

  • 511 Network Authentication Required Server error

    The client must authenticate to gain network access.

    In practice: Typical of captive portals at hotels and airports. Open a browser and sign in.

Descriptions are written in plain language from the standard definitions. Always check the documentation of the service you are calling, because servers sometimes use codes in their own way.

Next step

How to use the http status codes reference

  1. Type a code or a word in the search box. A number matches the start of a code, so 4 shows every 4xx code and 40 shows 400 to 409. Words such as redirect, timeout or teapot search the names and descriptions.
  2. Use the class buttons to show only informational, success, redirection, client error or server error codes.
  3. Read the one-line meaning and the In practice note under each code to see when a server sends it and what usually fixes it.
  4. Clear the search box to see the full list again. The count above the list always shows how many codes match.

How the five classes work

The first digit of a status code tells you the class. 1xx codes are informational and mean the request is still being handled. 2xx codes mean success. 3xx codes mean the client should look somewhere else, usually by following a Location header. 4xx codes mean the request has a problem on the client side, and 5xx codes mean the server failed to handle a request that looked valid.

A few codes are often confused. 401 means the request is not authenticated, while 403 means the server knows what you asked for and refuses it. 301 and 308 are both permanent redirects, but 308 keeps the request method and body, while many clients turn a POST into a GET after 301. 302 and 307 differ in the same way for temporary redirects.

Using the codes well in your own APIs

Pick the most specific code that fits. Return 201 with a Location header after creating something, 204 when there is nothing to send back, 404 for a missing resource, 409 for a conflict with the current state, 422 when a request is well formed but fails validation and 429 when a client is sending too many requests. For 429 and 503, a Retry-After header tells clients how long to wait.

The descriptions here are written in plain language for this site. Different servers and services sometimes use codes in their own way, so read the documentation of the service you call. If you are debugging a request, the cURL to code converter and the URL encoder and decoder can help you reproduce it.

Assumptions and limits

  • The list covers the codes in common use, including a few from WebDAV. It does not list every code that has ever been proposed.
  • Some names changed over time. Where a newer name exists, older names such as Payload Too Large are kept as search aliases.
  • The notes describe common causes. Your own server or service may use a code differently.
  • Code 418 is a joke from an April Fools specification, listed because people search for it.

Formulas reviewed October 10, 2026. See the calculation methodology for how SumPanda rounds, tests and sources its formulas.

Frequently asked questions

What is the difference between 401 and 403?

401 Unauthorized means the request has no valid credentials, so sign in or refresh your token and try again. 403 Forbidden means the server understood who you are, or does not care, and still refuses the action.

Which redirect code should I use?

Use 301 or 308 when a page has moved for good, and 302 or 307 when the move is temporary. Choose 307 or 308 when the request method and body must stay the same, such as for a POST.

What does 502 Bad Gateway mean?

A gateway or proxy got an invalid answer from the server behind it. The usual causes are that the application is down, restarting, or listening on a different port than the proxy expects.

Why do I see 429 Too Many Requests?

The service is limiting how often you can call it. Slow down, add a delay between requests and look for a Retry-After header or a rate limit section in its documentation.