What Are HTTP Status Codes + Full List of Status Code Explanations
When you visit a website, your browser sends a request to the server to load the content. The server receives and fulfills the instructions, then sends back the matching resources with an HTTP header.
During the process, the server returns several responses to the browser, indicating its status – whether it’s successful, redirected, or terminated due to an error.
Understanding HTTP status codes and their usage are essential for identifying site issues and minimizing downtime. In addition, some of them provide helpful information for search engines and visitors.
In this article, we will discuss 63 HTTP status codes and their usage. Furthermore, we will explain how to monitor them and their impact on search engine optimization (SEO).
What Are HTTP Status Codes?
HTTP response codes are three-digit numbers generated by a server to respond to a browser’s request. The Internet Assigned Numbers Authority (IANA) maintains the official registry of all statuses.
The first digit defines the status code’s category, which begins with a number between one and five. For example, 1XX shows informational responses, while 5XX displays server error alerts.
On the other hand, the last two are assigned for specific information under a given classification. For example, 404 indicates that the server can’t find the requested resource.
HTTP defines request methods to indicate the desired action for a resource. Each implements a different semantic, but they have some common features, such as safe, idempotent, and cacheable. Here is the list:
- GET – requests a specific resource representation and will only retrieve data.
- HEAD – requests the same response as the GET method but without a message body.
- POST – submits an entity to the specified resource, often changing the server’s state.
- PUT – replaces all resource representations with the request payload.
- DELETE – removes the specified response.
- OPTIONS – explains the communication options for the resource.
- TRACE – performs a message loop-back test along the path to the resource.
- PATCH – applies partial modifications to a resource.
How Are HTTP Status Codes Categorized?
HTTP status codes have five categories based on the server responses sent to the browser:
- 1XX informational – this class indicates that the server received the HTTP request sent by the browser and will continue the process. It is a temporary response, so the client won’t encounter this status code since it’s not the final answer.
- 2XX success – this class indicates that the server received, understood, and processed the request. Subsequently, the browser accepts the expected information.
- 3XX redirection – this class indicates that the server received the request, but the requested content was moved to a different location, so the client will be redirected.
- 4XX client error – this class indicates that the server can’t complete the request because of a client-side error, such as an unavailable page, bad syntax, or authorization problem. The response will explain whether it is a temporary or permanent issue.
- 5XX server error – this class indicates that the server encountered an error and can’t process a valid request. The response will describe the situation and determine whether it is a temporary or permanent problem.
A Complete List of HTTP Status Codes
Here is the complete list of HTTP status codes:
Status code | Functions |
1XX Informational | |
100 | Continue |
101 | Switching Protocols |
102 | Processing |
103 | Early Hints |
2XX Successful | |
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 |
3XX Redirection | |
300 | Multiple Choices |
301 | Moved Permanently |
302 | Found (Previously: Moved Temporarily) |
303 | See Other |
304 | Not Modified |
305 (Unused) | Previously: Use Proxy |
306 (Unused) | Previously: Switch Proxy |
307 | Temporary Redirect |
308 | Permanent Redirect |
4XX Client Error | |
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 | URI Too Long |
415 | Unsupported Media Type |
416 | Range Not Satisfiable |
417 | Expectation Failed |
418 (Unused) | Previously: I’m a Teapot |
421 | Misdirected Request |
422 | Unprocessable Entity |
423 | Locked |
424 | Failed Dependency |
425 | Too Early |
426 | Upgrade Required |
428 | Precondition Required |
429 | Too Many Requests |
431 | Request Header Fields Too Large |
451 | Unavailable for Legal Reasons |
5XX Server Error | |
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 (Unused) | Not Extended |
511 | Network Authentication Required |
Groups of HTTP Status Codes Individually Explained
In the following sections, we will explain each of the items in our HTTP status codes list.
1XX HTTP Status Codes
The 1XX status codes contain informational responses and are divided into four types:
100 Continue
This code means that the server has received the initial part of the request. Once it accepts and processes the entire content, it will send a final response.
Thus, the client should continue sending the remaining request and ignore the 100 status code.
101 Switching Protocols
This status code means that the server understands the Upgrade header field request and will comply with the change of application protocol.
However, this response will only happen if the server considers it advantageous.
102 Processing
This code means that the server has received the full request and is processing it. At this point, there will be no response as it hasn’t completed it.
The server will only send this status when the request takes a significantly longer time to finish.
103 Early Hints
This status code is used with the Link header to allow the browser to preload resources while the server is preparing a response.
2XX HTTP Status Codes
The 2XX status codes consist of successful responses and are divided into ten categories:
200 OK
This status code indicates that the request has succeeded. However, the actual meaning of the response depends on the request method used – GET, HEAD, POST, PUT, DELETE, OPTIONS, and TRACE.
201 Created
This status code means that the server has completed the request, creating one or more new resources. It is a typical response sent after a POST or PUT method.
The new resources are identified by either a Location header field in the response or the target Uniform Resource Identifier (URI).
202 Accepted
This code indicates that the server has accepted the request for processing but is not finished yet. The status is non-committal, allowing a server to process another submission without requiring the user agent’s connection to persist until it is completed.
The 202 accepted is intended for batch processing, where another process or server handles the request. This response will include the request’s current status, either a pointer to a status monitor or an estimated time.
203 Non-authoritative Information
This status code means that the request was successful. However, a transforming proxy has changed the information before sending it to the browser. Therefore, the server gathers the actual data from a local or third-party copy.
This code allows the proxy to notify recipients when there is a change, as one transformation may impact decisions regarding the requested content. In most cases, it is used to mirror or back up another resource.
204 No Content
This status code indicates that the server has completed the request. However, there is no additional content to send in the response.
This response must include a message body, allowing action inputs without changing the browser’s active page.
205 Reset Content
This status code means the server has fulfilled the request, and the user should reset the document view to its original state.
This response is intended to support data entry on a notepad, form, canvas, etc.
206 Partial Content
The server sends this HTTP status code in response to the Range header sent by the client when requesting only part of a resource.
Furthermore, the response must include the following header fields:
- A Content-Range header indicating that the response contains the range, or a multipart or byteranges Content-Type, including Content-Range fields for each part.
- Date.
- ETag and/or Content-Location.
- Expires, Cache-Control, and/or Vary.
207 Multi-Status
This response code conveys the status of multiple resources. It is a text/sml or application/xml HTTP entity with a multi-status root element. In addition, the server may use this code in success, partial, or failure situations.
208 Already Reported
This status code is used inside a DAV:propstat response element to prevent repeatedly enumerating the internal members of multiple bindings to the same collection. For each, only one will be reported with a 200 status, while others will use the 208 code.
226 IM Used
This status code means that the server has completed the GET request, and the response indicates that one or more instance-manipulations were implemented on the resource.
3XX HTTP Status Codes
The 3XX status codes contain redirection messages and are divided into nine types:
300 Multiple Choices
This status code means the request has multiple possible responses, and the user agent should choose one. The server wants the client to engage in reactive negotiation to select the most appropriate representation for their needs.
Unless it is a HEAD request method, the response will include a list of resource characteristics and locations from which the user can choose.
If the server has a preferred choice, it will generate a Location header field containing its URI reference. On the other hand, the user agent may use the Location field value for automatic redirection.
301 Moved Permanently
This HTTP status code means the requested resource has been moved to a new permanent URL. New references to it should use one of the page addresses included in the response.
The server reply will contain a hypertext note with a hyperlink to the new URL unless the client uses a HEAD request method. For methods other than GET and HEAD, this status code will not redirect users to the new page unless the user agent agrees.
302 Found (Previously: Moved Temporarily)
This response code means the requested resource is temporarily available under a different URI. Therefore, future requests should use the current address included in the response.
Unless the client uses the HEAD request method, the server reply will display a hypertext note with a link to the new URI(s). Otherwise, this status code will not redirect users to the new address unless they agree to it.
The fastest way to fix the 302 error is to restore the site from a backup.
303 See Other
The server sends this response code to redirect the client to a different resource using the GET method.
This status means the origin server can’t transmit the target resource’s representation over HTTP.
304 Not Modified
This status code informs the user that the response has not been modified. Thus, the client can use the currently cached version of the requested resource.
It usually happens when the client uses either the GET or HEAD method or when the request is conditional and utilizes an If-None-Match or If-Modified-Since header.
This server response is equivalent to the 200 OK code and comes with any of the following header fields – Content-Location, Date, ETag, Vary, Cache-Control, and Expires.
To solve the 304 error, you may need to clear browser cache and flush DNS.
305 Unused (Previously: Use Proxy)
The server used this status code to inform the client to access the resource via a proxy and repeat the same request. The response would include the URI in the Location field.
This status code was deprecated due to security concerns regarding in-band proxy configuration.
306 Unused (Previously: Switch Proxy)
Initially, the server used this response code to instruct the client to access the subsequent requests via a specified proxy.
However, it’s no longer utilized, and the code is reserved for future uses.
307 Temporary Redirect
The server sends this HTTP status code to redirect the client to the target resource on another URI. Since it is temporary, the user may need to use the original address in the future.
The only difference between this code and the 302 Found status is that with the 307 response, the client must not change the HTTP method used.
308 Permanent Redirect
This response code means that the requested resource has been permanently moved to a new URI included in the HTTP header.
It has the same semantics as the 301 status, except that the 308 Permanent Redirect doesn’t allow the user to change the request method.
4XX HTTP Status Codes
The 400 status code contains client error responses such as:
400 Bad Request
This status code means the server failed to complete the request due to a client-side error, such as invalid syntax or deceptive routing. In this situation, the client should modify the request.
If the 400 error occurs, make sure to check the URL and clear browser cache and cookies.
401 Unauthorized
This HTTP response means the server hasn’t processed the request because it doesn’t have valid user authentication credentials. Usually, the server sends this status with a WWW-Authenticate header field containing information on how to access it.
However, if the request included credentials, the 401 error means that the server refused to authorize them.
402 Payment Required
This error code is a non-standard response reserved for future use. Initially, it was going to be implemented in digital payment systems. However, it is rarely used, and no standard convention regulates it.
403 Forbidden
This HTTP response means the origin server understood the request but refused to fulfill it. The 403 error occurs because the client doesn’t have enough rights to access the content. If the request includes authentication credentials, the server may consider them insufficient.
Unlike the 401 error, re-authenticating makes no difference in this case, as access is permanently forbidden and tied to the application logic. However, the client may repeat the request with a new or different credential.
404 Not Found
The 404 status code is a frequent occurrence. It indicates that the origin server can’t find the requested resource, and no forwarding address is set.
In a browser, the 404 error means the link is unrecognized or not found. Meanwhile, in an Application Programming Interface (API), the issue denotes that the endpoint is valid, but the resource doesn’t exist.
Links that lead to the 404 status code are called broken or dead links and can be temporary or permanent.
405 Method Not Allowed
This status code means the origin web server recognizes the request method, but the resource doesn’t support it. The response will display an Allow header field containing a list of the resource’s supported methods.
To fix the 405 error, verify the URL and check for database changes.
406 Not Acceptable
The server sends this invalid response when it doesn’t find any content suitable for the criteria given by the user according to the Accept headers received with the request.
The server will display a list of available representations and corresponding resource identifiers so the user can choose the most appropriate one.
407 Proxy Authentication Required
The server displays this code when using a proxy. The client must provide valid authentication credentials to access the requested resource. Essentially, it is similar to 401 Unauthorized.
408 Request Timeout
This status code means the server didn’t receive the complete request message within the timeout period. Usually, the response will include a close connection option.
To solve it, the client may repeat the request without modifications.
This response may occur in many browsers, such as Chrome and Firefox, since they use the HTTP pre-connection mechanism to speed up the surfing time.
409 Conflict
The server can’t fulfill the request due to a conflict with the resource. It will display information regarding the problem so the client can fix it and resend the submission.
In most cases, the conflict occurs in response to a PUT request.
410 Gone
This status code means the resource is unavailable permanently, and there is no forwarding address set. When a page displays this message, search engines will remove it from the index completely.
This response intends to notify the client that the resource is intentionally unavailable and the site owner wants to delete any remote link leading to it.
411 Length Required
This response code indicates that the server rejected the request since it requires a defined Content-Length header field.
412 Precondition Failed
This status code means the server failed to meet one or multiple preconditions indicated in the request header fields.
413 Payload Too Large
This code means the request is too large, and the server refuses to process it.
To solve the 413 error, the server may close the connection and generate a Retry-After header field implying that it is a temporary issue and the client should retry later.
414 URI Too Long
This status code means that the request URI is too long, and the server refuses to interpret it. Although this error is rare, some possible causes are:
- A client has improperly converted a POST to a GET request with long query information.
- A client has descended into a redirection loop.
- A client attempts to exploit the server’s security holes.
415 Unsupported Media Type
This response code indicates the server rejects the request because the resource uses an unsupported media format. The issue may happen due to the Content-Type, Content-Encoding, or direct inspection of the data.
416 Range Not Satisfiable
This status code denotes that the server can’t fulfill the value specified in the request’s Range header field. It may occur because the resource doesn’t contain the range or its value is invalid.
417 Expectation Failed
The inbound server gives this response code when it can’t meet the requirements indicated in the Expect request-header field.
418 Unused (Previously: I’m a Teapot)
The status code references an April Fools joke called the Hyper Text Coffee Pot Control Protocol, which indicates that the server declines to brew coffee in a teapot.
IANA reserves this number for future use. However, some websites utilize this status code to respond to requests they don’t want to handle.
421 Misdirected Request
This status code means the client sent a submission to a server that can’t produce a response for the scheme and authority combination included in the request-URI.
The user may resend the request – whether or not the method is idempotent – over a different connection or using an alternative service.
422 Unprocessable Entity
This response means the client has sent the request correctly, but the server can’t process the submission due to semantic errors and other issues.
423 Locked
This HTTP status means that the request method’s resource is locked. The server response usually contains precondition or postcondition code, such as lock-token-submitted or no-conflicting-lock.
424 Failed Dependency
This response states that the request failed because it depended on another action, which also failed.
425 Too Early
The server sends this code to indicate that it refuses to process a request that might be replayed.
426 Upgrade Required
This status code means that the server declines to perform the request unless the client upgrades to a different protocol.
428 Precondition Required
This status code means the origin server requires a conditional request to ensure the client works with the correct copies.
429 Too Many Requests
The 429 error indicates that the client has sent too many requests at a time. The server will explain the condition and provide a Retry-After header informing how long the user has to wait before making another request.
431 Request Header Fields Too Large
This status code occurs when the request headers are too large and the server declines to process them. To fix the 431 error, the client may need to reduce the request size before resending it.
451 Unavailable for Legal Reasons
This response code occurs when the client requests a resource that has been removed due to legal reasons, such as a blocked site or page. This mostly affects Internet Service Providers (ISPs) and search engines.
5XX HTTP Status Codes
The 5XX status codes consist of server error responses. Here are some of the most common ones:
500 Internal Server Error
The HTTP 500 error indicates that the server encountered an unexpected issue that prevented it from fulfilling the request. Sometimes, administrators log this code with more information about the problem so it won’t happen again.
501 Not Implemented
This status code occurs when the server doesn’t support the functionality required to complete the request. The only methods servers are required to process are HEAD and GET.
The server response may include a Retry-After header, informing the client when to check back if the functionality is available. This error requires a fix from the web server side.
502 Bad Gateway
The gateway or proxy server gives this status code when it receives an invalid response while attempting to fulfill the request. If your site displays a 502 error, you may have to contact your web host to fix it.
503 Service Unavailable
This status code means the server couldn’t handle the request due to temporary overload or scheduled maintenance.
Usually, the 503 error comes with a Retry-After header field, suggesting how long the client needs to wait before resubmitting the request.
504 Gateway Timeout
The gateway or proxy server sends this status code when it hasn’t received a timely response from the upstream server to complete the request.
To solve the 504 error, you may need to check your hosting resources if you’re the website owner or try using a different browser.
505 HTTP Version Not Supported
The server gives this code when it doesn’t support the HTTP version used in the request. The response will explain why that variant doesn’t work and offer acceptable protocols.
506 Variant Also Negotiates
This status code means the server is experiencing an internal configuration error. This happens when the chosen variant resource is configured to engage in transparent content negotiation. Hence, it’s not a proper endpoint.
507 Insufficient Storage
This response code means the method can’t work on the resource because the server can’t store the necessary representation to complete the request.
508 Loop Detected
The server sends this response when it terminates an operation because an infinite loop with Depth: infinity occurred, indicating that the entire process has failed.
510 Unused (Previously: Not Extended)
This status code indicated that the server needed further extensions to fulfill the request. Therefore, it had to send back all the necessary information so the client could issue an extended request.
However, the Internet Engineering Task Force (IETF) has terminated this experimental code based on the status change document.
511 Network Authentication Required
This response indicates that the client must be authenticated to gain network access and will include a link where the user can submit their credentials.
This status mitigates security issues caused by captive portals to software.
How to Check a Page’s HTTP Status Code
1XX and 2XX status codes are rarely visible to users. They will only see 3XX, 4XX, or 5XX response codes displayed on the browser when something goes wrong.
However, some tools allow you to monitor a page’s response status codes, such as Google Search Console, WebSniffer, and Inspect Element.
For example, you can see a page’s 200 and 304 codes using Chrome’s Inspect Element. Right-click anywhere on the page and select Inspect. Then, select Network on the top menu.
Using WebSniffer, you’re able to check the page’s HTTP Request Header by selecting the request type – GET, POST, or HEAD – and user agent, which allows you to see how the page loads on different browsers or even Googlebot.
HTTP Status Codes and SEO
Search engine bots register all HTTP status codes while crawling your site and will use this information to determine its health and ranking.
Let’s see some of the status codes that significantly impact your site’s SEO:
200 OK and SEO
This status code shows that the page is properly functioning for crawlers and visitors. Receiving this response assures you that the page will pass link value to the URLs listed on it.
301 Moved Permanently and SEO
This code means visitors and bots will be permanently redirected to another URL. Web owners use this status code when transferring or changing their domain or merging two websites, as link equity will be passed to the new address.
404 Not Found and SEO
This status code may negatively impact your website’s SEO. If a page returns a 404 error, search engines won’t index it. In addition, even if it has external links pointing to it, they will no longer give link value to the page. Therefore, you need to fix this issue immediately.
If a high-authority page with large traffic returns 404, create a 301 redirect to the most relevant page. However, if you removed the page on purpose, we recommend using a custom 404 page as suggested by the Google Search Console guide.
5XX Server Errors and SEO
These status codes slow down the crawling process, especially if the site has many individual URLs that return the 5XX error.
Consequently, search engines’ algorithms may consider your site to be of low quality. They will eventually de-index those pages, so you will lose link equity and rankings.
HTTP Status Codes Cheat Sheet
Click the link below to download a free PDF of the most common HTTP status codes. For website owners, this cheat sheet is a must-have resource.
Download comprehensive HTTP status codes cheat sheet
Conclusion
HTTP status codes are important messages sent from the site’s server you’re trying to access. While some are invisible, others are displayed in the browser to indicate an issue.
There are five categories of HTTP status codes:
- 1XX informational – the server understood and will continue with the HTTP request.
- 2XX success – the server received, processed, and sent back the expected response.
- 3XX redirection – the server requires an additional action to fulfill the request due to resource relocation.
- 4XX client error – the server couldn’t complete the request since there was a client-side issue.
- 5XX server error – the server encountered an error and couldn’t fulfill the request.
Understanding HTTP status codes helps website owners troubleshoot issues, maintain the site’s performance, and preserve SEO.
We hope this article has helped you understand these server responses better. If you have any questions or suggestions, please leave them in the comments section below.
HTTP Status Codes FAQ
In this section, we will answer some of the most frequently asked questions about HTTP status codes.
Will I See an HTTP Status Code Every Time a Website Error Occurs?
Yes, an HTTP status code will appear whenever your website encounters an error. The only exception would be if there’s an interceptor placed between the server and the browser or if the client uses the console.clear() method.
How Many HTTP Status Codes Are There?
According to the IANA registry, status codes range from 100 to 599. However, only 63 of them are widely used. The rest are mainly unassigned.