Compare
FlareWatch vs UptimeFlare, Uptime Kuma, Gatus and Upptime
All five are free and open source. They differ in where they run, how often they check, and how you configure them. Here is how they line up, and when another tool is the better choice.
| FlareWatch | UptimeFlare | Uptime Kuma | Gatus | Upptime | |
|---|---|---|---|---|---|
| Runs on | Cloudflare Workers | Cloudflare Workers | Your server | Your server | GitHub Actions |
| Server to look after | No | No | Yes | Yes | No |
| Fastest scheduled checks | 1 minute | 1 minute | Seconds | Seconds | 5 minutes |
| Heartbeats for cron jobs | Yes | Not listed | Yes | Yes | No |
| Checks beyond the status code | Keyword, header, JSON value | Keyword | Keyword, JSON value | Body, JSON value | Body text |
| Confirms a failure from a second location | Yes | Not listed | No | No | No |
| Maintenance windows | Repeat daily, weekly or monthly | Scheduled | Repeat on a schedule | Daily or weekdays | One-off |
| Reminders while down | Yes | Not listed | Yes | Yes | No |
| Alert channels per monitor | Yes | Not listed | Yes | Yes | No |
| Status page | Public or private | Public or private | Public | Public or private | Public |
| Configured in | A file in git | A TypeScript file | A web UI | A YAML file | A YAML file |
The UptimeFlare column comes from its README. "Not listed" means the README doesn't say.
FlareWatch
Runs on Cloudflare Workers in your own account. Checks websites, APIs, TCP ports and DNS records every minute, or less often if you like, and warns before a certificate or domain expires. It can confirm a failure from a second location, reach a private network through Workers VPC, watch cron jobs with heartbeats, and serve a public or private status page. Monitors live in a config file in your fork.
Pick it when: You want minute checks, heartbeats and a status page with nothing to host, and you are fine editing a file and pushing to change a monitor.
UptimeFlare
Also runs on Cloudflare Workers, with no server. It checks websites, APIs and TCP ports, up to 50 of them every minute, and a check can run from a chosen location in more than 310 cities. Alerts go to over 100 services through Apprise, or to a webhook. The status page has a response time chart, incident history and scheduled maintenance, and can sit behind a password. Its README lists certificate checks as still to do. Monitors live in uptime.config.ts.
Pick it when: You want the same no-server setup with far more alert services, checks pinned to a Cloudflare location, or a page in English or Chinese.
Uptime Kuma
A self-hosted monitoring app with a web UI. It has many monitor types, including ping, DNS and Docker containers, a long list of notification services, and checks as often as every 20 seconds. It runs as a Docker container or Node.js app on a server you keep running.
Pick it when: You want to add monitors in a web UI, need ping or container checks, or want checks more often than once a minute.
Gatus
A health dashboard written in Go and configured in YAML. Each endpoint gets conditions on status, body, response time, certificate expiry and more. It runs as a binary or container on a server.
Pick it when: You want detailed conditions in config, or you already run a server inside the network you need to watch.
Upptime
Uses GitHub Actions for checks, GitHub Pages for the status page and GitHub issues for incidents. No server. Scheduled workflows run every 5 minutes at best, and GitHub can delay them.
Pick it when: Five minutes is often enough and you want everything to live inside GitHub.
Hosted services
If you would rather not run anything yourself, not even a fork, a hosted service such as UptimeRobot or Better Stack does the job with no setup.