web down
Documentation

Error reference

When your monitor reports a problem, the alert email tells you what happened. This page explains every error, anomaly, and status change in plain English — what it actually means, what likely caused it, and what to do about it.

Each section has a stable link. Alert emails deep-link straight to the relevant entry so you don't have to scroll.

Status verdicts

The three top-level outcomes of every check we run against your monitor.

UP — site is responding normally

Your monitor responded with a successful HTTP status code (200–399) within the response-time threshold. This is the expected state.

Likely cause
  • Site is reachable and working as intended.
What to do

Nothing — you only see UP in the dashboard. We don't email you for UP, only for transitions (recoveries from a previous DOWN are sent as a separate UP-recovery alert).

DEGRADED — site responded, but slower than expected

Your site returned a successful response, but the response time was significantly higher than its usual baseline. The site is working — just slow.

Likely cause
  • Traffic spike or thundering-herd load
  • Database queries taking longer than normal
  • Overloaded upstream service (e.g. a slow API your site calls)
  • Cold-start lag on serverless platforms after low traffic
What to do

Check your site's load and recent deployments. Degraded does not pause monitoring — we'll keep checking. If it persists for several checks, investigate performance regressions.

DOWN — site failed to respond correctly

Your site either didn't respond, returned a server error (5xx), or the request timed out. Visitors hitting it now would see an error.

Likely cause
  • Server crashed or was restarted
  • DNS misconfiguration
  • SSL certificate expired
  • Hosting provider outage
  • Firewall blocking our checks (unlikely — see below)
What to do

Check your hosting provider's status page first, then your application logs. Our worker only runs from a single European data center — if you suspect we're being firewalled, see the troubleshooting section at the bottom.

Connection problems

Errors that happen before any HTTP response — the network or DNS layer.

DNS lookup failed (the domain doesn't resolve)

When we tried to look up your domain's IP address, the DNS system returned 'no such name'. This means visitors typing your URL would get a similar error before ever reaching your server.

Likely cause
  • Domain expired and wasn't renewed
  • DNS records were accidentally deleted
  • Recent DNS change is still propagating (can take up to 48 hours)
  • Typo in the monitor URL
What to do

Log into your domain registrar and verify the domain is still active. Check that your A or AAAA records point to a valid IP. If you just made a DNS change, wait 30 minutes and re-check.

Connection refused (server actively rejected us)

DNS resolved fine, but when we tried to connect to the IP address on port 80 or 443, the server actively said 'no'. The machine is up, but nothing is listening on the web port — or a firewall blocked us at the connection level.

Likely cause
  • Web server (nginx, Apache, Caddy, etc.) crashed or was stopped
  • Container restarted and isn't ready yet
  • Firewall configured to block our IP range
  • Port 80/443 not open on your hosting platform
What to do

SSH or open your hosting dashboard and check whether the web server process is running. Restart it if needed. If you've added a new firewall rule recently, double-check it isn't dropping traffic from European IPs.

Connection reset (server closed mid-conversation)

We connected, started speaking HTTP, and then the server abruptly cut the connection. This usually means the server crashed mid-request, or a load balancer dropped us.

Likely cause
  • Application crash on the request handler
  • Out-of-memory kill on the server
  • Misconfigured load balancer health checks
  • TCP keepalive timeout in front of the server
What to do

Check your application error logs for crashes around the alert time. If you're behind a load balancer or proxy (Cloudflare, AWS ALB, etc.), check its status page and your origin health.

Request timed out (no response within 8 seconds)

We connected and sent a request, but your server didn't reply within our 8-second budget. Real visitors would see a hanging tab or timeout error.

Likely cause
  • Database query hanging or taking forever
  • Application stuck in an infinite loop
  • Massive traffic spike overwhelming the server
  • Network bottleneck between our worker and your hosting region
What to do

Check your application's request handlers — particularly any that hit the database or external APIs. Look for slow queries or deadlocks. If your site is hosted far from Europe, some latency is expected, but a full 8-second timeout means something is genuinely stuck.

SSL / TLS certificate issues

Problems with the certificate that proves your site is who it claims to be.

SSL certificate expired

Your site's HTTPS certificate was valid in the past but its expiry date has passed. Most browsers will block visitors with a scary red warning until you renew.

Likely cause
  • Auto-renewal failed silently (Let's Encrypt requires reachable port 80)
  • Manually-managed certificate wasn't renewed in time
  • DNS validation broke (CNAME or TXT record was changed)
What to do

If you use Let's Encrypt or a managed certificate (Cloudflare, AWS ACM, Vercel, etc.), check that auto-renewal still works — usually a quick force-renew fixes it. We send 30, 14, and 7-day warnings before expiry as separate alerts so you have time to act.

SSL certificate is not trusted

Your certificate exists and is presented, but the issuer isn't recognized — either it's self-signed, signed by an untrusted authority, or the chain is incomplete. Visitors get the same scary warning.

Likely cause
  • Self-signed certificate left on a production site
  • Intermediate certificate not bundled with the leaf cert
  • Certificate from a deprecated or revoked authority
What to do

Most production hosts and CDNs handle this automatically — if you're seeing it, you've likely uploaded a custom certificate. Make sure the full chain (leaf + intermediates) is configured. Tools like SSL Labs (ssllabs.com/ssltest) will pinpoint which intermediate is missing.

SSL certificate doesn't match this hostname

The certificate is valid, but it was issued for a different domain. For example, you have a cert for example.com but you're serving www.example.com from the same IP.

Likely cause
  • Wildcard certificate that doesn't cover the subdomain (e.g. *.example.com vs deeper.sub.example.com)
  • Server returning the wrong virtual-host's certificate
  • Recent domain rename without re-issuing the cert
What to do

Check which hostnames are listed on your certificate (Subject Alternative Names). If your monitor URL isn't covered, re-issue the cert with the right hostname or set up a redirect to the covered domain.

HTTP error codes

When your server responded, but the response itself signaled a problem.

4xx errors — the request was rejected

Codes in the 400–499 range mean your server received the request and decided not to fulfill it. Strictly, these mean 'the client did something wrong' — but for a monitor checking your homepage, getting a 4xx is usually a server-config issue, not really client-fault.

Likely cause
  • Cloudflare or another CDN's WAF blocking our user-agent
  • Server expecting authentication on a page we shouldn't need to log in for
  • Misconfigured rewrite rules returning 404 for the homepage
  • Rate limiter triggered (HTTP 429)
What to do

Check our user-agent (`web-down/1.0 (+https://web-down.com)`) is allowed by your WAF or rate-limiter rules. If you're seeing 404 specifically, double-check the monitor URL is the one you actually want to test.

404 Not Found

Your server is up but says the URL doesn't exist. Real visitors hitting this same URL would see a 'page not found' page.

Likely cause
  • Page or route was deleted or renamed
  • A recent deployment introduced a routing typo
  • Reverse proxy is misrouting the request
  • Monitor URL has a trailing slash where the site expects none, or vice versa
What to do

Check the URL in your browser. If it loads, the issue is specific to our request — check your reverse proxy or WAF logs. If it doesn't load there either, restore the missing route or update your monitor to point at the right URL.

429 Too Many Requests

Your rate limiter or WAF decided we're sending too many requests. We only check every 5 minutes from a single IP, so this is almost always a misconfigured rate-limit rule that's too aggressive.

Likely cause
  • Cloudflare rate-limiting rule applied to all IPs
  • Application-level rate limiter not whitelisting the monitor
  • DDoS protection in 'I'm under attack' mode
What to do

Whitelist our user-agent or IP in your rate-limiter. Our checks are 5 minutes apart from one European data center — they should never trip a real rate-limit.

5xx errors — the server itself failed

Codes in the 500–599 range mean your server received the request, tried to handle it, and crashed or gave up. These are real server errors that visitors are also seeing.

Likely cause
  • Application crash (uncaught exception, panic, etc.)
  • Database connection failed
  • Out of memory or disk space
  • Upstream service (API your site depends on) failed
What to do

Pull up your application's error logs for the alert timestamp. 5xx errors almost always have a stack trace showing exactly what crashed.

500 Internal Server Error

A generic 'something blew up on the server' response. Your application handled the request but threw an uncaught error before sending a meaningful response.

Likely cause
  • Uncaught exception in your application code
  • Failed database query that wasn't handled
  • Misconfigured environment variable causing startup failure
What to do

Check application logs. The exact stack trace will pinpoint the cause. After fixing, redeploy and the next monitor check (within 5 minutes) will confirm recovery.

502 Bad Gateway

Your reverse proxy (nginx, Cloudflare, load balancer) tried to forward our request to your application, but got a malformed or missing response. Almost always means your application crashed or isn't running.

Likely cause
  • Application server (Node, Python, Ruby, etc.) is down
  • Application is restarting after a deployment
  • Misconfigured upstream in nginx/Apache
What to do

Restart the application server. If you just deployed, check the deployment logs — the new version may have failed to start. Many platforms (Vercel, Fly.io, Render) auto-rollback failed deploys; verify yours did.

503 Service Unavailable

Your server is up but is explicitly saying 'I can't handle requests right now'. Often used during planned maintenance, but also issued when a server is overloaded.

Likely cause
  • Maintenance mode enabled
  • Auto-scaling temporarily failing to keep up with load
  • Health-check failure causing all instances to be marked unhealthy
What to do

If this is a planned maintenance, you can pause the monitor in the dashboard so you don't get spammed with alerts. Otherwise, investigate load and scaling.

504 Gateway Timeout

Your reverse proxy tried to forward our request to your application, but the application didn't respond within its timeout window. Usually means your app is hung, not crashed.

Likely cause
  • Slow database query blocking a request handler
  • Deadlock in application code
  • Network problem between proxy and app server
What to do

Check application performance and database query times. Often resolves itself if it's a transient slow query, but recurrent 504s point at a real performance regression.

Anomaly notifications

When your site is technically working but something has changed in a way that's worth noticing.

Response time spike

Your site is responding successfully, but the response time jumped significantly above its 7-day baseline. Visitors will notice the slowness even if pages still load.

Likely cause
  • Traffic surge (good kind: viral post, marketing campaign)
  • Slow database query that grew with data volume
  • External service your site calls is lagging
What to do

Check your performance monitoring (database, APM, logs). If the spike is from real traffic, you may need to scale up. If it's a slow query, profile it and add an index.

SSL certificate expiring soon

Your HTTPS certificate is still valid, but its expiry date is approaching. We send three warning levels: 30 days, 14 days, and 7 days before expiry.

Likely cause
  • Auto-renewal scheduled but hasn't run yet
  • Manually-managed certificate that needs renewing
What to do

If you use Let's Encrypt, Cloudflare, or a managed certificate, this should renew automatically — verify auto-renewal still works. If you manage the cert yourself, renew it before the 7-day mark to avoid downtime.

DNS records changed

The IP address your domain resolves to is different from the last successful check. This isn't always a problem — you might have switched hosting providers — but if you didn't make the change, it's worth investigating.

Likely cause
  • Intentional hosting migration
  • DNS hijack (rare but serious)
  • Multi-IP DNS round-robin returning a different IP
What to do

If you made the change yourself, you can ignore this. If you didn't, log into your DNS provider immediately and verify your records — and check that your registrar account hasn't been compromised.

HTTP status code changed

The HTTP status code your site returns has changed from what it was returning before — for example, from 200 OK to 301 Moved Permanently.

Likely cause
  • Intentional redirect added (e.g. moving from HTTP to HTTPS, or to a new domain)
  • Page was archived and now returns a different code
  • Server-side change in framework or routing
What to do

Verify whether the new status code is intentional. If yes, no action needed. If no, investigate the deployment that introduced the change.

Redirect chain changed

The sequence of redirects your monitor follows has changed. For example, it used to go directly to your site, but now it bounces through an intermediary first.

Likely cause
  • Intentional redirect addition (CDN, www-to-apex)
  • Compromised hosting redirecting through an attacker site (extremely rare)
  • Misconfigured CDN or proxy adding a hop
What to do

Check the new redirect chain shown in the alert. Each redirect adds latency for real visitors, so even an intentional change is worth understanding.

Server header changed

The 'Server' HTTP header your site sends has changed — e.g. from 'nginx/1.18' to 'cloudflare'. This usually indicates an infrastructure change.

Likely cause
  • Migrated to a new hosting provider
  • Added or removed a CDN in front of the site
  • Upgraded the web server software
What to do

If you made the change, no action needed. If you didn't, this could indicate someone changed your hosting setup without telling you — worth a quick check.

Still stuck? Contact support

If your alert doesn't match anything on this page or you're not sure what to do.

Forward the alert email to support and include: the monitor URL, the time the alert fired, and what (if anything) you've already checked. We're a one-person team so replies aren't instant, but every ticket is read by the actual person who built the service.