HTTP Status codes are the number given by a web server that equate to how an HTTP transaction has (or hasn’t) been executed - they are also known as Server Response Codes.

What are HTTP Status Codes?

HTTP status codes are generated by a web server every time a file is requested. It's just that you rarely see them. The codes enable us to identify any issues and pinpoint that issue if a webpage or other resources, like image files or scripts that fail to properly load. You've probably seen a '404' or if a server is struggling, perhaps a '500' but you'll never see a 301 or tens of the other codes listed below.

HTTP Status Code vs Reason Phrase

Normally, when HTTP Status Codes are referred to, people are actually talking about the HTTP status code combined with the HTTP reason phrase. For example, one of the most well-known status codes is the infamous 404: Not Found. This is made of the HTTP Status Code ‘404’, along with the HTTP reason phrase ‘Not Found’.

As a visitor to a website, most of the time you would not see these codes unless something goes wrong (such as the aforementioned 404 status code), but servers do also send status codes when transactions are carried out successfully - you just don’t see them.

The most common HTTP Status Codes:

200: OK

One of the silent Status Codes/Server Response Codes, this means that the request was received and processed successfully.

301: Moved Permanently

The resource that was requested has been assigned a new permanent URI, and the server should be redirecting you there.

(note: a URI is a Uniform Resource Identifier, which is ‘a string of characters used to identify a resource’, and can be a locator, a name, or both. A subset of these that is more commonly heard of are URLs - Uniform Resource Locators. In the similar mindset that all dogs are animals, but not all animals are dogs, all URLs are URIs, but not all URIs are URLs! Daniel Miessler gives a more detailed explanation of this on his website).

302: Found

The resource that was requested has been assigned a new temporary URI, and the server should be redirecting you there (but for future requests, it will try and use the original location again).

401: Unauthorised

For the request to be successfully processed, user authentication is required. If you’re seeing the 401 status code, this means the header in your request didn’t contain the authorisation codes necessary to view the page content.

403: Forbidden

The request was received and understood, but the server refuses to process it. Even with authorisation, the request would not be successful.

404: Not Found

The server was unable to find anything that matched the requested URI, and it is impossible to tell whether this is temporary or permanent. This is often used either when a server does not want to reveal specifically why a request was refused, or if no other response is applicable.

500: Internal Server Error

An error has occurred in the server itself which prevented it from completing the request. This is a generic, default message that is used when no other codes are applicable. When it comes to WordPress this is similar to the 'error establishing a database connection' message which you can see when the WordPress MySQL database gets tied up.

503: Service Unavailable

The server was unable to handle your HTTP request at the time. This could be due to server crash, server maintenance, server overload, or other reasons. It is generally temporary, and is a code that is normally put up until the whatever the problem was has been fixed.

If you'd like to know more, check out our SEO glossary - we've explained all the terms you're ever likely to need to know.

Every HTTP status code there ever was:

1×× Informational HTTP status codes
100 Continue
101 Switching Protocols
102 Processing

2×× Success codes HTTP status codes
200 OK
201 Created
202 Accepted
203 Non-authoritative Information
204 No Content
205 Reset Content
206 Partial Content
207 Multi-Status
208 Already Reported
226 IM Used

3×× Redirection HTTP status codes
300 Multiple Choices
301 Moved Permanently
302 Found
303 See Other
304 Not Modified
305 Use Proxy
307 Temporary Redirect
308 Permanent Redirect

4×× Client Error HTTP status codes
400 Bad Request
401 Unauthorized
402 Payment Required
403 Forbidden
404 Not Found
405 Method Not Allowed
406 Not Acceptable
407 Proxy Authentication Required
408 Request Timeout
409 Conflict
410 Gone
411 Length Required
412 Precondition Failed
413 Payload Too Large
414 Request-URI Too Long
415 Unsupported Media Type
416 Requested Range Not Satisfiable
417 Expectation Failed
418 I'm a teapot
421 Misdirected Request
422 Unprocessable Entity
423 Locked
424 Failed Dependency
426 Upgrade Required
428 Precondition Required
429 Too Many Requests
431 Request Header Fields Too Large
444 Connection Closed Without Response
451 Unavailable For Legal Reasons
499 Client Closed Request

5×× Server Error HTTP status codes
500 Internal Server Error
501 Not Implemented
502 Bad Gateway
503 Service Unavailable
504 Gateway Timeout
505 HTTP Version Not Supported
506 Variant Also Negotiates
507 Insufficient Storage
508 Loop Detected
510 Not Extended
511 Network Authentication Required
599 Network Connect Timeout Error


A handy desktop resource, containing all HTTP status codes.

One Comment

Leave a Reply

Your email address will not be published. Required fields are marked *