Before you panic, rule out these common false alarms:
The quickest technical check is a status code request:
curl -I https://yoursite.com
You want to see HTTP/2 200. Anything in the 5xx range (500, 502, 503, 504) means the server itself is failing. A timeout with no response at all usually means the server is offline or unreachable.
| Status | Meaning | Who fixes it |
|---|---|---|
| 200 | All good — page served normally | — |
| 301 / 302 | Redirect (normal, but check where it points) | — |
| 403 | Access forbidden — often a firewall or permissions issue | You or your host |
| 404 | Page not found — broken link, not downtime | You |
| 500 | Server error — code crashed | You or developer |
| 502 / 504 | Bad gateway / timeout — backend not responding | Host or developer |
| 503 | Service unavailable — overloaded or in maintenance mode | Host |
The average small-business website owner finds out about downtime from an angry email or a dip in sales. Monitoring services exist precisely to close that gap — but they're sold as subscriptions that scale badly:
| Approach | Cost after year 1 | Catch |
|---|---|---|
| UptimeRobot free tier | $0 | 5-minute checks, 50 monitors, upsells |
| Pingdom | $144+/yr | Priced per check |
| Better Stack | $300+/yr for real use | Free tier is very limited |
| Desktop monitor (DeskUptime) | $0 | Checks run while your machine is on |
A desktop monitor checks from your own machine, so there are no servers to pay for — which is why it can be free forever and check every 30 seconds if you want. The honest trade-off: it can't watch your site while your computer is asleep. For freelancers and agencies working on client sites during the day, that's exactly the window that matters.
Start monitoring in 10 seconds — no account, no install beyond Node:
npx github:mahope/deskuptime check https://yoursite.com