HTTP Status Codes: A Complete List + Explanations

Carlos Silva

Mar 08, 202310 min read
HTTP status codes

TABLE OF CONTENTS

What Are HTTP Status Codes?

An HTTP status code is a three-digit number a server generates in response to a browser’s request. Like 404, for example, which you’ve likely seen before.

404 HTTP status code

Every time you visit a website, your browser sends a request to the site’s server. Then, the server responds with an HTTP code status. 

It’s like they’re having a conversation. And each code indicates whether things are working or something is wrong. 

The first digit in each status code begins with a number between one and five, indicating the code’s category. The second two digits are for specific information under the category. 

For example, let’s use 404 again. 

The first digit (4) indicates a client error. And specifically, 404 means the server couldn’t find the requested resource. 

Meanwhile, 402 also shows a client error. And the second and third digits tell us the server found the page but can’t access it due to a payment being required.

Let’s look at the different HTTP status categories and codes and how they can affect your SEO.

The Complete List of HTTP Status Codes

Status Code

Function

1XX — Informational

 

100

Continue

101

Switching Protocols

102

Processing

103

Early Hints

   

2XX — Success

 

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

421

Misdirected Request

422

Unprocessable Content

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

511

Network Authentication Required

The Different HTTP Status Codes Explained

There are five different HTTP status code categories (or classes). Each one represents a different response from the server to the browser.

1XX — Informational codes: The server acknowledges and is processing the request.

2XX — Success codes: The server successfully received, understood, and processed the request.

3XX — Redirection codes: The server received the request, but there’s a redirect to somewhere else (or, in rare cases, some additional action other than a redirect must be completed). 

4XX — Client error codes: The server couldn’t find (or reach) the page or website. This is an error on the site’s side. 

5XX — Server error codes: The client made a valid request, but the server failed to complete the request. 

Different HTTP status codes explained

1XX HTTP Status Codes

This category is informational, temporary, and invisible to the client. It indicates the server received the request and will proceed with it. 

100 — Continue: This interim status code means the server received the initial request, and the client should continue.

101 — Switching protocols: This code is a response to an Upgrade header field request and states the protocol the server will switch to.

102 — Processing: This response indicates the server received and is processing the request, but no response is yet available. 

103 — Early hints: This code is used with the Link header and allows the browser to preload resources while the server prepares a response. 

2XX HTTP Status Codes 

This status code category encompasses successful responses. 

200 — OK: This is the standard response for successful HTTP requests. The actual meaning of the response depends on the request method used:

  • GET: Resource obtained and is in the message body
  • HEAD: Headers are included in the response
  • POST or PUT: Resource describing the result of the action sent is in the message body
  • TRACE: Message body contains the request message as received by the server

201 — Created: The request succeeded and a new resource was created. This is usually the response after POST or PUT requests. 

202 — Accepted: The request was accepted but is still in progress. It’s used for cases where another server handles the request or for batch processing. 

203 — Non-Authoritative Information: The data returned isn’t from the origin server. Instead, it’s a modified version collected from a third party. 

204 — No Content: The request was successfully processed, but there is no content. The headers may be useful. 

205 — Reset Content: The server fulfilled the request but asked the user to reset the document.

206 — Partial Content: The server is delivering part of the resource. This response is used when the client sends a Range header to request only part of a resource. 

207 — Multi-Status: Provides the statuses of multiple resources, depending on how many sub-requests were made. 

208 — Already Reported: The members of a DAV:propstat element have already been listed and won’t be included again. 

226 — IM used: The server completed a GET request. And the response indicates one or more instance-manipulation results. 

3XX HTTP Status Codes

The status codes in this category show the resource is in a different location, and the user gets redirected as a result. 

300 — Multiple Choice: The request has more than one possible response. And the user should choose one of them. 

301 — Moved Permanently: This redirect status code indicates the requested resource has permanently moved to a new URL. The browser displays the new URL.

302 — Found: Previously known as “Moved Temporarily,” this code indicates the requested resource has temporarily moved to a new URL. 

303 — See Other: The server redirects the user to the requested resource with a GET request at another URL. 

304 — Not Modified: Used for caching purposes. The response hasn’t been modified, so the client can continue to use the same cached version of the requested resource. 

307 — Temporary Redirect: The requested resource temporarily moved to a different URL. The only difference vis-a-vis the 302 code is the user must not change the HTTP method used.

308 — Permanent Redirect: The requested resource permanently moved to a different URL. The difference between this code and 301 is the user must not change the HTTP request method.

4XX HTTP Status Codes

This category indicates the server can’t reach a page due to an error on the client side. 

400 — Bad Request: The server can’t or won’t process the request due to a client error. For example, invalid request message framing, deceptive request routing, size too large, etc.

401 — Unauthorized: The user doesn’t have valid authentication credentials to get the requested resource.

402 — Payment Required: Reserved for future use; it was initially intended for digital payment systems. It’s very rarely used, and no standard convention regulates it. 

403 — Forbidden: The client doesn’t have access rights to the content. For example, it may require a password. Unlike the 401 HTTP error code, the server does know the client’s identity. 

404 — Not Found: The server can’t find the requested resource, and no redirection has been set. 404 errors can harm your SEO efforts. 

405 — Method Not Allowed: The server supports the request method, but the target resource doesn’t. 

406 — Not Acceptable: The server doesn’t find any content that satisfies the criteria given by the user according to the Accept headers requested. 

407 — Proxy Authentication Required: This is similar to a 401, but a proxy must authenticate the client to continue. 

408 — Request Timeout: The server timed out waiting because the client didn’t produce a request within the allotted time. 

409 — Conflict: The server can’t fulfill the request because there’s a conflict with the resource. It’ll display information about the problem so the client can fix it and resubmit. 

410 — Gone: The content requested has been permanently deleted from the server and will not be reinstated. 

411 — Length Required: The server rejects the request because it requires a defined

Content-Length header field. 

412 — Precondition Failed: The client indicates preconditions in the header fields that the server fails to meet. 

413 — Payload Too Large: The client’s request is larger than the server’s defined limits, and the server refuses to process it. 

414 — URI Too Long: The URI (Uniform Resource Identifier) requested by the client is too long for the server to process. 

415 — Unsupported Media Type: The request uses a media format the server does not support. 

416 — Range Not Satisfiable: The server can’t fulfill the value indicated in the request’s Range header field. 

417 — Expectation Failed: The server can’t meet the requirements indicated by the Expect request header field.

421 — Misdirected Request: The client sends a request to a server that can’t produce a response. 

422 — Unprocessable Entity: The client correctly sends the request, but the server can’t process it because of semantic errors or similar issues. 

423 — Locked: The requested method’s resource is locked and inaccessible. 

424 — Failed Dependency: The request failed because a request the initial request depended on also failed. 

425 — Too Early: The server is unwilling to process a request that might be replayed.

426 — Update Required: The server refuses to process the request using the current protocol unless the client upgrades to a different protocol. 

428 — Precondition Required: The server needs the request to be conditional. 

429 — Too Many Requests: The user sends too many requests in a certain amount of time. 

431 — Request Header Fields Too Large: The server can’t process the request because the header fields are too large. 

451 — Unavailable for Legal Reasons: The user requests a resource the server can’t legally provide. 

5XX HTTP Status Codes

This category includes errors on the server side. 

They can be detrimental to your SEO, as search engines can prompt crawlers to slow down with crawling and remove indexed URLs that continually return these errors.

500 — Internal Server Error: The server has encountered an unexpected error and cannot complete the request. 

501 — Not Implemented: The server can’t fulfill the request or doesn’t recognize the request method. 

502 — Bad Gateway: The server acts as a gateway and gets an invalid response from an inbound host.

503 — Service Unavailable: The server is unable to process the request. This often occurs when a server is overloaded or down for maintenance. 

504 — Gateway Timeout: The server was acting as a gateway or proxy and timed out, waiting for a response. 

505 — HTTP Version Not Supported: The server doesn’t support the HTTP version in the request.

506 — Variant Also Negotiates: The server has an internal configuration error. 

507 — Insufficient Storage: The server doesn’t have enough storage to process the request successfully. 

508 — Loop Detected: The server detects an infinite loop while processing the request. 

511 — Network Authentication Required: The client must be authenticated to access the network. The error should include a link where the user can submit credentials. 

How to Check the HTTP Status Code of a Page

Some status codes are visible, while others are not. If you want to check a page’s HTTP status code, you can use your browser, Google Search Console, or an SEO tool. 

For example, open any page with the Chrome web browser and right-click anywhere on the screen. 

Then, click “Inspect.” 

Navigate to inspect option

Now, select “Network” on the top menu.

Network option on the top menu

You should see the status codes under the “Status” column. 

Status column highlighted

Each row represents a resource. And each column represents information about the resource. 

The top resource is usually the HTML document. And the last resource is whatever was requested last. 

You’d use this web browser method if you don’t own or manage the website you’re inspecting. 

If you do own the webpage, the best way to check its HTTP status code is to use Google Search Console. 

Start by entering the URL, clicking “View Crawled Page,” and then “More Info.”

You’ll see the status code under “HTTP Response.”

HTTP Response

However, if you want to check for error codes specifically, you’re better off using an SEO tool.

For example, after crawling your site with Semrush’s Site Audit, you’ll see 4XX and 5XX status codes under the “Issues” tab. 

Issues tab in Site Audit tool

HTTP Status Codes and SEO

Search engine bots, like Google’s Googlebot, record status codes as they crawl your site and use the data to evaluate your site’s health.

Which impacts your site’s SEO. 

Here are the most important HTTP status codes to know and understand if you’re concerned about SEO:

200 OK

The 200 HTTP status code is a success message. It indicates that the page functions properly for bots and visitors. 

This is the status code you should expect to see for every important, functioning page on your site. 

301 Moved Permanently

301 redirect codes mean bots and visitors who land on the page will be redirected to another URL. 

Use 301 redirects to inform search engines that the redirect is permanent and that link equity should pass through to the new URL. 

404 Page Not Found

A 404 HTTP status code may negatively impact your site’s SEO performance. 

Search engines won’t index pages that return a 404 error. And any backlinks pointing to it will no longer give link value to the page. 

If the site returns an error by mistake, fix it immediately. Especially if it’s an important page in terms of traffic, ranking, ecommerce value, etc. 

The best practice is to create a 301 redirect to a similar page that serves the same intent. 

However, if you don’t have a relevant page to redirect users to, you can create a custom 404 page

Custom 404 pages help visitors find what they’re looking for and encourage them to explore your site. 

5XX Server Errors

Server errors affect access to your site. Which means they can hurt your rankings and cause a negative user experience.

5XX server errors also slow down the crawling process. If the problem persists, search engines may deem your site low-quality and can deindex the pages returning these errors. 

Keep a close eye on these status codes and fix them as soon as possible. 

Find and Fix HTTP Status Code Errors

HTTP status code errors can hurt your SEO and create a poor user experience. 

You can use Semrush’s Site Audit tool to find and fix these errors. Quickly. 

Here’s how:

Start by entering your domain name and clicking the “Create project” button. 

Create project button in Site Audit tool highlighted

In the pop-up, configure your basic settings. Then, click the “Schedule” tab on the left.

Schedule option in Site Audit settings

Schedule the audit to run automatically on your preferred day of the week. And hit “Start Site Audit.

Schedule the audit to run automatically

Once the crawl is complete, you’ll find all status code errors under the “Issues” tab. 

Issues tab overview

And you can hover over “Why and how to fix it” to understand more about each issue and how to fix it. 

Hover over Why and how to fix it section

Keep a close eye on all these technical SEO errors and fix all unintentional ones as soon as possible. 

Share
Author Photo
Carlos Silva is a content marketer with over 8 years of experience in writing, content strategy, and SEO. At Semrush, he’s involved in research, editing, and writing for the English blog. He also owns Semrush’s Educational Newsletter (4M+ subscribers).
More on this