Somewhere in this comparison is a cron job and a curl command that costs nothing and does the actual job for a huge number of sites — worth saying up front before the pricing tables make three paid tools look mandatory.
UptimeRobot's free plan — 50 monitors, checks every 5 minutes — is genuinely enough for most personal projects and small sites, and its paid Solo tier at roughly $9/month just tightens that to 30-second checks. That's the whole product: tell me if the site is down. It doesn't try to be more than that, which is exactly why it stays the cheapest option for the job it does.
| Tool | Free tier | Paid entry | Notable |
|---|---|---|---|
| UptimeRobot | 50 monitors, 5-min checks | Solo ~$9/mo (30-sec checks) | cheapest for simple URL checks |
| Better Stack | 10 monitors, 3-min checks | Responder ~$29/mo + status pages $12/mo | on-call + incident management built in |
| Checkly | limited runs | usage-based, from ~$0 | Playwright end-to-end checks, API + browser |
| Cron + curl | free | free | you build alerting and state tracking yourself |
Better Stack is a different category of product wearing similar branding — monitoring plus on-call scheduling, incident timelines, and a hosted status page, all in one place. That breadth is genuinely useful for a team that needs to know not just that something broke but who's responding and what customers are being told — but it's priced in pieces this year: responder licenses, status pages and heartbeats are each metered separately, so the number a small team actually pays ends up higher than the headline plan price suggests.
Checkly solves a problem neither of the other two touches: it doesn't just ping a URL and check for a 200, it runs real Playwright scripts — log in, click through checkout, confirm the confirmation page actually loaded. A homepage returning 200 tells you the server is up. It tells you nothing about whether someone can actually buy something, which is usually the thing you cared about in the first place.
For one site, start with UptimeRobot's free tier, or write the cron script yourself — it's maybe a hundred lines of bash to only alert on a state change rather than every failed check, which is the one part worth getting right regardless of which tool you use. Add Better Stack once there's an actual team and an actual on-call rotation to coordinate. Reach for Checkly the moment "the site is up" stops being a good enough answer to "is the product working."