HTTP Errors & Site Reachability Guides

Guides for HTTP status errors (403, 404, 5xx), redirect loops, connection failures, security headers, and open ports. Each guide includes a free check for your URL.

HTTP — 96 guides

301 vs 302 Redirect: Caching, SEO, and 307/308

301 vs 302: what each tells browsers and Google, why a wrong 301 is hard to undo, when to use 307, 308 or 303, and how to check a redirect chain.

Diagnose

307 vs 308 Redirect: Method-Preserving Redirects

307 vs 308 redirects keep the request method — unlike 301/302, which turn POST into GET. Check which code your server returns. Free instant check.

Diagnose

400 Bad Request Checklist

400 Bad Request? Separate malformed syntax from oversized headers or cookies, then see which layer rejected it. Free instant check, no sign-up.

Diagnose

401 Unauthorized: Fix Rejected or Missing Credentials

401 Unauthorized? Credentials are missing or rejected. Tell an expired token from a stripped header from a 403 in 3 checks. Free instant check, no sign-up.

Diagnose

402 Payment Required: Not an Error, a Gate

402 Payment Required means access is gated behind payment, not a crash. Tell a quota block from a frozen store in 3 checks. Free instant check, no sign-up.

Diagnose

403 Forbidden: Find What's Blocking the Request

403 Forbidden means a server or firewall refused the request. Find which layer said no, then fix permissions, missing index, deny rules, WAF or geo blocks.

Diagnose

404 Not Found: What It Means and How to Fix It

What 404 Not Found means, how to tell which layer returned it, the usual causes (rewrites, SPA fallback, case, trailing slash) and how to handle deleted pages.

Diagnose

405 Method Not Allowed: What It Means and How to Fix It

405 means the server knows the URL but refuses that HTTP method there. How to read the Allow header, find which layer answered, and fix the usual causes.

Diagnose

406 Not Acceptable: Fix the Accept Header Mismatch

406 Not Acceptable means the server can't produce a response matching your Accept header. Tell it from 415, then fix the header in 4 checks. Free instant check, no sign-up.

Diagnose

407 Proxy Authentication Required: Fix Proxy Auth

407 Proxy Authentication Required means a proxy rejected your credentials, not the origin. Tell it from a 401 in 3 checks. Free instant check, no sign-up.

Diagnose

408 Request Timeout: Fix a Slow or Stalled Request

408 Request Timeout: the server quit waiting for the request, not the reply. Separate a slow client from a reaped keepalive. Free instant check, no sign-up.

Diagnose

409 Conflict: Why Your Request Clashes With State

409 Conflict means the request was valid but fought the resource's current state and lost. Tell a duplicate key from a stale ETag from a real race. Free instant check, no sign-up.

Diagnose

410 Gone: When to Use It vs 404

410 Gone means a resource is intentionally, permanently removed - not 404. When to serve it, how Google treats each, verify in 3 checks. Free HTTP check.

Diagnose

411 Length Required: Add a Content-Length

411 Length Required means the server rejected a request with no Content-Length. Buffer the body, set the length, resend. Free instant check, no sign-up.

Diagnose

412 Precondition Failed: Stale ETag, Fix If-Match

412 Precondition Failed means your If-Match ETag no longer matches the server version. Spot the stale write and CDN ETag trap. Free instant check, no sign-up.

Diagnose

413 Payload Too Large: Find the Layer That Set the Limit

413 means some layer refused a request body as too big. How to find which one (Cloudflare, nginx, Apache, PHP, your app) and raise or route around it.

Diagnose

414 Request-URI Too Large: Fix

414 Request-URI Too Large: the URL exceeded the server's request-line limit. Check query bloat, redirect loops, server config. Free instant check, no sign-up.

Diagnose

415 Unsupported Media Type: Fix the Content-Type

415 Unsupported Media Type means the server rejects your body's Content-Type. Tell it from 400, 406, and 422, then fix it. Free instant check, no sign-up.

Diagnose

416 Range Not Satisfiable: Why Byte Ranges Fail

416 Range Not Satisfiable means your Range header asked for bytes past the file's end. Find the real length in 3 checks. Free instant check, no sign-up.

Diagnose

417 Expectation Failed: Drop the Expect Header

417 Expectation Failed means a proxy rejected your Expect: 100-continue. Resend without the header, find where the 417 starts. Free instant check, no sign-up.

Diagnose

421 Misdirected Request Checklist

421 Misdirected Request? Separate HTTP/2 connection reuse from an origin SNI or certificate mismatch in 3 checks. Free instant check, no sign-up.

Diagnose

422 Unprocessable Content: Fix Failed Validation

422 Unprocessable Content means your body parsed but failed validation. Read the field errors, tell it from 400 and 415. Free instant check, no sign-up.

Diagnose

423 Locked: Trace the Lock and Release It

423 Locked means a resource is locked against changes. Find the lock that's blocking you in 3 steps, then release it. Free instant check, no sign-up.

Diagnose

424 Failed Dependency: Trace the Upstream Failure

424 Failed Dependency means your request relied on another that failed first. Find the real upstream error in 3 steps and confirm the status. Free instant check, no sign-up.

Diagnose

425 Too Early: Why 0-RTT Requests Get Rejected

425 Too Early means a server refused a TLS 1.3 early-data request over replay risk. See why it fires and how to retry safely. Free instant check, no sign-up.

Diagnose

426 Upgrade Required: Fix the Protocol Mismatch

426 Upgrade Required means the server won't answer over this protocol. Read the Upgrade header, then check TLS and HTTP version. Free instant check, no sign-up.

Diagnose

428 Precondition Required: Add If-Match to Fix

428 Precondition Required means the server refuses your PUT/PATCH without an If-Match ETag. GET the ETag, resend in 3 steps. Free instant check, no sign-up.

Diagnose

429 Too Many Requests Checklist

429 Too Many Requests? Tell an origin rate limit from a CDN or WAF block in 3 checks: final status code, Retry-After, which layer responded. Free instant check, no sign-up.

Diagnose

431 Request Header Fields Too Large: Fix

431 Request Header Fields Too Large: your headers exceeded the server limit. Fix in 3 checks: cookies, big token, server limit. Free instant check, no sign-up.

Diagnose

444 Connection Closed Without Response (nginx)

444 Connection Closed Without Response means nginx dropped your request with no reply. Check 3 things: reachability, TLS/SNI, WAF rules. Free instant check.

Diagnose

451 Unavailable For Legal Reasons Fix

451 Unavailable For Legal Reasons: a legal demand blocked the resource. Read the Link rel=blocked-by header to find who blocked it, in 3 checks. Free instant HTTP check.

Diagnose

494 Request Header Too Large (nginx)

494 Request Header Too Large is nginx's log code for oversized headers, usually a bloated cookie. Isolate client vs server. Free instant check, no sign-up.

Diagnose

499 Client Closed Request: Who Hung Up First (nginx)

499 Client Closed Request means the caller quit before nginx replied. Tell a real user from a load balancer that timed out. Free instant check, no sign-up.

Diagnose

501 Not Implemented: Method Unknown, Not Blocked

501 Not Implemented means the server can't recognize the request method, not that it's blocked. Tell it from 405 and a proxy. Free instant check, no sign-up.

Diagnose

502 Bad Gateway: Causes, nginx Log Lines and Fixes

502 means a proxy got no usable answer from the server behind it. How to tell which proxy sent it, read the nginx error log, and fix each common cause.

Diagnose

503 Service Unavailable: Maintenance, Overload or No Backends

A 503 means the server chose not to serve the request: maintenance, rate limiting, overload or no healthy backends. How to tell which, and how to fix each.

Diagnose

504 Gateway Timeout: Which Timeout Fired and How to Fix It

A 504 means a proxy gave up waiting for the server behind it. How to find which layer's timer fired, read nginx's log line, and fix the slow request.

Diagnose

505 HTTP Version Not Supported: It's Rarely the Version

505 HTTP Version Not Supported: a server refused your HTTP major version. Spot a malformed request line vs a proxy rewrite. Free instant check, no sign-up.

Diagnose

506 Variant Also Negotiates: Cause and Fix

506 Variant Also Negotiates is a server content-negotiation loop. Find the bad Apache type-map or MultiViews in 3 steps. Free instant check, no sign-up.

Diagnose

507 Insufficient Storage: It's the Server's Disk

507 Insufficient Storage means the server ran out of room — a full disk, blown quota, or dead inodes. Find it in 3 checks. Free instant check, no sign-up.

Diagnose

508 Resource Limit Is Reached & Loop Detected

508 Resource Limit Is Reached means your account blew its CloudLinux LVE cap — CPU, memory, or processes. Not a bug. Free instant check, no sign-up.

Diagnose

509 Bandwidth Limit Exceeded: Why the Site Died

509 Bandwidth Limit Exceeded: your host hit its monthly transfer cap, not a server bug. Tell it from 503, find the drain. Free instant check, no sign-up.

Diagnose

510 Not Extended: What It Means and What to Check

510 Not Extended is a rare HTTP error that rarely means what the spec says. Find which server returned it and what to check. Free instant check, no sign-up.

Diagnose

511 Network Authentication Required: Captive Portals

511 Network Authentication Required means a captive portal, not the site, is blocking you. Isolate it in 3 checks. Free instant check, no sign-up.

Diagnose

520 Web Server Is Returning an Unknown Error (Cloudflare)

Cloudflare 520 means the origin replied with an empty or malformed response. Check crashes, oversized headers, and keep-alive timeout. Free instant check, no sign-up.

Diagnose

524 A Timeout Occurred (Cloudflare) Fix

Cloudflare Error 524 means your origin connected but never finished the response in ~100s. Check slow endpoints, workers, async offload. Free instant check.

Diagnose

Cloudflare Error 1033: Argo Tunnel Error Fix

Cloudflare Error 1033: the hostname routes to a Tunnel with no live cloudflared connector. Check the tunnel, route, connector. Free instant check, no sign-up.

Diagnose

Cloudflare Error 1101: Worker Threw Exception

Cloudflare Error 1101 means your Worker threw an exception — not an origin failure. Tell it apart from 1102, 1027, and 5xx. Free instant check, no sign-up.

Diagnose

Cloudflare Error 1102: Worker Exceeded Resource Limits

Cloudflare Error 1102 means your Worker blew past its CPU or 128 MB memory limit — not a crash. Tell it apart from 1101, 1027, and 1015. Free instant check.

Diagnose

Cloudflare Error 521 (Web Server Is Down): Causes and Fixes

Error 521 means your origin refused Cloudflare's connection. How to tell a stopped server from a firewall blocking Cloudflare, and how to fix each cause.

Diagnose

Cloudflare Error 522 Connection Timed Out: Causes and Fixes

Error 522 means Cloudflare's TCP connection to your origin timed out. How to see where the packets stop, the usual causes and the fix for each.

Diagnose

curl: (7) Failed to connect — Refused vs Timed Out

curl: (7) Failed to connect means the TCP connect failed. Tell refused (port closed) from timed out (firewall drop), plus the proxy trap. Free instant check.

Diagnose

ERR_BLOCKED_BY_RESPONSE in Chrome: Fix

ERR_BLOCKED_BY_RESPONSE: a COEP/CORP policy blocked a cross-origin resource. Check the page COEP and the resource CORP header. Free instant check, no sign-up.

Diagnose

ERR_CONNECTION_CLOSED in Chrome: Fix Checklist

ERR_CONNECTION_CLOSED means a TCP FIN closed the connection mid-request. Check TLS, keep-alive, antivirus, and reachability. Free instant check, no sign-up.

Diagnose

ERR_CONNECTION_REFUSED: What Refused You, and How to Fix It

ERR_CONNECTION_REFUSED means the host answered but nothing accepted the connection on that port. The usual causes, localhost included, and the fix for each.

Diagnose

ERR_CONNECTION_RESET: Who Sent the Reset, and How to Fix It

ERR_CONNECTION_RESET means a TCP reset killed a connection that had already opened. How to tell whether your network or the server sent it, and each fix.

Diagnose

ERR_CONNECTION_TIMED_OUT: Finding Where the Packets Disappear

ERR_CONNECTION_TIMED_OUT means nothing answered the connection attempt. How to tell your side from the server's, and fix dropped packets, wrong IPs, routing.

Diagnose

ERR_CONTENT_LENGTH_MISMATCH: Why Responses Get Cut Off

ERR_CONTENT_LENGTH_MISMATCH: the body ended before the bytes Content-Length promised. Measure it with curl; fix nginx temp files, timeouts, bad headers.

Diagnose

ERR_EMPTY_RESPONSE (Didn't Send Any Data): Causes and Fixes

ERR_EMPTY_RESPONSE means the connection opened and closed with no reply. How to tell your side from the site's, reproduce it with curl, and fix each cause.

Diagnose

ERR_HTTP2_INADEQUATE_TRANSPORT_SECURITY Fix

ERR_HTTP2_INADEQUATE_TRANSPORT_SECURITY: TLS too weak for HTTP/2. Fix in 3 checks: TLS version, cipher suite, TLS inspector. Free instant check, no sign-up.

Diagnose

ERR_HTTP2_PING_FAILED in Chrome: Fix

ERR_HTTP2_PING_FAILED means the server ignored Chrome's HTTP/2 keep-alive ping. Fix in 3 checks: server load, proxy, network. Free instant check, no sign-up.

Diagnose

ERR_HTTP2_PROTOCOL_ERROR in Chrome: Fix

ERR_HTTP2_PROTOCOL_ERROR: the HTTP/2 session broke after TLS connected. Fix in 3 checks: server config, headers, CDN. Free instant check, no sign-up.

Diagnose

ERR_HTTP2_SERVER_REFUSED_STREAM: Chrome Fix

ERR_HTTP2_SERVER_REFUSED_STREAM: the server refused the request unprocessed. Check load balancer, HTTP/2 limits, and cookies. Free instant check, no sign-up.

Diagnose

ERR_INCOMPLETE_CHUNKED_ENCODING: Response Cut Short

ERR_INCOMPLETE_CHUNKED_ENCODING means a chunked response ended before its final chunk. Backend crash, nginx temp, or proxy? Free instant check, no sign-up.

Diagnose

ERR_INVALID_CHUNKED_ENCODING: Fix Broken Framing

ERR_INVALID_CHUNKED_ENCODING: the server's chunk framing is malformed, not truncated. Find double-chunking or stray output. Free instant check, no sign-up.

Diagnose

ERR_PROXY_CONNECTION_FAILED

ERR_PROXY_CONNECTION_FAILED means Chrome can't reach your proxy, not the website. Isolate proxy from server in 3 checks. Free instant check, no sign-up.

Diagnose

ERR_QUIC_PROTOCOL_ERROR in Chrome: Fix

ERR_QUIC_PROTOCOL_ERROR: Chrome's QUIC (HTTP/3 over UDP) connection broke. Fix in 3 checks: server, UDP port 443, middlebox. Free instant check, no sign-up.

Diagnose

ERR_RESPONSE_HEADERS_TOO_BIG: Headers Over 256KB

ERR_RESPONSE_HEADERS_TOO_BIG means Chrome hit its 256 KB response-header cap — usually runaway cookies. Find it in 3 checks. Free instant check, no sign-up.

Diagnose

ERR_SPDY_PROTOCOL_ERROR in Chrome: Fix

ERR_SPDY_PROTOCOL_ERROR is Chrome's HTTP/2 session breaking; the name is legacy. Fix in 3 checks: headers, middlebox, sockets. Free instant check, no sign-up.

Diagnose

ERR_TOO_MANY_REDIRECTS: Find and Break the Redirect Loop

ERR_TOO_MANY_REDIRECTS means two rules keep sending the browser back and forth. How to trace the chain with curl, read the pattern, and fix the usual causes.

Diagnose

ERR_TUNNEL_CONNECTION_FAILED Fix

ERR_TUNNEL_CONNECTION_FAILED is your proxy refusing the CONNECT tunnel, not the site. Check 3 things: proxy, site status, DNS. Free instant check, no sign-up.

Diagnose

ERR_UNSAFE_PORT: Chrome Blocked the Port

ERR_UNSAFE_PORT means Chrome blocked the port, not the site. Confirm the port is open in 3 checks and move it off the blocklist. Free instant check, no sign-up.

Diagnose

Error 1003 Direct IP Access Not Allowed (Cloudflare)

Error 1003 means a request hit Cloudflare by raw IP, not the hostname. Check the client, DNS proxy state, and origin exposure in 3 steps. Free instant check, no sign-up.

Diagnose

Error 1015 You Are Being Rate Limited (Cloudflare) Fix

Cloudflare Error 1015: a rate-limit rule tripped on your request volume. Tell it from 1020 and an origin 429 in 4 checks. Free instant check, no sign-up.

Diagnose

Error 1027 Cloudflare: Worker Daily Request Limit

Error 1027 means a Cloudflare Worker hit the Free plan's 100,000/day request cap. Fix it in 4 checks: status, source, fail-open, upgrade. Free instant check.

Diagnose

Filtered vs Closed Port in Nmap: What's the Difference

Nmap port "filtered" vs "closed"? What each state means — RST, dropped packets, or ICMP unreachable — checked in 4 steps. Free instant port check, no sign-up.

Diagnose

HSTS Preload Checklist: Requirements, Risks and Removal

What HSTS preload adds over the header, the exact hstspreload.org requirements, the includeSubDomains risk, a safe max-age ramp, and why removal is slow.

Diagnose

HTTP 463 (AWS ALB): Too Many Forwarded IP Addresses

HTTP 463: an AWS ALB got an X-Forwarded-For header with 30+ IPs and refused the request. Trace the proxy chain in 3 steps. Free instant check, no sign-up.

Diagnose

HTTP 500 Internal Server Error: Finding the Real Cause

A 500 page never says what broke. Where the real error is logged (nginx, Apache, PHP-FPM, journalctl, frameworks), the usual causes, and the fix for each.

Diagnose

HTTP Error 403.14 - Forbidden: IIS Directory Listing

HTTP Error 403.14 - Forbidden on IIS: fix it in 3 checks — default document, extensionless routing, and the 404 it hides. Free instant check, no sign-up.

Diagnose

HTTP Error 500.19 Internal Server Error (IIS Config)

HTTP Error 500.19 is IIS failing to read a config file, not your app crashing. The HRESULT hex points to bad XML, a lock, or permissions. Free instant check.

Diagnose

HTTP Error 502.5 ANCM Process Failure (ASP.NET Core)

HTTP Error 502.5 means IIS ran but the ASP.NET Core Module couldn't start your app. Check the runtime, stdout log, and processPath. Free instant check.

Diagnose

HTTP Security Headers: What to Send and How to Configure Them

Which HTTP security headers matter, what values to send, how to roll out CSP without breaking the site, and nginx, Apache and Cloudflare configs.

Diagnose

HTTP to HTTPS Redirect: Force It and Check It Works

Force HTTP to HTTPS: choose 301 vs 308, add HSTS, and fix the proxy redirect loop that breaks it. Verify the chain with a free instant check, no sign-up.

Diagnose

Mixed Content Blocked in Chrome: Find and Fix http:// Resources

Why browsers block or upgrade http:// resources on HTTPS pages, how to find them in DevTools, and fixes: upgrade-insecure-requests, proxy headers, WordPress.

Diagnose

No 'Access-Control-Allow-Origin' Header (CORS)

No 'Access-Control-Allow-Origin' header? Fix it in 3 checks: failed preflight, exact origin echoed back, and credentials mode. Free instant check, no sign-up.

Diagnose

no live upstreams while connecting to upstream (nginx)

no live upstreams means nginx marked every backend unavailable and returns 502. Tell health-check ejection from a config trap. Free instant check, no sign-up.

Diagnose

Open Port Check: How to See Which Ports Are Open

Open port check: see which ports are reachable from outside, tell filtered from closed, and fix port forwarding in order. Free instant check, no sign-up.

Diagnose

Open Port Risks: Which Ports Should Never Face the Internet

Which open ports are dangerous and why (RDP, SMB, databases, Redis, Telnet, Docker), how to find them, and how to close them: localhost, firewall, VPN.

Diagnose

PHP2Shell: Check Your Server's PHP Version and Patch It

On 21 October 2026 PHP fixed two flaws (CVE-2026-109618 and CVE-2026-109619) that allow remote code execution without logging in. Which releases fix them, how to check the PHP your server really runs, and what to do after updating.

Diagnose

Port 443 Closed? How to Check It and Open It

Should port 443 be open, and why does it show as closed? Test it from outside, then check the listener, firewall, security group and NAT, with a fix for each.

Diagnose

PR_CONNECT_RESET_ERROR Fix Guide (Firefox)

PR_CONNECT_RESET_ERROR: a TCP reset killed the connection — not a bad certificate. Server-side or a middlebox on your side? Find out in 3 checks. Free instant check, no sign-up.

Diagnose

Slow Site Checklist: TTFB, Compression and Cache-Control

Is a slow site waiting on the server, sending too many bytes or re-downloading files? curl checks, plus Cache-Control and gzip/Brotli configs.

Diagnose

ssh: connect to host port 22: Connection refused

ssh port 22 Connection refused means the host answered but nothing's listening there — not a firewall timeout. Fix it in order. Free instant check, no sign-up.

Diagnose

upstream sent too big header (nginx 502)

upstream sent too big header is nginx logging a 502 because your backend response headers overflow proxy_buffer_size. Free instant check, no sign-up.

Diagnose

X-Robots-Tag noindex: Find What Adds It and Remove It

Search Console says 'noindex' detected in 'X-Robots-Tag' http header? How to see the header, trace it to server, CDN, preview host or app, and get reindexed.

Diagnose
All guides