HTTP Status Checker
The status code, every redirect, the timings, the certificate and the headers for any URL - and a straight answer to whether an uptime monitor would call it up or down.
Timings
Redirect chain
| # | Status | URL | ms |
|---|
Certificate
Checked from a server in Amsterdam, Netherlands. A site can answer differently in other places - which is one reason UpWatchr checks from your own PC.
Up or down: how a monitor decides
The verdict above follows the same rules UpWatchr applies on every check, so what you see here is what a monitor would report:
- Any 2xx is up, everything else is down - unless you list expected status codes, and then only those count. A login-protected endpoint that should answer
401is healthy when it does. - Redirects are followed and the last answer decides. Turn following off and a
301counts as down unless you expect it. - A certificate that fails validation is down, even if the page behind it answers 200. Browsers refuse it, so your visitors are already locked out.
- No answer within the timeout is down. So is a refused connection, a failed DNS lookup or a broken TLS handshake.
What the status codes mean
| Code | Meaning | Usually |
|---|---|---|
| 200, 204 | OK, No Content | Working. 204 is a normal answer from health endpoints and APIs. |
| 301, 308 | Moved permanently | Update links to the new address; 308 keeps the method (a POST stays a POST). |
| 302, 307 | Temporary redirect | Often a login page. If a health check lands on one, it's checking the login page, not the app. |
| 401, 403 | Unauthorized, Forbidden | Missing or wrong credentials - or a firewall or bot protection turning away a server it doesn't know. |
| 404 | Not Found | Wrong path, or a deploy that dropped the route. |
| 429 | Too Many Requests | Rate limited. Check less often, or ask for an allowlist. |
| 500 | Internal Server Error | The app crashed on this request. The server's own logs say why. |
| 502 | Bad Gateway | The proxy in front (Nginx, IIS ARR, Cloudflare, a load balancer) got no valid answer from the app behind it - often an app that's stopped or restarting. |
| 503 | Service Unavailable | Overloaded, in maintenance, or an IIS application pool that has stopped. |
| 504 | Gateway Timeout | The app behind the proxy answered too slowly. A slow database query is a common cause. |
| 520-526 | Cloudflare errors | Cloudflare reached your origin and something went wrong: down (521), timed out (522, 524) or a TLS problem (525, 526). |
Reading the timings
DNS is looking up the name, Connect is the TCP handshake, and TLS + server is the encryption handshake plus the time the server took to start answering. Together they make the time to first byte (TTFB). Download is the rest of the response (counted up to 1 MB). A slow TTFB with a fast connect points at the application, not the network.
Works in your browser, fails here (or the reverse)
- Bot protection or a WAF often answers servers with a 403 or a challenge page while letting browsers through. This checker identifies itself as
UpWatchr-HTTP-Checker/1.0, so you can recognise or allowlist it. - Geo-blocking: the check comes from the Netherlands.
- Private addresses -
localhost,192.168.x.x, an intranet name - can't be checked from the internet at all. That's exactly what a monitor on your own machine is for.
Common questions
Why doesn't it show the response body?
It reads and counts the body to time the download, but doesn't show it - so it can't be used to fetch pages anonymously through us. The status, headers and timings are what a monitor works from anyway.
Are my headers and password stored?
No. They're used for this one request and then discarded, and they're only sent to the host you typed - if the site redirects to another host, they're left off, the way browsers drop credentials.
How do I get alerted when it goes down?
Run the same check on a schedule. UpWatchr is a free Windows app that does exactly that, per site, with the same method, headers, auth and expected codes - and alerts you by popup, email, Telegram, webhook or a script of your own. It also reaches what this page can't: servers on your LAN and localhost.