Skip to content
Webmaster Tools
Inspect & debugHTTP Status Codes

HTTP Status Codes

What every status code means.

Class

1xx Informational

Interim responses sent before the final one, while the request is still in progress.

100

Continue

RFC 9110 §15.2.1

The server has the request headers and the client should go on and send the body.

When you see it: Sent in reply to Expect: 100-continue, so a client can learn that a large upload will be accepted before sending it. curl adds that header to big POST bodies.

101

Switching Protocols

RFC 9110 §15.2.2

The server is switching the connection to the protocol named in the Upgrade header.

When you see it: WebSocket handshakes over HTTP/1.1 (Upgrade: websocket). HTTP/2 and HTTP/3 don't use it.

102

Processing

RFC 2518

A WebDAV interim response saying a long-running request is still being worked on.

When you see it: Rarely used: it was left out of the current WebDAV spec (RFC 4918) and most clients ignore it.

103

Early Hints

RFC 8297

Lets the server send Link headers before the final response is ready.

When you see it: Send Link: </app.css>; rel=preload; as=style or rel=preconnect while the backend is still rendering the page, so the browser can start fetching early. Browsers act on it over HTTP/2 and HTTP/3.

SEO and caching: Can shorten Largest Contentful Paint on slow server-rendered pages. Crawlers ignore it.

2xx Success

The request was received, understood and accepted.

200

OK

RFC 9110 §15.3.1 Cacheable by default Full guide

The request succeeded. What the body holds depends on the method: the resource for GET, nothing for HEAD, the outcome for POST.

When you see it: The normal success response.

SEO and caching: A "page not found" or empty search page that answers 200 is a soft 404: search engines may index it or report it in Search Console. Return 404 or 410 instead.

201

Created

RFC 9110 §15.3.2 Full guide

The request created one or more new resources.

When you see it: After a POST or PUT that creates something. Include a Location header with the new resource's URL.

202

Accepted

RFC 9110 §15.3.3

The request was accepted for processing, but the processing hasn't finished (and may still fail).

When you see it: Asynchronous work: queued jobs, batch imports, video encoding. Return a URL where the client can check the job's status.

203

Non-Authoritative Information

RFC 9110 §15.3.4 Cacheable by default

The request succeeded, but a transforming proxy changed the origin server's 200 response.

When you see it: Only proxies send it; an origin server should send 200.

204

No Content

RFC 9110 §15.3.5 Cacheable by default Full guide

The request succeeded and there is no body to send.

When you see it: DELETE, PUT or PATCH requests that return nothing, autosave endpoints and analytics beacons. A 204 must not carry a body, and browsers stay on the current page.

205

Reset Content

RFC 9110 §15.3.6

The request succeeded and the client should reset the document view, for example clear the form that sent it.

When you see it: Rare; browsers don't clear forms on their own when they get it.

206

Partial Content

RFC 9110 §15.3.7 Cacheable by default Full guide

The body contains only the byte ranges asked for in the Range header.

When you see it: Resumable downloads and seeking in audio or video. The response carries Content-Range, or a multipart/byteranges body for several ranges.

207

Multi-Status

RFC 4918 §11.1

A WebDAV response whose XML body holds a separate status for each of several resources.

When you see it: WebDAV PROPFIND and other multi-resource operations. Some APIs borrow it for batch results.

208

Already Reported

RFC 5842 §7.1

Used inside a WebDAV 207 response: the members of this binding were already listed earlier in the same response.

When you see it: WebDAV servers that support bindings, to avoid listing the same collection twice (or looping forever).

226

IM Used

RFC 3229 §10.4.1

The server fulfilled a GET and applied one or more instance manipulations, such as delta encoding, to the response.

When you see it: HTTP delta encoding, which is almost never deployed.

3xx Redirection

The client has to take another step, usually following the Location header, to complete the request.

300

Multiple Choices

RFC 9110 §15.4.1 Cacheable by default

The resource has several representations and the client or user should pick one.

When you see it: Rare: content negotiation normally chooses automatically.

301

Moved Permanently

RFC 9110 §15.4.2 Cacheable by default Full guide

The resource has a new permanent URL, given in the Location header.

When you see it: Domain moves, HTTP to HTTPS, renamed URLs. For historical reasons clients may turn a POST into a GET when following it, so use 308 for API endpoints that must keep the method.

SEO and caching: A strong signal: search engines index the new URL and pass ranking signals to it. Keep the redirect in place for at least a year. Browsers cache 301s hard, so test before you ship one.

302

Found

RFC 9110 §15.4.3 Full guide

The resource is temporarily at another URL; clients should keep using the original one.

When you see it: Temporary moves, login redirects, A/B tests. Like 301, browsers turn a POST into a GET when following it; 307 keeps the method.

SEO and caching: Treated as temporary, so the original URL stays indexed, though a 302 left in place for a long time may end up treated as permanent. Use 301 or 308 for permanent moves. Not cached unless Cache-Control or Expires allow it.

303

See Other

RFC 9110 §15.4.4

Points to another resource, which the client fetches with GET (or HEAD) whatever the original method was.

When you see it: Post/Redirect/Get: after a form POST, redirect to a result page so reloading doesn't submit the form again.

SEO and caching: Search engines treat it as a temporary redirect.

304

Not Modified

RFC 9110 §15.4.5 Full guide

The cached copy the client already has is still valid, so no body is sent.

When you see it: The answer to a conditional GET or HEAD with If-None-Match (ETag) or If-Modified-Since. It must repeat the caching headers a 200 would have had (Cache-Control, ETag, Expires, Vary). Only send it to conditional requests.

SEO and caching: Saves bandwidth and crawl budget: Googlebot sends conditional requests and a 304 tells it the page hasn't changed.

305

Use Proxy

RFC 9110 §15.4.6 Deprecated

Told the client to repeat the request through the proxy named in Location.

When you see it: Deprecated for security reasons; browsers ignore it. Don't send it.

306

(Unused)

RFC 9110 §15.4.7 Unused

Was "Switch Proxy" in an early draft and is now reserved.

When you see it: Never send it.

307

Temporary Redirect

RFC 9110 §15.4.8 Full guide

Like 302, but the client must repeat the request to the new URL with the same method and body.

When you see it: Temporary redirects for APIs and form handlers. Browsers also show an internal 307 when HSTS upgrades a link from http:// to https:// without touching the network.

SEO and caching: Temporary, like 302: the original URL stays indexed.

308

Permanent Redirect

RFC 9110 §15.4.9 Cacheable by default Full guide

Like 301, but the client must keep the method and body when following it. First defined in RFC 7538.

When you see it: Permanent moves of API endpoints or form targets, and anywhere a 301 would do.

SEO and caching: Search engines treat it the same as 301.

4xx Client errors

Something is wrong with the request itself: fix it before retrying.

400

Bad Request

RFC 9110 §15.5.1 Full guide

The server won't process the request because of a client error: malformed syntax, invalid framing or unparseable content.

When you see it: Generic input errors when nothing more specific fits (422 is more precise for well-formed but invalid data). Common causes: broken JSON, an invalid query string, corrupted or oversized cookies.

401

Unauthorized

RFC 9110 §15.5.2 Full guide

The request has no valid authentication credentials for the resource.

When you see it: A missing, expired or wrong token or password. The response must include a WWW-Authenticate challenge. If the user is logged in but not allowed, send 403.

SEO and caching: Pages behind a 401 are not indexed.

402

Payment Required

RFC 9110 §15.5.3

Reserved for future use; it has no standard meaning.

When you see it: Some APIs use it for billing problems, such as an exhausted quota or a declined card.

403

Forbidden

RFC 9110 §15.5.4 Full guide

The server understood the request but refuses to fulfil it, and authenticating again won't help.

When you see it: Logged-in users without permission, IP or country blocks, firewall (WAF) rules, a directory with listing disabled, wrong file permissions. A server may answer 404 instead to hide that the resource exists.

SEO and caching: Not indexed. Don't use 401 or 403 to slow down crawlers; use 429 or 503 for that.

404

Not Found

RFC 9110 §15.5.5 Cacheable by default Full guide

The server has nothing at this URL, or won't say whether it does.

When you see it: Pages that were deleted or never existed, typos and broken links.

SEO and caching: Google drops 404 URLs from its index over time and doesn't penalize a site for having them. Redirect only when there is a real replacement page; redirecting everything to the home page is treated as a soft 404.

405

Method Not Allowed

RFC 9110 §15.5.6 Cacheable by default Full guide

The resource exists but doesn't support this method.

When you see it: For example a POST to a read-only URL. The response must include an Allow header listing the supported methods.

406

Not Acceptable

RFC 9110 §15.5.7

The server can't produce a representation that matches the request's Accept headers, and won't send a default.

When you see it: Rare: most servers send a default representation instead. On shared hosting it often comes from ModSecurity blocking a request it considers an attack.

407

Proxy Authentication Required

RFC 9110 §15.5.8

Like 401, but the client has to authenticate with the proxy.

When you see it: Corporate proxies. The response includes a Proxy-Authenticate challenge.

408

Request Timeout

RFC 9110 §15.5.9 Full guide

The server didn't receive a complete request in the time it was prepared to wait, and closes the connection.

When you see it: Slow clients and idle keep-alive connections. Clients can repeat the request on a new connection.

409

Conflict

RFC 9110 §15.5.10 Full guide

The request conflicts with the current state of the resource.

When you see it: Edit conflicts, duplicate unique values (an email already registered), version mismatches. Explain the conflict in the body so the client can resolve it.

410

Gone

RFC 9110 §15.5.11 Cacheable by default Full guide

The resource was removed on purpose and isn't coming back; there is no forwarding address.

When you see it: Deleted products, expired promotions, content you took down deliberately.

SEO and caching: A slightly stronger signal than 404: search engines may drop the URL a little sooner, but both end up removed from the index.

411

Length Required

RFC 9110 §15.5.12

The server refuses a request with a body but no Content-Length header.

When you see it: Chunked uploads to servers that need the length up front.

412

Precondition Failed

RFC 9110 §15.5.13

A condition in the request headers, such as If-Match or If-Unmodified-Since, turned out false.

When you see it: Optimistic concurrency: refuse a PUT when the resource's ETag changed since the client read it, so nobody overwrites someone else's edit.

413

Content Too Large

RFC 9110 §15.5.14 Full guide

The request body is larger than the server is willing to process. Formerly "Payload Too Large".

When you see it: Upload limits, such as nginx's client_max_body_size (1 MB by default) or PHP's upload_max_filesize. Send Retry-After if the limit is temporary.

414

URI Too Long

RFC 9110 §15.5.15 Cacheable by default

The URL is longer than the server will interpret.

When you see it: Huge GET queries that should be a POST, or redirect loops that keep appending parameters.

415

Unsupported Media Type

RFC 9110 §15.5.16 Full guide

The server doesn't support the body's Content-Type or Content-Encoding.

When you see it: JSON sent without Content-Type: application/json, or an upload in a format the endpoint doesn't take. The response can list what it accepts in Accept or Accept-Encoding.

416

Range Not Satisfiable

RFC 9110 §15.5.17

None of the byte ranges in the Range header fit the resource.

When you see it: Resuming a download of a file that has since shrunk or changed. The response should include Content-Range: bytes */length.

417

Expectation Failed

RFC 9110 §15.5.18

The server, or a proxy on the way, can't meet the request's Expect header.

When you see it: Usually Expect: 100-continue sent through a proxy that doesn't support it. Retrying without the header fixes it.

418

(Unused)

RFC 9110 §15.5.19 Unused Full guide

Reserved. RFC 2324, a 1998 April Fools' joke, defined it as "I'm a teapot", and RFC 9110 keeps it unassigned because some software still sends it.

When you see it: Don't rely on it for anything; send a real 4xx code.

421

Misdirected Request

RFC 9110 §15.5.20

The request reached a server that isn't able to answer for this origin (scheme, host and port). First defined in RFC 7540.

When you see it: HTTP/2 or HTTP/3 connection reuse across host names that share an IP address and certificate but are served by different servers, or an SNI and Host mismatch. Clients can retry on a new connection.

422

Unprocessable Content

RFC 9110 §15.5.21 Full guide

The request is well-formed, with the right content type, but its contents are invalid. Formerly WebDAV's "Unprocessable Entity".

When you see it: Validation errors in APIs: a required field missing, a date in the past, an invalid email. Rails, Laravel and FastAPI use it.

423

Locked

RFC 4918 §11.3

The WebDAV resource is locked.

When you see it: Another client holds a WebDAV lock on the file.

424

Failed Dependency

RFC 4918 §11.4

The WebDAV method failed because another action it depended on failed.

When you see it: Part of a PROPPATCH or other multi-step WebDAV request failing.

425

Too Early

RFC 8470 §5.2

The server won't process a request that could be replayed, because it arrived in TLS 1.3 early data (0-RTT).

When you see it: Servers and CDNs that accept 0-RTT for safe requests only. The client retries after the TLS handshake completes.

426

Upgrade Required

RFC 9110 §15.5.22

The server refuses to handle the request over the current protocol.

When you see it: The response must include an Upgrade header naming the protocol the client should switch to.

428

Precondition Required

RFC 6585 §3

The server requires the request to be conditional.

When you see it: APIs that insist on If-Match for updates, to prevent the lost-update problem.

429

Too Many Requests

RFC 6585 §4 Full guide

The client has sent too many requests in a given time: it hit a rate limit.

When you see it: API rate limits and abuse protection. Include Retry-After so clients know when to try again.

SEO and caching: Googlebot treats 429 like a 5xx error and slows down crawling; served for a long time, it can get URLs dropped from the index.

431

Request Header Fields Too Large

RFC 6585 §5 Full guide

The request headers, or one header, are too large for the server.

When you see it: Usually too many or very large cookies; clearing the site's cookies fixes it for a user.

451

Unavailable For Legal Reasons

RFC 7725 §3

Access was denied because of a legal demand, such as a court order, government censorship or sanctions.

When you see it: Explain the demand in the body; a Link header with rel="blocked-by" can name the party that applied the block.

5xx Server errors

The server failed to fulfil a request that may well be valid.

500

Internal Server Error

RFC 9110 §15.6.1 Full guide

The server hit an unexpected condition that stopped it from fulfilling the request.

When you see it: Uncaught exceptions, crashed scripts, a syntax error in .htaccess, bad file permissions on scripts. The server's error log says what happened.

SEO and caching: Occasional 5xx errors do no harm, but persistent ones make search engines crawl less and eventually drop the affected URLs.

501

Not Implemented

RFC 9110 §15.6.2 Cacheable by default Full guide

The server doesn't support the functionality needed, typically a method it doesn't recognize at all.

When you see it: Unknown methods. For a method the server knows but the resource doesn't allow, send 405.

502

Bad Gateway

RFC 9110 §15.6.3 Full guide

A gateway or proxy got an invalid response from the upstream server.

When you see it: The application behind nginx or a load balancer crashed, isn't listening, is on the wrong port, or closed the connection (for example PHP-FPM down).

503

Service Unavailable

RFC 9110 §15.6.4 Full guide

The server can't handle the request right now because of overload or maintenance; it should work later.

When you see it: Planned maintenance, overload protection, a backend pool with no healthy servers. Send Retry-After with the expected wait.

SEO and caching: The right code for maintenance: search engines retry later and keep pages indexed during a short outage. Serving 503 for more than a few days can get URLs dropped.

504

Gateway Timeout

RFC 9110 §15.6.5 Full guide

A gateway or proxy didn't get a response from the upstream server in time.

When you see it: Slow database queries or long requests that outlast the proxy's timeout (60 seconds by default for nginx's proxy_read_timeout).

505

HTTP Version Not Supported

RFC 9110 §15.6.6

The server doesn't support the HTTP major version used in the request.

When you see it: Very old or misbehaving clients.

506

Variant Also Negotiates

RFC 2295 §8.1

A server configuration error in transparent content negotiation: the chosen variant is itself set up to negotiate, which would loop.

When you see it: Misconfigured Apache content negotiation; rare.

507

Insufficient Storage

RFC 4918 §11.5

The server can't store what the request needs it to store.

When you see it: A full disk or exhausted quota on a WebDAV or file storage server.

Unofficial and vendor-specific codes

These codes are not in the IANA registry. Each is specific to the software or service named next to it, and other servers may use the same number differently.
419

Page Expired

Laravel

The CSRF token was missing or expired, usually because the session timed out while a form was open.

When you see it: Reload the page to get a fresh token and submit again.

444

No Response

nginx

nginx closed the connection without sending anything; the code appears only in its logs.

When you see it: return 444; drops unwanted traffic, such as requests for unknown host names. Clients see an empty reply.

494

Request Header Too Large

nginx

nginx's internal code for oversized headers; the client receives a 400 "Request Header Or Cookie Too Large" page.

When you see it: Large cookies; raise large_client_header_buffers or trim the cookies.

495

SSL Certificate Error

nginx

The client certificate failed verification; the client receives a 400.

When you see it: Mutual TLS setups with ssl_verify_client.

496

SSL Certificate Required

nginx

A client certificate was required but none was sent; the client receives a 400.

When you see it: Mutual TLS setups with ssl_verify_client on.

497

HTTP Request Sent to HTTPS Port

nginx

A plain HTTP request arrived on a port that expects TLS; the client receives a 400.

When you see it: Often handled with error_page 497 to redirect to https://.

499

Client Closed Request

nginx Full guide

The client closed the connection before nginx could send the response; it appears only in logs.

When you see it: Users navigating away, or client and load balancer timeouts shorter than the time the backend needs.

508

Loop Detected

RFC 5842 §7.2

The WebDAV server found an infinite loop while processing a request with Depth: infinity.

When you see it: WebDAV bindings that point back at themselves. Some shared hosts also send 508 "Resource Limit Is Reached" when an account exceeds its CPU or process limits, which is a non-standard use.

509

Bandwidth Limit Exceeded

cPanel / Apache

The hosting account used up its bandwidth allowance.

When you see it: Shared hosting quotas; it clears when the billing period resets or the limit is raised.

510

Not Extended

RFC 2774 §7 Obsolete

The request didn't meet the policy for accessing the resource under the HTTP Extension Framework.

When you see it: Obsolete: the Extension Framework was never adopted and RFC 2774 is now Historic.

511

Network Authentication Required

RFC 6585 §6

The client has to authenticate to get network access.

When you see it: Captive portals on hotel, airport and café Wi-Fi. Origin servers shouldn't send it.

520

Web Server Returned an Unknown Error

Cloudflare Full guide

The origin server sent an empty, unknown or unexpected response to Cloudflare.

When you see it: Origin crashes, reset connections, or response headers larger than Cloudflare accepts.

521

Web Server Is Down

Cloudflare Full guide

The origin server refused Cloudflare's connection.

When you see it: The web server isn't running, or a firewall blocks Cloudflare's IP ranges.

522

Connection Timed Out

Cloudflare Full guide

Cloudflare couldn't complete a TCP connection to the origin in time.

When you see it: An overloaded origin, or a firewall silently dropping Cloudflare's packets.

523

Origin Is Unreachable

Cloudflare Full guide

Cloudflare can't reach the origin server at all.

When you see it: A DNS record pointing at the wrong IP address, or a routing problem.

524

A Timeout Occurred

Cloudflare Full guide

Cloudflare connected to the origin, but it didn't send an HTTP response in time (100 seconds by default).

When you see it: Long-running requests; move them to a background job or stream progress.

525

SSL Handshake Failed

Cloudflare Full guide

The TLS handshake between Cloudflare and the origin failed.

When you see it: SSL mode Full or Full (strict) with no certificate, no SNI support or no shared cipher on the origin.

526

Invalid SSL Certificate

Cloudflare Full guide

In Full (strict) mode, the origin's certificate is invalid.

When you see it: An expired or self-signed origin certificate, or one for a different host name. A Cloudflare Origin CA certificate fixes it.

530

Origin Error (with a 1xxx code)

Cloudflare

Cloudflare returns 530 together with a 1xxx error such as 1016 (origin DNS error).

When you see it: Look up the 1xxx number shown on the error page.

No status code matches. Try a number like 503 or a word like "redirect".

Sources: the IANA HTTP Status Code Registry and RFC 9110 (HTTP Semantics), plus the RFCs named on each code. The unofficial group is documented by the vendors themselves.

About the HTTP Status Codes reference

This page lists every code in the IANA HTTP Status Code Registry, named as in RFC 9110 and the other RFCs that registered them. Each entry explains what the code means, when servers send it, and, where it matters, what it means for search engines and caches. Codes that caches may store without explicit headers are marked "Cacheable by default". A separate group covers unofficial codes from nginx, Cloudflare, Laravel and shared hosts, which are not standards.

How to use it

  1. Search by number or by word, such as "redirect" or "Retry-After".
  2. Narrow the list with the class buttons, or jump to a class.
  3. Link to a single code with #404 at the end of the page URL.

Examples

Common questions

Should I use 301 or 308, 302 or 307?

For web pages either works: search engines treat 301 and 308 as permanent and 302 and 307 as temporary. The difference is the method: clients may turn a POST into a GET when following a 301 or 302, but must keep it for 307 and 308, so APIs should use those.

Is 404 or 410 better for removed pages?

Both remove the URL from search results in time; 410 says the removal is deliberate and may be processed a little sooner. Redirect only to a genuine replacement.

What should a maintenance page return?

503 with a Retry-After header. Search engines retry later and keep your pages indexed during a short outage.

What is 418?

A joke from a 1998 April Fools' RFC. RFC 9110 marks it unused and reserved.