Skip to main content
CodeLint.Dev Dev Tools

HTTP Status Codes — Complete Reference

Every registered status code with its meaning and defining RFC, plus guidance on choosing between the ones that are easily confused.

62 codes
CodeStatusCategoryDescription
100Continue1xxThe server has received the request headers and the client should proceed to send the request body.
101Switching Protocols1xxThe requester has asked the server to switch protocols and the server has agreed.
102Processing1xxThe server has received and is processing the request, but no response is available yet.
103Early Hints1xxUsed to return some response headers before final HTTP message.
200OK2xxStandard success response. The request was successfully received, understood, and accepted.
201Created2xxThe request was fulfilled and a new resource was created. Common after POST.
202Accepted2xxThe request has been accepted but processing is not yet complete (async operations).
203Non-Authoritative Information2xxThe server successfully processed the request but is returning info from another source.
204No Content2xxThe server successfully processed the request and is not returning any content.
205Reset Content2xxThe server successfully processed the request, asks the requester to reset the document view.
206Partial Content2xxThe server is delivering only part of the resource due to a range header sent by the client.
207Multi-Status2xxThe message body contains multiple separate response codes (WebDAV).
208Already Reported2xxMembers of a DAV binding have already been enumerated in a previous reply.
226IM Used2xxThe server has fulfilled a GET request for the resource; response is a representation of the result.
300Multiple Choices3xxIndicates multiple options for the resource from which the client may choose.
301Moved Permanently3xxThis and all future requests should be directed to the given URI.
302Found3xxTells the client to look at (browse to) another URL. Temporary redirect.
303See Other3xxThe response to the request can be found under another URI using the GET method.
304Not Modified3xxIndicates that the resource has not been modified since the version specified by request headers.
305Use Proxy3xxThe requested resource is available only through a proxy, the address for which is provided.
307Temporary Redirect3xxThe request should be repeated with another URI; however, future requests should still use the original URI.
308Permanent Redirect3xxAll future requests should use another URI. Similar to 301 but the method must not change.
400Bad Request4xxThe server cannot or will not process the request due to an apparent client error.
401Unauthorized4xxAuthentication is required and has failed or has not yet been provided.
402Payment Required4xxReserved for future use, sometimes used for digital payment systems.
403Forbidden4xxThe request was valid, but the server is refusing action. Insufficient permissions.
404Not Found4xxThe requested resource could not be found. The most well-known HTTP status code.
405Method Not Allowed4xxA request method is not supported for the requested resource (e.g. DELETE on a read-only endpoint).
406Not Acceptable4xxThe requested resource is capable of generating only content not acceptable by the Accept headers.
407Proxy Auth Required4xxThe client must first authenticate itself with the proxy.
408Request Timeout4xxThe server timed out waiting for the request.
409Conflict4xxIndicates that the request could not be processed because of conflict in the current state of the resource.
410Gone4xxIndicates that the resource requested was previously in use but is no longer available.
411Length Required4xxThe request did not specify the length of its content, which is required by the requested resource.
412Precondition Failed4xxThe server does not meet one of the preconditions specified in the request headers.
413Content Too Large4xxThe request is larger than the server is willing or able to process.
414URI Too Long4xxThe URI provided was too long for the server to process.
415Unsupported Media Type4xxThe request entity has a media type which the server or resource does not support.
416Range Not Satisfiable4xxThe client has asked for a portion of the file but the server cannot supply that portion.
417Expectation Failed4xxThe server cannot meet the requirements of the Expect request-header field.
418I'm a Teapot4xxThe server refuses to brew coffee because it is, permanently, a teapot. (RFC 2324 — April Fools')
421Misdirected Request4xxThe request was directed at a server that is not able to produce a response.
422Unprocessable Content4xxThe request was well-formed but was unable to be followed due to semantic errors.
423Locked4xxThe resource that is being accessed is locked.
424Failed Dependency4xxThe request failed because it depended on another request and that request failed.
425Too Early4xxThe server is unwilling to risk processing a request that might be replayed.
426Upgrade Required4xxThe client should switch to a different protocol such as TLS/1.3.
428Precondition Required4xxThe origin server requires the request to be conditional.
429Too Many Requests4xxThe user has sent too many requests in a given amount of time (rate limiting).
431Request Header Fields Too Large4xxThe server is unwilling to process the request because its header fields are too large.
451Unavailable For Legal Reasons4xxA server operator has received a legal demand to deny access to a resource.
500Internal Server Error5xxA generic error message when an unexpected condition was encountered on the server.
501Not Implemented5xxThe server either does not recognize the request method, or lacks the ability to fulfill the request.
502Bad Gateway5xxThe server was acting as a gateway or proxy and received an invalid response from the upstream server.
503Service Unavailable5xxThe server cannot handle the request (overloaded or down for maintenance).
504Gateway Timeout5xxThe server was acting as a gateway or proxy and did not receive a timely response from the upstream server.
505HTTP Version Not Supported5xxThe server does not support the HTTP version used in the request.
506Variant Also Negotiates5xxTransparent content negotiation for the request results in a circular reference.
507Insufficient Storage5xxThe server is unable to store the representation needed to complete the request.
508Loop Detected5xxThe server detected an infinite loop while processing a request.
510Not Extended5xxFurther extensions to the request are required for the server to fulfil it.
511Network Auth Required5xxThe client needs to authenticate to gain network access (captive portals).

The pairs that get confused

Most status-code mistakes are a choice between two plausible codes. These are the ones worth getting right:

SituationUseNotWhy
User is not logged in401 Unauthorized403401 means "unauthenticated" despite its name. It must include a WWW-Authenticate header
Logged in but lacks permission403 Forbidden401Authentication succeeded; authorisation failed. Repeating the request will not help
Hiding a resource’s existence from an unauthorised user404 Not Found403403 confirms the resource exists. For private resources that is an information leak
Request body fails validation422 Unprocessable Content400400 means malformed syntax; 422 means well-formed but semantically wrong
Malformed JSON in the body400 Bad Request422The request could not be parsed at all — that is a syntax failure
Resource created201 Created200201 should carry a Location header pointing at the new resource
Accepted for async processing202 Accepted201202 means "queued, outcome unknown" — the correct answer for a job that has not run yet
Successful DELETE with no body204 No Content200204 explicitly signals there is no body, so clients do not try to parse one
Permanent URL change301 Moved Permanently302301 transfers ranking signals and is cached. 302 tells search engines to keep the old URL
Temporary redirect that must keep the method307 Temporary Redirect302302 historically caused clients to convert POST to GET. 307 and 308 forbid that
Rate limit exceeded429 Too Many Requests403429 is retryable and should carry Retry-After. 403 tells the client to give up
Dependency is down503 Service Unavailable500503 means "try again later" and is retryable; 500 signals an unexpected bug

What each class means to a client

Clients, caches and crawlers behave differently per class, which is why the first digit matters more than the specific code:

  • 1xx InformationalThe request was received and processing continues. Rarely seen directly; 101 drives WebSocket upgrades and 103 Early Hints is increasingly used for preloading.
  • 2xx SuccessUnderstood and accepted. The distinction between 200, 201, 202 and 204 tells the client what to expect in the body.
  • 3xx RedirectionFurther action needed. 301 and 308 are permanent and cached indefinitely by browsers — deploying one by mistake is very hard to undo.
  • 4xx Client errorThe request was wrong. Retrying unchanged will fail again, with 408, 425 and 429 as the deliberate exceptions.
  • 5xx Server errorThe server failed. The request may be valid, so retrying is often appropriate — with backoff.

About

The HTTP Status Code Reference covers all standard codes defined in RFC 7231 and related RFCs — from 100 Continue to 511 Network Authentication Required. Each entry includes the code, official name, a plain-English description, and common use cases in REST API design. Filter by category (1xx–5xx) to quickly find what you need.

How to use

  1. 1 Browse the full list or use the search bar to find a specific code.
  2. 2 Click a category chip (1xx, 2xx, 3xx, 4xx, 5xx) to filter by class.
  3. 3 Click any row to copy the status code to your clipboard.
What is the difference between 401 Unauthorized and 403 Forbidden?
401 Unauthorized means the client is not authenticated — no valid credentials were provided, and the client should log in and try again. 403 Forbidden means the client is authenticated but does not have permission to access the resource — logging in again will not help. This distinction matters for REST API design: return 401 when credentials are missing, 403 when they are insufficient.
When should I use 301 vs 302 redirect?
301 Moved Permanently tells browsers and search engines that the URL has changed forever — they should update bookmarks and transfer SEO ranking to the new URL. 302 Found is a temporary redirect — the original URL is still valid and should be retained. Use 301 for permanent site restructuring and 302 for temporary redirects like A/B tests or maintenance pages.
What does HTTP 429 Too Many Requests mean?
429 Too Many Requests means the client has sent too many requests in a given time window and the server is rate-limiting it. The response often includes a Retry-After header indicating how many seconds to wait before retrying. If you see this in your browser, the API or website is throttling your IP or account.