Network/HTTP Status Codes

HTTP Status Codes

Every code with its meaning and cacheability

A static reference list. Search by code, name or class.
Search51 codes
Class
100ContinueInitial part of request received, client should continue
101Switching ProtocolsServer is switching protocols as requested
102ProcessingServer is processing the request (WebDAV)
103Early HintsPreload resources while server prepares response
200OKRequest succeeded
201CreatedRequest succeeded and new resource was created
202AcceptedRequest accepted for processing, but not completed
203Non-Authoritative InfoReturned meta-info from a local or third-party copy
204No ContentRequest succeeded but no content to return
205Reset ContentRequest succeeded, reset the document view
206Partial ContentPartial resource returned due to range header
207Multi-StatusMultiple status codes for multiple operations (WebDAV)
300Multiple ChoicesMultiple options for the resource
301Moved PermanentlyResource has been permanently moved
302FoundResource temporarily at different URI
303See OtherResponse to request at another URI with GET
304Not ModifiedResource not modified since last request
307Temporary RedirectTemporary redirect, same method must be used
308Permanent RedirectPermanent redirect, same method must be used
400Bad RequestServer cannot process due to client error
401UnauthorizedAuthentication required
402Payment RequiredReserved for future use
403ForbiddenServer refuses to authorize the request
404Not FoundResource not found
405Method Not AllowedHTTP method not allowed for this resource
406Not AcceptableCannot generate response matching accept headers
407Proxy Auth RequiredMust authenticate with proxy
408Request TimeoutServer timed out waiting for the request
409ConflictRequest conflicts with current state of resource
410GoneResource no longer available and will not return
411Length RequiredContent-Length header required
412Precondition FailedPrecondition in headers evaluated to false
413Payload Too LargeRequest entity larger than server limits
414URI Too LongURI longer than server can process
415Unsupported Media TypeMedia format not supported
416Range Not SatisfiableRange specified cannot be fulfilled
417Expectation FailedExpect header cannot be met by server
418I'm a TeapotServer refuses to brew coffee with a teapot
422Unprocessable EntityRequest well-formed but semantically incorrect
423LockedResource is locked (WebDAV)
429Too Many RequestsUser sent too many requests (rate limiting)
451Unavailable For LegalResource unavailable for legal reasons
500Internal Server ErrorGeneric server error
501Not ImplementedServer does not support the functionality
502Bad GatewayInvalid response from upstream server
503Service UnavailableServer temporarily unavailable
504Gateway TimeoutUpstream server did not respond in time
505HTTP Version Not SupportedHTTP version not supported
507Insufficient StorageServer cannot store representation (WebDAV)
508Loop DetectedInfinite loop detected (WebDAV)
511Network Auth RequiredClient needs to authenticate for network access

An HTTP status code is three digits whose first digit gives the class: 1xx informational, 2xx success, 3xx redirection, 4xx client error, 5xx server error. That grouping is the useful part — a client can behave sensibly on a code it has never seen simply by reading the first digit.

The distinction that matters most in practice is between 4xx and 5xx. A 4xx says the request was wrong and repeating it unchanged will fail again; a 5xx says the server failed and a retry may well succeed. Returning the wrong class turns a client bug into a retry storm, or hides a real outage behind what looks like user error.

How to use it

  1. Search by code or by meaningType 422 to see what it means, or search for "redirect" to compare the options.
  2. Check cacheabilitySome responses are cacheable by default — 200, 301 and 404 among them — which matters when a wrong status gets stored by a CDN and outlives the mistake.
  3. Follow the referenceEach entry names the RFC or extension that defines it, which settles arguments about intended semantics rather than common practice.

Frequently asked questions

What is the difference between 301 and 302?

301 is permanent: clients may cache it indefinitely and search engines transfer the old URL’s standing to the new one. 302 is temporary and should not be cached that way. Choosing 301 for something you later reverse is painful, because browsers that cached it will not ask again — which is why 307 and 308 exist as stricter versions that also preserve the request method.

When should I return 401 versus 403?

401 Unauthorized means the request lacked valid credentials — the name is a misnomer, it really means unauthenticated — and the response must include a WWW-Authenticate header. 403 Forbidden means the credentials were understood and are not sufficient. Roughly: 401 says who are you, 403 says I know who you are and no.

What is 422 and how does it differ from 400?

400 Bad Request means the request was malformed — broken JSON, a missing header. 422 Unprocessable Content means the syntax was fine but the content failed validation, such as an email address in the wrong format. The distinction is genuinely useful to a client, though plenty of APIs use 400 for both.

Should I return 404 or 410?

404 means not found, with no claim about whether it ever existed. 410 Gone says it existed and has been deliberately removed. Search engines act on 410 more decisively, dropping the URL faster. Use 410 when you know something is permanently gone and 404 for everything else.

What is a soft 404?

A page that tells the user it was not found while returning 200. Crawlers treat that as a real page with thin content, which harms indexing, and monitoring tools never notice the errors. Any not-found page must return an actual 404 status alongside its message.

Related tools

Nothing left this tab. No request was made, no history was written. Network · HTTP Status Codes