Skip to main content

What Are HTTP Status Codes and what do they mean?

Guðrún Gústafsdóttir avatar


This article will explain what HTTP status codes are, define what each code means and show you how you can see the status code in Siteimprove.

What are HTTP status codes?

HTTP Response Codes indicate whether specific HTTP requests have been successfully completed. Basically, it's an indicator of whether a web page has loaded successfully. Responses are grouped into five classes: informational responses, successful responses, re-directs, client errors, and server errors.

Where can I see the HTTP status code?

The HTTP status code for a link can be found in the following locations:

1. Quality Assurance > Inventory > Links

Quality Assurance, Inventory, Links menu

2. Quality Assurance > Page Report > Click on broken link

HTTP_Response_code_on_page_report

What do the status codes mean?

Below is a list of common HTTP status codes and their definitions. For a more a detailed list, refer to the following article: HTTP Response Codes.

Status code Status text Description  
Successful responses
200 OK The request has succeeded. The meaning of success varies depending on the HTTP method:
  • GET: The resource has been fetched and is transmitted in the message body.
  • HEAD: The entity headers are in the message body.
  • POST: The resource describing the result of the action is transmitted in the message body.
  • TRACE: The message body contains the request message as received by the server
 
Redirection messages
300 Multiple Choice The request has more than one possible responses. The user-agent or user should choose one of them. There is no standardized way to choose one of the responses.  
301 Moved Permanently This response code means that the URI of the requested resource has been changed. The new URI is probably given in the response.  
302 Found This response code means that the URI of the requested resource has been temporarily changed. New changes in the URI might be made in the future. Therefore, this same URI should be used by the client in future requests.  
303 See Other The server sent this response to directing client to get the requested resource from another URI with an GET request.  
304 Not Modified This is used for caching purposes to tell the client that the response has not been modified. So,  the client can continue to use same cached version of the response.  
307 Temporary Redirect The server sent this response to the directing client to get requested resource from another URI with same method that used prior request. This has the same semantic as the 302 Found HTTP response code, with the exception that the user agent must not change the HTTP method used: if a POST was used in the first request, a POST must be used in the second request.  
308 Permanent Redirect This means that the resource is now permanently located at another URI, specified by the Location:HTTP Response header. This has the same semantics as the 301 Moved Permanently HTTP response code, with the exception that the user agent must not change the HTTP method used: if a POST was used in the first request, a POST must be used in the second request.  
Client error responses
400 Bad Request This response means that server could not understand the request due to invalid syntax.  
401 Unauthorized Authentication is needed to get the requested response. This is similar to the 403 response code, but in this case, authentication is possible.  
403 Forbidden Client does not have access rights to the content so the server is not allowing access to the requested response.  
404 Not Found

Server cannot find requested resource. This response code is well-known due to its frequent occurrence.

The 404 status code is considered a Broken Link in the Siteimprove platform.

 
405 Method Not Allowed The request method is known by the server but has been disabled and cannot be used. The two mandatory methods, GET and HEAD, must never be disabled and should not return this error code.  
408 Request Timeout This response is sent on an idle connection by some servers, even without any previous request by the client. It means that the server would like to shut down this unused connection. This response is used much more since some browsers, like Chrome or IE9, use HTTP preconnection mechanisms to speed up surfing (see bug 881804, which tracks the future implementation of such a mechanism in Firefox). Also note that some servers merely shut down the connection without sending this message.  
409 Conflict

The request could not be completed due to a conflict with the current state of the resource. This code is only allowed in situations where it is expected that the user might be able to resolve the conflict and resubmit the request. The response body SHOULD include enough information for the user to recognize the source of the conflict. Ideally, the response entity would include enough information for the user or user agent to fix the problem; however, that might not be possible and is not required.

Conflicts are most likely to occur in response to a PUT request. For example, if versioning were being used and the entity being PUT included changes to a resource which conflict with those made by an earlier (third-party) request, the server might use the 409 response to indicate that it can't complete the request. In this case, the response entity would likely contain a list of the differences between the two versions in a format defined by the response Content-Type.

 
410 Gone

This response is sent when the requested content has been permanently deleted from the server, with no forwarding address.

The 410 status code is considered a Broken Link in the Siteimprove platform.

 
412 Precondition Failed One or more conditions given in the request header fields evaluated to false when tested on the server. This response code allows the client to place preconditions on the current resource state (its current representations and metadata) and, thus, prevent the request method from being applied if the target resource is in an unexpected state.  
429 Too Many Requests

The user has sent too many requests in a given amount of time. Intended for use with rate-limiting schemes to control the rate of traffic sent or received to prevent DoS attacks.

 
Server error responses
500 Internal Server Error The server has encountered a situation it doesn't know how to handle.  
502 Bad Gateway This error response means that the server, while working as a gateway to get the response needed to handle the request, got an invalid response.  
503 Service Unavailable The server is not ready to handle the request. Common causes are a server that is down for maintenance or overloaded. Note that together with this response, a user-friendly page explaining the problem should be sent. This response should be used for temporary conditions and the Retry-After: HTTP header should, if possible, contain the estimated time before the recovery of the service. The webmaster must also take care about the caching-related headers that are sent along with this response, as these temporary condition responses should usually not be cached.  
*Unofficial HTTP status code 
999

Unable to process request,
Request denied, or blank in some cases.

This is not an official HTTP status code. It is used as a “catch-all” error code presented when a more specific error code is not provided by the server we are trying to access.
We see this behavior on social media sites like LinkedIn who either wish to prevent crawlers altogether or limit the number of requests made. This response can be intermittent as in some cases a server will block the crawler IP address for a limited time period.
In such cases, we suggest you re-crawl of the link at a later stage. If the problem persists with a link that you know to be working, you can dismiss this specific link in the page report.
 
n/a

Unavailable

This is not an official HTTP status code. The link appears to work but the resource this link takes to is no longer available. Ex.: a video.  

 

*Unofficial HTTP status codes are also seen but these are not standardized in the status code definitions from the Internet Engineering Task Force (IETF) in RFC 7231.