Emergency server help: get in touch

HTTP Status Codes Reference

A searchable list of HTTP status codes with typical causes and what a server admin should check for each.

Where it runs
Runs in your browser
Last updated
October 9, 2026

This list of HTTP status codes lets you look up any code: every code in the IANA registry from 100 to 511, plus common unofficial ones such as nginx 444 and 499, Cloudflare 520 to 530 and the cPanel 509, each clearly marked. Every entry explains the meaning, the usual cause and what to check on the server. Search, filter by class, or link straight to a code with an address like #502.

Loading the tool… It runs in your browser and needs JavaScript.

How to use this reference

Type a number, a name or a word such as timeout, php-fpm or certificate into the search box, or use the chips to show one class. Open an entry to read the details. Opening an entry puts its code in the address bar, so you can share a link such as #504 with a colleague; the page opens that code directly.

The five classes

  • 1xx Informational: interim responses, such as 100 Continue or 103 Early Hints.
  • 2xx Success: the request worked. 204 and 304 have no body.
  • 3xx Redirection: the client should look elsewhere. 301 and 308 are permanent, 302 and 307 temporary; 307 and 308 keep the method.
  • 4xx Client error: the request was wrong or not allowed, but the cause can still be on the server, such as file permissions behind a 403.
  • 5xx Server error: the server or something behind it failed.

RFC 9110 defines most codes; others come from WebDAV (RFC 4918), RFC 6585 and other specifications, all listed in the IANA registry. Codes marked Unofficial are used by specific software and are not registered, so other clients may treat them as a generic error of their class.

Checking status codes from the shell

curl -sS -o /dev/null -w '%{http_code}\n' https://example.com/
curl -sSIL https://example.com/old-page      # every hop in a redirect chain
awk '{print $9}' /var/log/nginx/access.log | sort | uniq -c | sort -rn
grep ' 50[234] ' /var/log/nginx/access.log | tail

On cPanel servers the Apache domain logs live in /var/log/apache2/domlogs/ (or /usr/local/apache/domlogs/ on older versions), and PHP errors usually land in an error_log file next to the script.

502, 503 and 504: quick triage

A 502 means the proxy reached nothing useful: check that PHP-FPM or the application is running and that the socket path in the nginx or Apache config matches. A 503 usually means a limit was hit, such as PHP-FPM pm.max_children or Apache MaxRequestWorkers; the FPM log says “server reached max_children”. A 504 means the backend was too slow: find the slow request first, then decide whether a timeout really needs raising. Behind a CDN, the 52x codes tell you the CDN could not get a good answer from your origin, so start with the origin’s own logs.

Soft 404s and SEO

A “page not found” message served with status 200 is a soft 404. Search engines may index it and monitoring will think all is well. Make sure missing pages return 404 (or 410 for content removed on purpose) and that moved pages use a single 301 or 308 hop.

At a glance

HTTP Status Codes – short answer
In short: A searchable list of HTTP status codes with typical causes and what a server admin should check for each.
HTTP Status Codes – what this tool covers
HTTP Status Codes: what this tool covers.
HTTP Status Codes – questions answered
HTTP Status Codes: the questions this tool answers.

Related: HTTP Redirect Checker · Website Down Checker (Is It Down?) · Security Headers Checker · nginx 502: connect() failed (111: Connection refused) fix.

Official documentation (checked 9 October 2026): IANA: HTTP Status Code Registry · RFC 9110: HTTP Semantics · nginx: ngx_http_rewrite_module (return and code 444) · Cloudflare docs: 5xx errors

Frequently asked questions

What is the difference between 401 and 403?

401 means the request lacks valid credentials and logging in may help. 403 means the server knows who you are, or does not care, and still refuses; logging in again will not change it.

Is 499 a real HTTP status code?

No. nginx writes 499 in its access log when the client closed the connection before the response was ready. The client never receives it.

Should I use 301 or 308 for an HTTPS redirect?

Both are permanent. 301 lets clients change a POST into a GET; 308 keeps the method and body. For plain page redirects 301 is fine; use 308 for API endpoints.

Share this tool

Free website test

Is your website set up right?

Check SSL, security headers, redirects, robots.txt, sitemap, llms.txt and security.txt in one test. It takes about 30 seconds.