The SEOniverse

What is an HTTP status code?

An HTTP status code is a response from a server which identifies the reason why a webpage did or did not not load properly.

The most commonly known status code is probably a 404, indicating that the requested page can not be found and serving a page that lets the user know. 404 response pages are often customised, such as this error page from Airbnb.

404 pag for air b n b

HTTP status codes are also commonly referred to as browser error codes or internet error codes.

HTTP status code groups

1xx – This group states that the server has received the request and is continuing the process. Servers won't send a 1xx response to clients except occasionally under experimental conditions.

2xx – The 2xx group is generally good news. This group indicates that the server has accepted, understood and processed the request.

3xx – This group indicates that the user request needs redirected to another resource.

4xx – This group of HTTP status codes generally indicate client-side errors – human errors where the web user has made a mistake. For example, by requesting a page that doesn't exist, perhaps because of a typo in the url, or where a request for a webpage cannot be honoured for some other reason.

5xx – This group indicates a server error. An apparently valid request failed to receive a response. The server usually sends a message to indicate whether this is a temporary or permanent error.

A list of all the HTTP status codes

1xx

100 Continue – The server has received the request and is processing it as normal with nothing amiss so far. The client should continue to send the remainder of the request.

101 Switching Protocols – The client request has asked the server to use a different protocol but the server will only do so if it advantageous. For example, upgrading from an outdated HTTP protocol to the latest version.

102 Processing (WebDAV) – The server has received the request but the response is not yet available. This can be used to prevent the client  timing out under the assumption the request was lost.

2xx

200 OK – This is the standard response from HTTP servers when the client request has been acted upon successfully. In a GET request, the server will respond with the requested resource, in the case of a POST request, the response will contain an entity describing or containing the result of the action.

201 Created – The request has been fulfilled and a new resource has been created.

202 Accepted – The request has been accepted but is still being processed. A 202 response, however,  does not promise the request will be delivered on when processing is complete, or even that processing will be completed.

203 Non Authoritative Information – The server is returning a modified version of the original response.

204 No Content – Everything's fine with the request and response but there's no content to return.

205 Reset Content – Same as a 204 except that the client must reset the document view.

206 Partial Content – The server is only delivering part of the resource as specified by the client.

207 Multi-status – The message body is an XML message and can contain a number of response codes, depending on how many sub-requests were made.

208 Already Reported – Used inside a DAV to avoid enumerating multiple members repeatedly.

226 IM Used – The response includes Instance Manipulation, meaning the original response has been modified.

3xx

300 Multiple Choices – There are multiple resources available – for example, different video formats – from which the client must choose.

301 Moved Permanently – This and all other requests must be redirected to the given URI.

302 Found – The client request should be redirected temporarily, the original URI will be restored.

303 See Other – The response can be found under another URI.

304 Not Modified – The requested resource has not been modified since the last time the user requested it so does not need to be transmitted again.

305 Use Proxy – The requested resource is only available through a specified proxy. Many browsers deliberately don't handle this request for security reasons.

306 Switch Proxy – This status code is no longer in use. It used to mean that subsequent requests should go via the specified proxy.

307 Temporary Redirect – The request should redirect to another URI, but subsequent requests should use the original URI.

308 Permanent Redirect – This request and all subsequent requests should redirect to a specified URI. 308 is not the same as a 301 as it does not allow the HTTP method to change.

4xx

400 Bad Request – The server cannot or will not process the request due to an apparent client error (e.g., malformed request syntax, too large size, invalid request message framing, or deceptive request routing.

401 Unauthorised – The user needs permission to access the page but the required authentication has not been provided or the IP address has been banned.

402  Payment Required – This code was very much looking ahead to a system of digital cash and micropayments for using certain websites which has not been adopted as yet. As a result, this code is not often used. Some websites do use 402s to indicate the user has exceeded the maximum number of requests allowed in a certain time period.

403 Forbidden – The user request was valid but the server is doing it's best to ignore it. A reason migt be that the user is logged in but doesn't have the permissions needed to accesss resource.

404 Not Found – A real classic.  The requested resource is not available at the moment of request - but that's not to say that there won't be something here in the future.

405 Method Not Allowed – The method used to request a resource is not supported. This code is often associated with forms.

406 Not Acceptable – The server can't send data that was requested. This could be an image that the 'Accept header' of the request has specified as unacceptable, for example, an image in a certain file format.

407 Proxy Authentication Required – The resource is not available until the client authenticates itself with the proxy server.

408 Request Time-out – The server timed out waiting for the request from the client. The request can be repeated without changes at a later time.

409 Conflict – The request could not be processed because of conflict in the request. An example would be an edit conflict between multiple simultaneous updates.

410 Gone – Indicates that the resource requested has gone and will not be coming back. This code should be used when a webpage has been removed forever. The resource should be removed, or in techy terms, purged. A 410 is very similar to a 404 except, unlike a 404, the client shouldn't request the resource in the future. Search engines coming across a 410 status code should remove the resource from their index.

411 Length Required – The request did not specify the length of its content so the server refuses to accept it. A valid content length header field needs to be added for the client to successfully repeat the request.

412 Precondition Failed – The server does not meet one of the preconditions that was requested.

413 Payload Too Large – The request is too large for the server to process.

414 URI Too Long – The Uniform Resource Identifier (URI), which is the string of characters used to identify a resource, provided was too long for the server to process. Often the result of too much data being encoded as a query-string of a GET request, in which case it should be converted to a POST request. The most common type of URI is a Uniform Resource Locater, commonly URL, which is often referred to simply as a web address.

415 Unsupported Media Type – The request entity has a media type which the server or resource does not support. For example, the client uploads an image in a format that is not used or recognised by the server.

416 Range Not Satisfiable – The client has asked for a portion of the file but the server can't supply it.

417 Expectation Failed – The server cannot meet the requirements of the Expect request-header field sent by the client.

418 I'm a Teapot – This code was introduced in 1998 as one of the traditional IETF April Fools' jokes in association with the Hyper Text Coffee Pot Control Protocol.It's not expected to be implemented by actual HTTP servers. The 418 code should be returned by teapots requested to brew coffee.

421 Misdirected Request – The request was directed at a server that is unable to provide a response.

422 Unprocessable Entity – There's nothing wrong with the request adn the server understands the content type and syntax, but it was unable to be followed due to semantic errors.

423 Locked – The requested resource is locked.

424 Failed Dependency – The current request failed due to failure of a previous request.

426 Upgrade Required – The client should switch to a different protocol in order to conform to the standard defined by the latest RFC publication.

428 Precondition Required – The origin server requires the request to be conditional.

429 Too Many Requests – The user has sent too many requests in a given amount of time. There may be a time period that the user has to wait before trying again.

431 Request Header Fields Too Large – The server refuses to process the request because an individual header field, or all the header fields collectively, are too large.

451 Unavailable For Legal Reasons – The server has been legally demanded to deny access to a resource or to a set of resources that includes the requested resource. The code 451 was chosen as a reference to the Ray Bradbury novel, Fahrenheit 451.

5xx

500 Internal Server Error – A generic message indicating an error but offering little more information, probably because there is no more information available.

501 Not Implemented – The request was not completed as the server did not support the required functionality.

502 Bad Gateway – The upstream server gave an invalid response and the request was not completed.

503 Service Unavailable – The server is temporarily down, possibly due to being overloaded, and the request cannot be completed.

504 Gateway Timeout – The server did not respond to the request in a reasonable timeframe and is not going to complete the request.

505 HTTP Version Not Supported – The server does not support the HTTP protocol version.

Back to the SEO glossary →