Skip to main content

What are HTTP Status Codes and what do they mean?

Modified on: Tue, 4 Aug, 2026 at 2:50 PM

Summary

HTTP Response Codes indicate whether specific HTTP requests have been successfully completed. Responses are grouped into five classes: informational responses, successful responses, re-directs, client errors, and server errors. The HTTP status code for a link can be viewed in Siteimprove and can help identify whether a page loaded successfully or if an issue occurred.

Overview

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:

Quality Assurance > Inventory > Links

Links table in the QA inventory

Quality Assurance > Page Report > Click on broken link

Screenshot showing that the HTTP status code is found under the 'Occurrences on this page' header, after following the beforementioned path.

Common HTTP Status Codes and Their Meanings

Below is a list of common HTTP status codes and their definitions. 

Note: This is not an extensive list of HTTP error codes. For a more detailed list, please refer to the following article: HTTP Response Codes.

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.

300 – Multiple Choice

The request has more than one possible response. 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 URL 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 direct the client to get the requested resource from another URI with a 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 the same cached version of the response.

307 – Temporary Redirect

The server sent this response to the directing client to get the requested resource from another URI with the same method that used the 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.

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

The client does not have access rights to the content so the server is not allowing access to the requested response.

404 – Not Found

The server cannot find the 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.

Soft 404

A soft 404 is when a page returns a 200 HTTP status code, but its content indicates that the page was not found. In the platform, soft 404s are identified based on rules configured by our support team upon request, using patterns such as “Page could not be found” or “Error 404.” If you see a page flagged as a soft 404, it means it matches a configuration that has been set up specifically for your account to detect these types of pages.

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.

406 – Not Acceptable

The 406 status code indicates that the target resource does not have a current representation that would be acceptable to the user agent, according to the proactive negotiation header fields received in the request, and the server is unwilling to supply a default representation. Check the URL in a browser. Try a different URL on the same domain as the URL you are requesting to see if you can identify where the issue lies.

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 use HTTP pre-connection mechanisms to speed up surfing. 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.

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 and prevent the request method from being applied if the target resource is in an unexpected state.

418 – I'm a Teapot

Indicates that the server refuses to brew coffee because it is, permanently, a teapot. A combined coffee/tea pot that is temporarily out of coffee should instead return 503. Some websites use this response for requests they do not wish to handle, such as automated queries.

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.

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.

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 which either wish to prevent crawlers altogether or limit the number of requests made. 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 refers to is no longer available, for example, a video.

n/a – Unable to Connect

This is not an official HTTP status code. You can receive this error when the request was aborted, i.e., the connection was closed unexpectedly. You may also see this error if there are TLS handling issues.

n/a – Linkcheck Postponed

This is not an official HTTP status code. This status means that Siteimprove had to postpone checking this link. This is because Siteimprove has many links to check from the link's domain and that domain has set a request limit that prevents Siteimprove from checking links quickly. Siteimprove is checking links on this domain one after another, adhering to the domain's request limit.

n/a – Invalid URL

This is not an official HTTP status code. This status means that the link's URL is not correctly formatted, so Siteimprove could not check it. For example, if the URL is missing “http://” or “https://”, contains unencoded spaces or special characters, or includes a leftover placeholder or stray character from the page's source code.

Additional Information

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.

Did you find it helpful? Yes No

Send feedback
Sorry we couldn't be helpful. Help us improve this article with your feedback.