HTTP error test pages

A live endpoint for every common HTTP error code — useful for QA, monitoring smoke tests, error-page styling, and verifying that your reverse proxy or CDN forwards upstream errors correctly. Click any code below to fetch a page that actually returns that status.

What HTTP error codes actually mean

HTTP status codes are the three-digit number every web server includes in every response. They tell the caller — a browser, a monitoring probe, a backend service — what happened in one glance. Codes in the 2xx range mean success, 3xx mean redirection, 4xx mean the caller did something the server objected to, and 5xx mean the server could not finish the work it was asked to do.

Why test pages for them?

Most production systems try very hard to never emit a 5xx. That makes it tricky to confirm that:

  • Your uptime monitoring opens an incident when an upstream returns 502 or 503.
  • Your reverse proxy passes the original status code through instead of rewriting it.
  • Your status page or error template renders correctly for each code your stack can produce.
  • Your CDN's stale-while-error rules behave the way you expect.
  • Your alerting rules fire (and quiet) when they should.

Pointing test traffic at the URLs above guarantees a known status code on demand — no need to deliberately misconfigure a live origin to "see what 504 looks like".

The 4xx family — caller errors

4xx codes mean the request itself was wrong, malformed, or refused: missing authentication, the wrong HTTP method, a URL that doesn't exist, or simply too many requests. Clients are expected to look at these and adjust — retrying without changing anything almost never helps.

The 5xx family — server errors

5xx codes mean the request was reasonable but the server failed to handle it. These are the codes that uptime monitoring cares about most: they almost always signal that something in your stack is unhealthy — an origin is down, a database is unreachable, a queue is saturated, a deploy went wrong. Treat them as outages until proven otherwise.

Codes covered here

400 Bad Request
Server refuses the request because it is malformed — invalid syntax, missing required field, or oversized header. Almost always a client-side bug.
401 Unauthorized
Authentication credentials are missing or invalid. Browsers may prompt for login when paired with a WWW-Authenticate header — different from 403.
403 Forbidden
The caller is authenticated but not authorised for this resource — permissions, role gates, geofencing and WAF blocks all return 403.
404 Not Found
Resource does not exist on this server. Different from 410 (used to exist) and 403 (exists but hidden) — repeated 404s drop a URL from search indexes.
405 Method Not Allowed
The URL exists but the HTTP method is not supported here — e.g. POST to a read-only endpoint. Servers must list valid methods in the Allow header.
408 Request Timeout
Server gave up waiting for the client to finish sending the request. Common with slow uploads or stalled keep-alive connections — clients should retry with a fresh connection.
410 Gone
Resource existed before but has been permanently removed. Use instead of 404 when you want crawlers and caches to forget the URL faster.
418 I'm a Teapot
Defined as an April Fools joke (RFC 2324) but kept as a real status code — sometimes used as a soft rate-limit signal or "intentionally not implemented" fingerprint.
429 Too Many Requests
Caller exceeded the request rate the server is willing to accept. Usually paired with a Retry-After header indicating when it is safe to try again.
500 Internal Server Error
Generic server-side failure — uncaught exception, dropped database connection, out-of-memory crash. The cause is opaque to the caller; check server logs.
501 Not Implemented
Server does not understand the requested functionality at all. Distinct from 405 — that means "wrong method here"; 501 means "method unknown globally".
502 Bad Gateway
A gateway or proxy received an invalid response from the upstream application server. Common when the origin is down, OOM-killed, or returns garbage.
503 Service Unavailable
Server is temporarily unable to handle the request — overloaded, in maintenance, or degraded. Usually paired with Retry-After; treat sustained 503s as a real outage.
504 Gateway Timeout
Gateway or proxy timed out waiting for the upstream application to respond. Caused by long-running database queries or external API calls inside the request path.

Want to monitor your own URLs for unexpected 5xx responses? See what YouMonit watches or start a free account.