HTTP status codes: Full list and explanations

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 codesFunctions
1XX Informational
100Continue
101Switching Protocols
102Processing
103Early Hints
2XX Successful
200OK
201Created
202Accepted
203Non-Authoritative Information
204No Content
205Reset Content
206Partial Content
207Multi-Status
208Already Reported
226IM Used
3XX Redirection
300Multiple Choices
301Moved Permanently
302Found
303See Other
304Not Modified
307Temporary Redirect
308Permanent Redirect
4XX Client Error
400Bad Request
401Unauthorized
402Payment Required
403Forbidden
404Not Found
405Method Not Allowed
406Not Acceptable
407Proxy Authentication Required
408Request Timeout
409Conflict
410Gone
411Length Required
412Precondition Failed
413Content Too Large
414URI Too Long
415Unsupported Media Type
416Range Not Satisfiable
417Expectation Failed
418I’m a Teapot
421Misdirected Request
422Unprocessable Entity
423Locked
424Failed Dependency
425Too Early
426Upgrade Required
428Precondition Required
429Too Many Requests
431Request Header Fields Too Large
451Unavailable for Legal Reasons
5XX Server Error
500Internal Server Error
501Not Implemented
502Bad Gateway
503Service Unavailable
504Gateway Timeout
505HTTP Version Not Supported
506Variant Also Negotiates
507Insufficient Storage
508Loop Detected
510Not Extended
511Network 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 WebsiteError 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.

Author
The author

Jordana Alexandrea

Jordana is a Senior Content Writer at Hostinger with a background in Information Systems. She has over five years of experience in WordPress and is casually dabbling with PHP and MySQL. Her passion for writing and technology drives her to create tutorials for anyone wanting to build their online presence. Follow her on LinkedIn.