HTTP status codes: Full list and explanations
HTTP response codes are three-digit numbers sent by a server to indicate the status of a browser’s request. Managed by the Internet Assigned Numbers Authority (IANA), these codes help identify whether a request was successful, redirected, or resulted in an error.
If you’re managing a website, understanding these codes is useful for diagnosing site issues, minimizing downtime, and optimizing SEO. Keep reading as we cover 63 HTTP status codes, their meanings, and how to monitor them.
HTTP status code categories
When identifying an HTTP status code, focus on the first digit to determine its category. The last two digits provide specific details within that category.
The Internet Engineering Task Force (IETF) standardized HTTP status codes into five categories based on the server’s response to the browser:
- 1XX (informational) – the server received the HTTP request and will continue the process. Status codes within this category are temporary, so they aren’t visible to the client.
- 2XX (success) – the server received, understood, and processed the request.
- 3XX (redirection) – the server received the request, but the requested content has moved. Therefore, it will redirect the client to another location.
- 4XX (client error) – the server couldn’t complete the request because of a client-side issue, such as an authorization problem. The response explains whether the issue is temporary or permanent.
- 5XX (server error) – a server-side issue prevents the request from being processed. Like 4XX, the response specifies if it’s a temporary or permanent issue.
Complete list of HTTP status codes and explanation
Here is the complete list of HTTP status codes from IEFT documentation:
Status codes | 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 |
303 | See Other |
304 | Not Modified |
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 | Content Too Large |
414 | URI Too Long |
415 | Unsupported Media Type |
416 | Range Not Satisfiable |
417 | Expectation Failed |
418 | 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 | Not Extended |
511 | Network Authentication Required |
305 Use Proxy and 306 Switch Proxy have been deprecated but are still reserved.
Additionally, codes outside these categories may be unofficial, not yet adopted, or specific to certain platforms or services. For example, Cloudflare uses the 521 Web Server Is Down status code for connection errors.
1XX – Informational HTTP status codes
100 Continue
This status code indicates that the server has received the initial part of the request. The client should continue sending the rest of the request and ignore this status code.
101 Switching Protocols
The server agrees to switch to the protocol specified in the Upgrade header. This response only happens if the change is beneficial.
102 Processing
The status code means that the server is still processing the request. It usually appears when a request takes a long time to complete.
103 Early Hints
This response code allows the browser to preload resources using the Link header while the server prepares the final response.
2XX – Successful HTTP status codes
200 OK
This status code indicates that the request has succeeded. However, the actual meaning of this response depends on the request method used (GET, HEAD, POST, PUT, DELETE, OPTIONS, or TRACE). We’ll dive into all the HTTP methods later in the article.
201 Created
This status code is a typical response sent after a POST or PUT method. It indicates that the server has completed the request and is creating one or more new resources, identified by a Location header or the target URI.
202 Accepted
The server has accepted the request but hasn’t processed it yet. This non-committal status allows the server to handle the request later without requiring the client to stay connected, making it ideal for batch processing.
203 Non-Authoritative Information
This status code means the request was successful, but a proxy modified the response data from the origin server. It’s commonly used when the server retrieves data from a cache or third-party source, notifying recipients of potential changes to the original content, like in backups or mirrored resources.
204 No Content
This status code means that the server successfully processed the request but has no content to send in the response. It’s used for actions that don’t require updating the browser’s current view.
205 Reset Content
The request was successful, and the client should reset the document view ‒ a notepad, form, or canvas ‒ to its default state.
206 Partial Content
This status code is sent when a client requests part of a resource using the Range header, which reduces bandwidth usage and improves performance.
It commonly happens when resuming interrupted downloads, streaming media files, handling large file transfers in chunks, and fetching specific data segments during synchronization.
207 Multi-Status
This status code provides the status of multiple resources in a single response. The XML message body typically includes a multi-status root element detailing each resource’s success, partial success, or failure.
208 Already Reported
This status code is used inside a DAV:propstat response element to avoid listing duplicate internal members of collections. Only one resource reports a 200 OK status, while duplicates use 208.
226 IM Used
The server successfully processed a GET request and applied one or more instance manipulations to the resource in the response.
3XX – Redirection HTTP status codes
300 Multiple Choices
This status code indicates that multiple responses are available, and the client must choose one.
For example, it can happen when a resource has multiple language versions, such as English and French. The response includes a list of options with resource details and locations. If the server has a preferred choice, it provides a Location header for automatic redirection.
301 Moved Permanently
This status code means the requested resource has been permanently moved to a new URL. All future requests should use the new address provided in the response.
The server’s response usually includes a link to the new URL, except for HEAD requests. For methods other than GET and HEAD, redirection only happens if the client allows it.
302 Found
This status code means that the requested resource is temporarily available at a different URI. Future requests should continue to use the original address unless otherwise directed.
For non-HEAD requests, the server’s response usually includes a link to the temporary URI. Redirection only occurs if the client allows it.
Check out our 302 error tutorial for troubleshooting methods and common use cases.
303 See Other
This status code redirects the client to a different resource using the GET method. It means the server cannot provide the requested resource directly.
For example, after submitting a form, the server redirects the client to a confirmation page instead of showing the result directly.
304 Not Modified
This status code means the requested resource hasn’t changed, so the client can use its cached version. It’s typically triggered by GET or HEAD requests with conditional headers like If-None-Match or If-Modified-Since.
Check out our tutorial on the 304 status code for more details and troubleshooting steps.
307 Temporary Redirect
The server sends this status code to redirect the client to another URI temporarily. Since it is temporary, the client may need to use the original address in the future. Unlike 302 Found, the client must keep the same HTTP method during the redirect.
308 Permanent Redirect
This status code indicates the resource has permanently moved to a new URI in the HTTP header.
It has the same semantics as 301 Moved Permanently, except that 308 Permanent Redirect doesn’t allow the client to change the request method.
4XX – Client error HTTP status codes
400 Bad Request
This status code means the server couldn’t process the request due to a client-side error, like invalid syntax or routing. To fix a 400 error, check the URL and clear your browser’s cache and cookies.
401 Unauthorized
The server rejected the request due to missing or invalid user authentication. If the request included credentials, it indicates the server refused to authorize them. The response usually comes with a WWW-Authenticate header containing instructions to access the resource.
If you come across a 401 error, check out our dedicated tutorial for troubleshooting steps.
402 Payment Required
This non-standard status code was intended for digital payment systems. However, it’s rarely used, and there are no clear rules for it.
403 Forbidden
The server understood the request but denied access, usually due to insufficient permissions. Re-authentication won’t resolve a 403 error, as access is permanently restricted. The client can try again with different credentials.
404 Not Found
This status code means that the server can’t find the requested resource and has no forwarding address. In a browser, it means the link is missing or unrecognized. In an API, it indicates the endpoint exists, but the resource doesn’t.
Links that return a 404 error are called broken or dead links, which can be temporary or permanent.
405 Method Not Allowed
The origin server recognizes the request method, but the resource doesn’t support it. The response usually includes an Allow header listing the supported methods.
To fix a 405 error, check the URL and review any database changes.
406 Not Acceptable
The server sends this invalid response when it doesn’t find any content that matches the criteria in the request’s Accept headers. The server will provide a list of available options so the client can choose the most suitable 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. Unlike 401 Unauthorized, the client must authenticate with the specified proxy server instead of the origin server.
408 Request Timeout
This status code means the server didn’t receive the full request within the allowed time. The response usually suggests closing the unused connection.
To fix it, the client can resend the request without changes. This error can occur in browsers like Chrome and Firefox, which use pre-connection to speed up loading.
409 Conflict
The server can’t process the request due to a conflict with the resource. It provides details about the issue so the client can fix it and try again, usually with a PUT request.
410 Gone
This response code means the resource is permanently unavailable without any forwarding address. When this occurs, search engines will remove the page from their index. It shows the site owner intentionally made the resource unavailable and wants to remove any links to it.
411 Length Required
The server rejected the request because it needs a Content-Length header.
412 Precondition Failed
This invalid response shows the server couldn’t meet one or more conditions specified in the request headers.
413 Payload Too Large
The server usually sends this error code when a request is too large to process. To fix a 413 error, the server might close the connection and include a Retry-After header, encouraging the client to try again later.
414 URI Too Long
This status code means the request URI is too long for the server to process. While it’s rare, it can happen if a client converts a POST request into a GET request with too much query information, enters a redirection loop, or attempts to exploit server vulnerabilities.
415 Unsupported Media Type
The server rejected the request because the resource uses an unsupported media format. This error code can also appear if the data compression method isn’t supported or if the content doesn’t meet the server’s expectations or rules.
416 Range Not Satisfiable
The server sends this status code when it can’t process the range specified in the request. It happens when the range doesn’t exist in the resource or the value is invalid.
417 Expectation Failed
This status means the server can’t meet the requirements specified in the request’s Expect header.
418 I’m a Teapot
This status code references an April Fools’ Day joke called the Hyper Text Coffee Pot Control Protocol, indicating that the server is a teapot and, therefore, can’t brew coffee. Some websites use it for requests they want to avoid.
421 Misdirected Request
This status code happens when the client sends a request to the wrong server, which can’t respond to the given URL. The user can retry the request using a different connection or service.
422 Unprocessable Entity
The server received the request but can’t process it due to issues like semantic errors, such as entering text in a form’s numeric field.
423 Locked
This status means the resource is locked. The response often includes details about the lock.
424 Failed Dependency
The request failed because it depended on a previous request that also failed.
425 Too Early
The server refuses to process the request because it might be repeated later.
426 Upgrade Required
The server won’t process the request unless the client switches to the required protocol stated in the Upgrade header.
428 Precondition Required
This status code means that the server needs a conditional request so that the client is using the correct version of the resource.
429 Too Many Requests
The 429 error occurs when the client sends too many requests in a short time. The server may include a Retry-After header to tell the client how long to wait before trying again.
431 Request Header Fields Too Large
The server sends this status code when the request headers are too big to process. The client should reduce the header size and resend the request.
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 – Server error HTTP status codes
500 Internal Server Error
This generic error code appears when the server encounters an unexpected issue that prevents it from completing the request. In many cases, server administrators log detailed information about the problem for troubleshooting.
501 Not Implemented
This status means the server doesn’t support the functionality needed to complete the request. Servers only need to handle GET and HEAD methods by default.
The response can include a Retry-After header, letting the client know when the functionality might be available.
502 Bad Gateway
The gateway or proxy server gives this status code when it receives an invalid response while attempting to complete the request. If your site displays a 502 error, you should contact your web host to fix it.
503 Service Unavailable
This status means the server can’t handle the request due to temporary overload or maintenance. Check the response’s Retry-After header to see how long you should wait before trying again.
504 Gateway Timeout
The gateway or proxy server sends this status code when it doesn’t get a timely response from the upstream server. If the 504 error occurs on your website, check your hosting resources or try using a different browser to solve it.
505 HTTP Version Not Supported
The server sends this code when it doesn’t support the HTTP version used in the request. The response will explain why that version doesn’t work and offer acceptable protocols.
506 Variant Also Negotiates
This status code indicates a server configuration error. It happens when the chosen resource variant is set up for content negotiation but isn’t a valid endpoint, causing a loop.
507 Insufficient Storage
The server doesn’t have enough storage to complete the request.
508 Loop Detected
This status means the server stopped an operation because it detected an infinite loop, causing the process to fail.
510 Not Extended
This status code means the server needs further extensions to complete the request successfully.
511 Network Authentication Required
The client must authenticate itself to access the network. The response usually includes a link to submit credentials. It addresses security issues with captive portals or the web pages users see before accessing public Wi-Fi networks.
Understanding HTTP request and response
HTTP defines request methods to tell the server what action to take with a resource. These methods share common features: safe, idempotent, or cacheable.
Methods are considered safe if they don’t modify anything on the server and work on a read-only basis. Idempotent methods give the same result no matter how often you run them without unintended side effects. Cacheable methods allow browsers or proxies to save responses for reuse, improving efficiency.
Here’s a list of standardized request methods commonly used in HTTP:
- GET ‒ retrieves data from a resource.
- HEAD ‒ requests the same response as GET but without a message body.
- POST ‒ sends data to a resource, like submitting a form.
- PUT ‒ replaces a resource or its representation entirely.
- DELETE ‒ removes a resource.
- OPTIONS ‒ shows the communication options for the resource.
- TRACE ‒ tests the path of a request.
- PATCH ‒ updates part of a resource.
These request methods often connect with HTTP status codes, showing if the action succeeded or failed. For example, a GET request can return 200 OK if it works or 404 Not Found if the resource doesn’t exist.
How to check a page’s HTTP status code
Users rarely see status codes in the 1XX and 2XX categories. Instead, they usually encounter 3XX, 4XX, or 5XX status codes when something goes wrong.
The easiest way to check a page’s HTTP status codes is to use your browser’s Inspect Element tool. If you’re on Chrome, right-click anywhere on the page and select Inspect. Then, select Network on the top menu.
With WebSniffer, you can check a page’s HTTP request headers by selecting the request type (GET, POST, or HEAD) and client. This feature helps you see how the page loads on different browsers and even Googlebot.
Important HTTP status code for 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
The 200 OK status positively impacts SEO because it signals to search engines that the page is accessible and working properly for visitors. It confirms the page is indexed, ranks in search results, and provides a smooth user experience.
301: Moved Permanently
The 301 Moved Permanently status helps SEO by redirecting traffic from an old URL to a new one. It tells search engines the old page has moved, so they transfer its ranking and authority ‒ also known as link equity ‒ to the new page. This keeps your site’s SEO stable and avoids broken links.
If you own a WordPress website, check out our dedicated tutorial on creating 301 redirects. As for best practices, make sure to:
- Redirect relevant pages ‒ pick pages with similar content to maintain user experience and SEO value.
- Update internal links ‒ replace old URLs with new ones in your site’s navigation, menus, and content so that visitors don’t come across broken links.
- Check external links ‒ ask other sites that link to your old URL to update their links if possible.
- Monitor redirects ‒ test your redirects to avoid chains or loops, which can slow down your site and confuse search engines.
- Inform search engines ‒ submit an updated sitemap to inform search engines about the new URL structure.
Did you know?
Hostinger’s Managed WordPress hosting lets you set up multiple redirects using hPanel in just a few clicks.
302: Found
Since 302 Found is a temporary redirect, search engines assume the original URL will return and often keep it indexed. Using it for a permanent move can hurt your SEO as it splits ranking and authority between the old and new URLs.
Therefore, only allow this status code for temporary situations, like during maintenance or testing. Replace it with 301 the moment the change becomes permanent.
404: Not Found
The 404 Not Found response is bad news for SEO and user experience. Search engines might remove 404 pages from their index, which means lost traffic. If the page has backlinks, you could lose valuable SEO benefits. It can also frustrate visitors, causing them to leave and mistrust your site.
Immediately fixing the error code is the best way to minimize the damage. It’s also a great practice to create a custom 404 error page, which you can populate with navigation links or information to keep visitors engaged.
Hostinger users can set up custom error pages in hPanel by going to Website → Error Pages. Alternatively, use WordPress plugins like SeedProd or Smart Custom 404 Error Page to get the job done without coding.
More importantly, regularly scan your website for 404 errors using Hostinger’s built-in AI Troubleshooter or third-party tools like Google Search Console.
Did you know?
Available for Hostinger’s Managed WordPress Hosting users, AI Troubleshooter automatically detects and fixes common errors affecting the website, including 404.
410: Gone
The 410 Gone status code can benefit your SEO when used on permanently removed pages. It’s more effective than 404 Not Found because it clearly tells search engines to remove the page from their index.
However, using it on pages with valuable backlinks or significant traffic can result in lost link equity and SEO value. It can also confuse users if there’s no clear alternative to the page.
Only use 410 for pages you want to remove permanently and don’t plan to replace. Better yet, redirect visitors and search engines to another relevant page using a 301.
500: Internal Server Error
This status code can make it harder for search engines to crawl your site, leading to missed opportunities and unindexed pages. If the error lasts too long, search engines might view your site as unreliable, potentially affecting your rankings.
For WordPress sites, bad plugins and a corrupted .htaccess file are common causes of a 500 Internal Server Error. Check out our tutorial on fixing the 500 HTTP error for troubleshooting steps and contact your hosting provider if the error persists.
503: Service Unavailable
The 503 Service Unavailable error means the server is temporarily down, usually due to maintenance or overload. Unlike the 500 error, it’s usually planned.
While short-term 503 errors won’t hurt your SEO much, leaving them unresolved for too long can lead to lost traffic, higher bounce rates, and lower rankings.
To fix it, finish up your maintenance or reduce the server load. You can also try other troubleshooting methods in our 503 Service Unavailable tutorial. If nothing works, check with your hosting provider to see if the problem is from their end.
HTTP status codes FAQ
How many HTTP status codes are there?
The IANA registry lists status codes from 100 to 599. Only 63 are standardized and widely used, while the rest are unassigned.
Should I check my site for HTTP status code errors?
Absolutely! Checking for and solving HTTP status code errors helps improve your site’s performance and user experience and protects your search rankings.
How do I fix 4XX and 5XX HTTP status code errors?
Since 4XX errors come from the client side, check for URL typos or update permissions to resolve them. For 5XX server errors, review your server settings, logs, and resources. Contact your hosting provider if needed.