Guide to HTTP Status Codes
HTTP status codes are standard messages that occur between the client and the server when they communicate through the HTTP (that stands for hypertext transfer protocol).
For example, when you (the client) click on a link or type a URL on the address bar, you are sending a request to the server. You’re asking it to let you view a webpage. The “language” of this request is the HTTP. The response you get from the server is a three-figures code.
In this article, we’ll sort the most common HTTP status codes.
The codes consist of five classes:
- informational responses;
- successful responses;
- redirect information;
- client error responses;
- server error responses.
100 HTTP status codes (informational responses)
These codes tell us that the server received the request, and it is processing it. The answer can be:
- 100 (continue): the server received the request header (the information about the request). The client can go on sending the request body (the actual data payload);
- 101 (switching protocols): the server received the client’s request to switch protocol.
- 102 (processing): the server got the request, but it cannot respond yet. It’s a response given to keep the connection from going timeout.
200 HTTP status codes (successful responses)
Successful responses begin with number two. They mean that the server received the request and has accepted it:
- 200 (OK): it is the generic success response;
- 201 (Created): The server created the requested resource ;
- 202 (Accepted): The server accepted the request, but it is still working to return the response.
- 203 (Non-Authoritative Information): same as 200. A transforming proxy has received the request. On its turn, it returns a modified response.
- 204 (No Content): The server has successfully processed the request and returned no content.
- 205 (Reset Content): Same as 204. Also, the response requires the reset of the document view by the requester.
- 206 (Partial Content): The server is returning only a part of the resource requested by the client. The range header causes this. The client sends the range header. Its role is to fraction a large download into many smaller, simultaneous ones.
- 207 (Multi-Status): this is a response to multiple requests. It indicates that the body includes the former response codes.
- 208 (Already reported): Used in DAV responses. It suggests that a previous 207 code reports the responses.
300 HTTP Status codes (Redirections)
These status codes indicate that the server needs to take additional action to complete the request, such as redirection.
Redirection is essential in SEO. We can set this function to tell the browser that the resource is not in the original URL anymore. It is useful when we delete a page, and we want to redirect the user to a 404 page.
Another reason could be the change of the URL structure or the domain.
- 300 (Multiple Choices): the client has multiple options, for example, regarding the format in which download the requested resource.
- 301 (Moved Permanently): the client must direct the request (and all future requests) to another URI.
- 302 (Found): can be used to indicate a temporary redirection, or to tell the client to look for another URL.
- 303 (See Other): the client can find the requested resource at another URI.
- 304 (Not Modified): the client already possesses the requested resource. The server cannot provide a more updated version.
- 305 (Use Proxy): The requested resource is available through a proxy.
- 307 (Temporary Redirect): Same as 302.
- 308 (Permanent Redirect): Same as 301.
400 HTTP Status codes (Client errors)
This code means an error that concerns the client.
It can be a bad request, a not found requested resource or a lack of privileges to access it.
The response must include in its body an explanation of the error and whether it is temporary or permanent.
- 400 (Bad Request): the server is not able to process the request. It could be because of an error in syntax, a too-large request size, or an invalid request.
- 401 (Unauthorized): The client cannot access the resource it requested. It failed to authenticate, or there is no authentication possible.
- 403 (Forbidden): Unlike 401, the client authenticated itself, but the server refuses to process it, nonetheless.
- 404 (Not found): the most famous response code. The server has not found the requested resource. However, it could be available in the future.
- 405 (Method Not Allowed): the client sent the request using an invalid method. For example, when you use a GET when you should have used a POST. Want to learn more about HTTP methods?
- 406 (Not Acceptable): the server can generate the resource requested, but its format is not among those accepted in the request header.
- 407 (Proxy authentication): The client must authenticate itself with the proxy.
- 408 (Request timeout): The server timed out while waiting for the request.
- 409 (Conflict): the request cannot be processed because there is a conflict ongoing between different versions of the same resource. It can happen when the server receives more than one edit request for the same resource at the same time.
- 410 (Gone): The requested resource is not available. Unlike 404, the resource in question won’t be available again.
- 411 (Length required): The request does not contain an indication of the length of its content as required by the resource.
- 412 (Precondition Failed): The server cannot process the requests. The reason is that it does not possess one of the preconditions specified in the request.
- 413 (Request Entity Too Large): The request is too large for the server, and it cannot manage it.
- 414 (URI Too Long): The URI contained in the request is too large to be processed by the server.
- 415 (Unsupported Media Type): The client requested a resource in a format the server doesn’t support.
- 416 (Range Not Satisfiable): The client requested a file fragment, but the server cannot satisfy the request.
- 417 (Expectation Failed): The server cannot comply with the requirements contained in the request header.
- 418 (I’m a teapot): It’s a joke-code by the IETF.
- 420 (Enhance your calm): Used by the Twitter APIs to indicate that the client made too many requests in a short time.
- 421 (Misdirected request): the server that received the request cannot process it.
- 422 (Unprocessable Entity): A semantic error prevents the server from processing the request.
- 423 (Locked): The client cannot access the resource because it is locked.
- 426 (Upgrade required): The client should use a better security protocol.
- 429 (Too many requests): The client sent too many requests too fast.
- 451 (Unavailable for Legal Reasons): The client requested a resource whose access is limited by censorship or government request. It could be a reference to Ray Bradbury’s Fahrenheit 451.
500 HTTP Status codes
500 status codes indicate server errors. It means that the client request is correct, but the server cannot perform it.
- 500 (Internal Server Error): generic error message, unexpected error.
- 501 (Not Implemented): the server cannot recognize the request method or is unable to perform the request at the moment.
- 502 (Bad Gateway): the server is acting as a proxy. The upstream server sent an invalid response.
- 503 (Server Unavailable): the server cannot fulfill the request at the moment because it is down. For example, because it is undergoing maintenance.
Which codes are essential for SEO
Some codes are more important than others in SEO because they can influence the ranking.
We can sort them into three groups.
It includes only the code 200. It indicates that the page has been found at the indicated URL, as expected.
It includes the codes 301,302, 303. They indicate that the resource is elsewhere, either temporarily or permanently. Their correct implementation is critical to not incur into penalizations.
A 404 HTTP status code causes a not smooth crawling, and then the ranking of the whole website can suffer.
Find out which codes your website returns
To discover what codes the pages within a website returns, scan it with the SEO Spider.
Just enter the URL you want to analyze. Then navigate the menu on the left. Under Structure, select Status. You can also filter them by the groups mentioned above.