HTTP Status Codes — Complete List & Meanings

Every standard HTTP response code explained in plain English, with when to use it and how it affects SEO. Search, filter or link straight to a code.

Runs in your browser
70 codes

1xx Informational

The request was received and the process is continuing. Browsers handle these automatically.

100

Continue

#

The server received the request headers and the client should go ahead and send the body.

When to use: Sent in reply to a request carrying Expect: 100-continue, so a client can check a large upload will be accepted before transmitting it.

101

Switching Protocols

#

The server agrees to switch to the protocol named in the client’s Upgrade header.

When to use: Used when upgrading an HTTP/1.1 connection to WebSocket (Upgrade: websocket).

102

Processing

#

WebDAV: the server has accepted the request but has not finished processing it yet.

When to use: Prevents a client from timing out during long WebDAV operations. Rarely used today.

103

Early Hints

#

Lets the server send Link headers (preload / preconnect) before the final response is ready.

When to use: Send while the backend is still generating the page so the browser can start fetching critical CSS, fonts or scripts early.

2xx Success

The request was received, understood and accepted.

200

OK

#

The request succeeded. The body contains the requested resource or the result of the action.

When to use: The default success response for GET, and for POST/PUT when you return a body.

SEO impact: The only status that lets a page be indexed with its content. Make sure “not found” pages don’t return 200 (a “soft 404”).

201

Created

#

The request succeeded and a new resource was created.

When to use: Return after a POST (or PUT) that creates something; include a Location header pointing to the new resource.

202

Accepted

#

The request was accepted for processing, but processing has not completed.

When to use: Asynchronous jobs: queue the work and return a URL where the client can poll for the result.

203

Non-Authoritative Information

#

The response was modified by a transforming proxy and differs from the origin server’s 200 response.

When to use: Set by proxies that alter content; origin servers should not normally send it.

204

No Content

#

The request succeeded and there is intentionally no response body.

When to use: DELETE requests, autosave endpoints and CORS preflight responses where nothing needs to be returned.

205

Reset Content

#

The request succeeded and the client should reset the document view (for example clear a form).

When to use: Rare; tells the user agent to reset the form that submitted the request.

206

Partial Content

#

The server is delivering only the byte range requested with a Range header.

When to use: Video streaming, resumable downloads and download managers.

207

Multi-Status

#

WebDAV: the body is an XML document containing separate status codes for several sub-requests.

When to use: Batch WebDAV operations where individual items can succeed or fail.

208

Already Reported

#

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

When to use: Avoids listing the same resource repeatedly inside a Multi-Status response.

226

IM Used

#

The server fulfilled a GET with instance manipulations (delta encoding) applied.

When to use: HTTP delta encoding (RFC 3229); almost never seen in practice.

3xx Redirection

Further action is needed — usually following a Location header to another URL.

300

Multiple Choices

#

The resource has several representations and the client (or user) should choose one.

When to use: Rare; content negotiation is usually done automatically instead.

SEO impact: Google may pick any of the options; prefer a single 301 to the canonical version.

301

Moved Permanently

#

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

When to use: Domain moves, HTTP → HTTPS, changed slugs, merging duplicate pages.

SEO impact: The standard way to move a page: search engines transfer ranking signals and index the new URL. Browsers may change POST to GET on a 301 — use 308 if the method must be kept.

302

Found

#

The resource is temporarily at a different URL.

When to use: Short-lived redirects such as maintenance pages, A/B tests or login flows.

SEO impact: Google treats it as temporary and usually keeps the original URL indexed. If the move is permanent, use 301.

303

See Other

#

The client should fetch the result from another URL using GET.

When to use: The “Post/Redirect/Get” pattern: after a form POST, redirect to a confirmation page.

SEO impact: Treated like a temporary redirect.

304

Not Modified

#

The cached copy is still valid; no body is sent.

When to use: Reply to conditional requests (If-None-Match / If-Modified-Since) when the resource has not changed.

SEO impact: Good for crawl efficiency: Googlebot reuses its cached copy, saving crawl budget.

305

Use Proxy

#

Deprecated. Originally told the client to access the resource through a proxy.

When to use: Do not use — browsers ignore it for security reasons.

307

Temporary Redirect

#

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

When to use: Temporary redirects of POST/PUT requests; browsers also show “307 Internal Redirect” for HSTS upgrades.

SEO impact: Temporary — the original URL usually stays indexed.

308

Permanent Redirect

#

Like 301, but the client must keep the same method and body.

When to use: Permanent moves of API endpoints or form targets where a POST must stay a POST.

SEO impact: Google treats 308 the same as 301 and transfers signals to the new URL.

4xx Client errors

The request contains an error or can’t be fulfilled: the client should change something before retrying.

400

Bad Request

#

The server cannot process the request because it is malformed (bad syntax, invalid JSON, oversized cookie…).

When to use: Validation failures you can’t express more precisely; include an error message in the body.

SEO impact: Pages returning 4xx are dropped from the index.

401

Unauthorized

#

Authentication is required and was missing or invalid. Despite the name it means “unauthenticated”.

When to use: Missing or expired token / credentials. Must include a WWW-Authenticate header.

SEO impact: Crawlers can’t log in, so pages behind 401 are not indexed — which is what you want for private areas.

402

Payment Required

#

Reserved for future use; some APIs use it when a payment or quota upgrade is needed.

When to use: Non-standard billing errors (e.g. a subscription has lapsed).

403

Forbidden

#

The server understood the request but refuses to authorize it. Re-authenticating won’t help.

When to use: The user is logged in but lacks permission, or access is blocked by IP, WAF or file permissions.

SEO impact: Not indexed. Check that your firewall or bot protection isn’t returning 403 to Googlebot by mistake.

404

Not Found

#

The server cannot find the requested resource.

When to use: The URL never existed or was removed without a replacement. Serve a helpful custom 404 page.

SEO impact: Normal and harmless for pages that really don’t exist; Google drops them over time. Redirect (301) URLs that have backlinks or a clear replacement.

405

Method Not Allowed

#

The HTTP method is not supported for this URL (e.g. POST to a read-only page).

When to use: Return with an Allow header listing the supported methods.

406

Not Acceptable

#

The server can’t produce a response matching the request’s Accept headers.

When to use: Strict content negotiation; many APIs simply return their default format instead.

407

Proxy Authentication Required

#

Like 401, but the client must authenticate with a proxy.

When to use: Sent by corporate or forward proxies with a Proxy-Authenticate header.

408

Request Timeout

#

The server timed out waiting for the client to finish sending the request.

When to use: Idle or very slow connections; clients may retry.

409

Conflict

#

The request conflicts with the current state of the resource.

When to use: Edit conflicts, duplicate unique keys, or version mismatches in optimistic locking.

410

Gone

#

The resource was permanently removed and will not come back.

When to use: Deliberately deleted content, expired listings or campaigns.

SEO impact: Google treats 410 like 404 but may drop the URL slightly faster.

411

Length Required

#

The server requires a Content-Length header.

When to use: Uploads without a length when chunked encoding is not accepted.

412

Precondition Failed

#

A condition in the request headers (If-Match, If-Unmodified-Since) evaluated to false.

When to use: Optimistic concurrency: reject an update because the resource changed since the client read it.

413

Content Too Large

#

The request body is larger than the server allows (formerly “Payload Too Large”).

When to use: File uploads above your limit — e.g. nginx’s client_max_body_size.

414

URI Too Long

#

The URL is longer than the server will interpret.

When to use: Usually a bug: huge query strings or redirect loops that keep appending parameters.

415

Unsupported Media Type

#

The body’s format (Content-Type) is not supported.

When to use: An API expecting application/json receives form data or XML.

416

Range Not Satisfiable

#

The Range header asks for bytes outside the file.

When to use: Resuming a download from beyond the end of a file that has shrunk.

417

Expectation Failed

#

The server can’t meet the requirement in the Expect header.

When to use: Rejecting Expect: 100-continue uploads.

418

I’m a teapot

#

An April Fools’ joke from RFC 2324 (Hyper Text Coffee Pot Control Protocol): the server refuses to brew coffee because it is a teapot.

When to use: Easter eggs only. Some services return it to reject automated or unwanted requests, but it carries no standard meaning.

421

Misdirected Request

#

The request reached a server that can’t produce a response for this host.

When to use: HTTP/2 connection reuse across hostnames whose certificate or config doesn’t match.

422

Unprocessable Content

#

The syntax is valid, but the content fails semantic validation.

When to use: Form or API validation errors (missing required field, invalid email). Popular in Rails and Laravel APIs.

423

Locked

#

WebDAV: the resource is locked.

When to use: A file is checked out or locked by another user.

424

Failed Dependency

#

WebDAV: the request failed because a previous request it depended on failed.

When to use: Batch operations where one failure cancels the rest.

425

Too Early

#

The server won’t process a request that might be replayed (TLS 1.3 early data / 0-RTT).

When to use: Protecting non-idempotent requests sent in TLS early data from replay attacks.

426

Upgrade Required

#

The client must switch to a different protocol, named in the Upgrade header.

When to use: Forcing clients onto a newer protocol version.

428

Precondition Required

#

The server requires the request to be conditional (e.g. include If-Match).

When to use: Prevent “lost updates” by refusing unconditional PUT/PATCH requests.

429

Too Many Requests

#

The client sent too many requests in a given time (rate limiting).

When to use: API rate limits and brute-force protection. Include a Retry-After header.

SEO impact: Googlebot slows its crawl rate when it sees 429 (and 503). Persistent 429s can lead to URLs being dropped.

431

Request Header Fields Too Large

#

A header (often Cookie) or all headers together are too large.

When to use: Usually caused by accumulated cookies; clearing cookies for the site fixes it for users.

451

Unavailable For Legal Reasons

#

The resource is blocked for legal reasons — censorship, court orders or regional regulation. The number references Ray Bradbury’s Fahrenheit 451.

When to use: Content removed because of a takedown request or geo-restricted by law.

SEO impact: Treated like other 4xx codes: not indexed.

5xx Server errors

The server failed to fulfil an apparently valid request.

500

Internal Server Error

#

A generic error: the server hit an unexpected condition.

When to use: Unhandled exceptions, crashed scripts, broken .htaccess rules. Check your server logs.

SEO impact: Short outages are tolerated; if 5xx errors persist for days, Google slows crawling and eventually drops URLs.

501

Not Implemented

#

The server doesn’t support the functionality required (often an unknown method).

When to use: A method the server doesn’t recognise at all, as opposed to 405 for a known but disallowed one.

502

Bad Gateway

#

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

When to use: Your app server (PHP-FPM, Node, Gunicorn) crashed or returned garbage behind nginx, a load balancer or a CDN.

SEO impact: Same as other 5xx: temporary is fine, persistent errors hurt crawling and indexing.

503

Service Unavailable

#

The server is temporarily unable to handle the request — overloaded or down for maintenance.

When to use: Planned maintenance or overload. Add Retry-After to say when to come back.

SEO impact: The correct code for planned downtime: Google keeps the page indexed and retries later. Don’t serve it for more than a day or two.

504

Gateway Timeout

#

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

When to use: Slow database queries or upstream APIs exceeding the proxy timeout.

SEO impact: Persistent timeouts reduce crawl rate and can lead to deindexing.

505

HTTP Version Not Supported

#

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

When to use: Very old or very new protocol versions a server can’t handle.

506

Variant Also Negotiates

#

Server misconfiguration: the chosen variant is itself configured to negotiate, creating a loop.

When to use: A content-negotiation configuration error.

507

Insufficient Storage

#

WebDAV: the server can’t store the representation needed to complete the request.

When to use: The disk or user quota is full.

508

Loop Detected

#

WebDAV: the server detected an infinite loop while processing the request.

When to use: Some hosts (e.g. cPanel/CloudLinux) also return it when an account hits its resource limits.

510

Not Extended

#

Further extensions to the request are required (RFC 2774, now historic).

When to use: Practically unused.

511

Network Authentication Required

#

The client must authenticate to gain network access.

When to use: Captive portals on hotel, airport or café Wi-Fi.

Non-standard codes (nginx, Cloudflare)

Not part of the HTTP specification, but common in server logs and error pages.

444

No Response (nginx)

#

nginx closes the connection without sending any response.

When to use: Configured in nginx to drop malicious or unwanted requests silently.

499

Client Closed Request (nginx)

#

Logged by nginx when the client closed the connection before the server answered.

When to use: You’ll see it in logs when users navigate away or a client timeout is shorter than your response time.

520

Web Server Returned an Unknown Error (Cloudflare)

#

Cloudflare received an empty, unknown or unexpected response from the origin server.

When to use: Origin crashes, oversized headers or connection resets. Check the origin’s error logs.

SEO impact: Treated like a 5xx error.

521

Web Server Is Down (Cloudflare)

#

The origin server refused Cloudflare’s connection.

When to use: The web server is stopped or a firewall blocks Cloudflare’s IP ranges.

SEO impact: Treated like a 5xx error.

522

Connection Timed Out (Cloudflare)

#

Cloudflare could not complete a TCP connection to the origin.

When to use: Overloaded origin, wrong DNS record or firewall dropping packets.

SEO impact: Treated like a 5xx error.

524

A Timeout Occurred (Cloudflare)

#

Cloudflare connected to the origin, but it didn’t respond within 100 seconds.

When to use: Long-running requests; move them to background jobs.

SEO impact: Treated like a 5xx error.

525

SSL Handshake Failed (Cloudflare)

#

The TLS handshake between Cloudflare and the origin failed.

When to use: Origin has no valid certificate or doesn’t support SNI/TLS versions Cloudflare uses.

SEO impact: Treated like a 5xx error.

526

Invalid SSL Certificate (Cloudflare)

#

Cloudflare (in Full Strict mode) could not validate the origin’s certificate.

When to use: Expired or self-signed origin certificate — install a valid one or a Cloudflare Origin CA certificate.

SEO impact: Treated like a 5xx error.

Your data never leaves your computer. All processing happens 100% locally in your browser.

How to use the HTTP Status Codes

  1. Type a code (404) or a word (redirect, timeout, rate limit) into the search box.
  2. Filter by class — 1xx informational, 2xx success, 3xx redirects, 4xx client errors, 5xx server errors — or show only the most common codes.
  3. Read what the code means, when to use it and, for redirects and errors, how it affects search engines.
  4. Click the # next to a code to copy a direct link (e.g. /http-status-codes#429) for docs or code reviews.

What are HTTP status codes?

An HTTP status code is the three-digit number a server sends at the start of every response to say how the request went. Your browser, API clients and search engine crawlers all read it before anything else. The first digit defines the class: 1xx informational, 2xx success, 3xx redirection, 4xx client error and 5xx server error. The current definitions live in RFC 9110 (HTTP Semantics, 2022), with a few extensions such as 429 (RFC 6585) and 451 (RFC 7725).

The status codes you’ll meet most

CodeMeaningTypical cause
200OKEverything worked
301 / 308Permanent redirectPage or domain moved
302 / 307Temporary redirectLogin flows, maintenance, A/B tests
304Not ModifiedBrowser cache is still valid
401 / 403Unauthenticated / forbiddenMissing token, insufficient rights, WAF block
404Not FoundWrong URL or deleted page
429Too Many RequestsRate limit exceeded
500Internal Server ErrorBug or crash in the application
502 / 504Bad gateway / timeoutBackend behind a proxy or CDN failed or was too slow
503Service UnavailableMaintenance or overload

How status codes affect SEO

Search engines only index pages that return 200. Permanent redirects (301, 308) pass ranking signals to the new URL, while temporary ones (302, 307) keep the old URL in the index. 404 and 410 remove a page over time — perfectly normal for content that’s gone, but redirect URLs that have backlinks. A soft 404 — an error page that returns 200 — wastes crawl budget and is flagged in Google Search Console. For downtime, return 503 with a Retry-After header: Google keeps your pages indexed and comes back later, whereas long-lasting 5xx errors or 429 responses make Googlebot crawl less and eventually drop URLs.

Choosing the right code for your API

  • Use 201 Created with a Location header after creating a resource and 204 when there’s nothing to return.
  • Distinguish 400 (malformed request), 422 (valid JSON that fails validation), 401 (who are you?) and 403 (I know who you are, but no).
  • Use 409 for conflicts such as duplicate emails and 429 with Retry-After for rate limits.
  • Never return 200 with an error message in the body — clients, monitoring and caches all rely on the status code.

Check what status a live URL returns with the HTTP Header Checker, follow redirect chains with the Redirect Checker, or send your own requests with the API Tester.

Tools that pair well with the HTTP Status Codes

  • Broken Link Checker — Enter a page URL and every link on it — plus images, scripts and stylesheets if you like — is tested live, so you can fix 404s and redirect hops before visitors or Google run into them.
  • Website Down Checker — Find out in seconds whether a website is down for everyone or just for you — with status code, response time and troubleshooting tips.
  • What Is My IP — Your public IP address and everything your browser reveals to the websites you visit — user agent, screen, language, timezone and request headers.
  • User Agent Parser — Decode any User-Agent string into browser, engine, operating system and device — and find out whether it belongs to a search engine, AI crawler or script.

Frequently asked questions

What is the difference between 301 and 302 redirects?
301 means the move is permanent: browsers cache it and search engines transfer rankings to the new URL. 302 is temporary: the original URL stays indexed. Use 308/307 instead if the request method (e.g. POST) must be preserved.
What is the difference between 401 and 403?
401 Unauthorized means you aren’t authenticated — log in or send a valid token. 403 Forbidden means the server knows who you are (or doesn’t care) and still refuses access; logging in again won’t help.
Should I use 404 or 410 for deleted pages?
Both remove the page from search results. 410 Gone states the removal is intentional and permanent and may be processed slightly faster; 404 is fine if you’re unsure.
What does 418 I’m a teapot mean?
It comes from an April Fools’ RFC (2324) about controlling coffee pots over HTTP. It has no real meaning, but it was kept reserved because so many libraries implemented it as an Easter egg.
What is a soft 404?
A page that tells users “not found” but returns status 200. Search engines may index it as a thin page. Make sure your error pages send a real 404 or 410 status.
Which status code should I use during maintenance?
503 Service Unavailable, ideally with a Retry-After header. It tells crawlers the outage is temporary, so your rankings aren’t affected by short maintenance windows.

Related tools