Skip to main content

comparing self-hosted

Uptime Kuma vs Gatus: clicks or YAML?

The two most-loved self-hosted monitors answer one question differently: should monitoring be clicked together in a dashboard, or declared in a file and reviewed in a pull request? Everything else follows from that split.

the facts, side by side

  Uptime KumaGatusUptimepage
license MITApache-2.0AGPL-3.0
configuration UI onlyYAML only, read-only UIUI + Terraform + REST + MCP
run it yourself one container (Node)tiny static binaryone binary + compose
hosted option nogatus.io, paidyes, free tier
check types ~40 incl. DBs · MQTT · browser11 protocols incl. gRPC · SSH · WebSocketHTTP · TCP · DNS · TLS · ping · domain
fastest interval 20sno documented floor, default 60s60s free · 30s Pro · 10s self-hosted
status page yes, custom domainsdashboard doubles as pagebranded, own subdomain
page subscribers nonenoneemail · webhook
incidents posted by handnoneauto-opened from checks
teams & roles single loginone basic-auth or OIDC gateorgs + roles
alert channels ~95 services41 providersSlack · Telegram · PagerDuty · SMS + more
community (GitHub stars) ~89k~11.4kyoung

Kuma counts include the Apprise meta-provider and types implemented outside its monitor-types module; Gatus provider count from its README.

Star counts rounded from GitHub, July 2026.

Verified July 2026 against both repositories. Refresh when a project ships.

The split that decides it

Uptime Kuma is a dashboard you click: add a monitor, pick a type, wire a notification, all stored in its database. Gatus refuses the mouse: every endpoint is YAML in version control, the web UI is read-only, and a change means a config redeploy. Neither is wrong. One fits a homelab and a person who thinks in browsers; the other fits an engineer who thinks in Git and wants monitoring reviewed like code.

What each does well

Kuma wins on reach: around forty monitor types including databases, MQTT, SNMP and a real browser check, roughly ninety-five notification services, 20-second intervals, and the biggest community in the category. Gatus wins on discipline: eleven endpoint protocols including gRPC, SSH, WebSocket and UDP, a condition language that asserts on status, response time, JSON body paths and certificate expiry, multi-step suites, and a tiny static Go binary that can even run without a database.

What neither gives you

A customer-facing status page with subscribers, and a team. Kuma's status pages are real but nobody can subscribe to them, and the whole app is one shared login. Gatus's dashboard doubles as its status page: fine for an ops wall, not something you point customers at, and its access control is one basic-auth or OIDC gate. Both check from a single vantage point unless you assemble more instances yourself.

Where Uptimepage fits

If the YAML-versus-clicks debate ends with 'actually we need customers to see a status page and teammates to have accounts', that is the gap Uptimepage fills. Checks over HTTP, TCP, DNS, TLS and ping, configured in the UI or declared with the Terraform provider and REST API, organizations with roles, multi-region probes you can run yourself, and a branded status page with email and webhook subscribers where incidents open automatically. One binary, hosted free or AGPL self-hosted.

links

FAQ

Should I pick Uptime Kuma or Gatus?
Pick by workflow. If you want to click monitors together in a dashboard, Kuma. If you want every check declared in YAML, reviewed in a pull request and deployed like code, Gatus. Feature lists matter less than that split.
Can Gatus replace a status page?
For an internal ops wall, yes: its dashboard shows health, badges and announcements. For customers, no: there are no subscribers, no incident timeline and no branding beyond what you build around it.
Which is lighter to run?
Gatus. It is a small static Go binary that can even run without a database. Kuma is a Node.js app in one container, still light, just not that light.
What if I need teams or an API?
Neither has real multi-user support or a management API. That is the gap tools like Uptimepage and OpenStatus fill: organizations with roles, a REST API and a Terraform provider on top of the checks.

Start in under 5 minutes.

Start free

features · pricing · notes