Skip to main content

comparing self-hosted

Uptimepage vs Upptime, Cachet and Statping

Three popular self-hosted status tools, one honest table. Upptime and Statping run their own checks; Cachet is a status page that has only recently, and partially, added checks of its own. Here is where each fits, and where Uptimepage does both jobs in one product. Start free on the hosted tier or self-host under AGPL, no card.

what you get

  • Built-in checks HTTP, TCP, DNS, TLS, ping
  • Check interval every 60s
  • Status page branded, subscribers
  • As code Terraform + REST + MCP
  • Run it hosted free, or self-host AGPL
  • Price to start free, no card

how they compare

  UptimepageUpptimeCachetStatping
uptime checks built in yesyesbasic HTTPyes
check types HTTP · TCP · DNS · TLS · pingHTTP · TCP · ICMPHTTP GETHTTP · TCP · UDP · ICMP · gRPC
fastest check interval 60s5 minyour cron~30s
multi-region probes yesbolt-onnono
status page brandedstaticyesyes
visitor subscribers email + webhooknowebhook, email wipno
auto incidents from checks yesGitHub issuesstatus onlyyes
config-as-code Terraform · API · MCPYAMLAPIYAML · API
official Terraform provider yesnocommunityno
tech stack RustJavaScriptPHP / LaravelGo
how you run it hosted or self-hostActions + PagesPHP/Laravel + DBGo binary
license AGPL-3.0MITsource-availableGPL-3.0
maintained in 2026 activelow velocityactive, v3 dev~yearly

Statping here is the maintained community fork, statping-ng; the original Statping has not shipped a release since 2020.

Upptime runs checks as GitHub Actions cron jobs, which cannot fire more than once every five minutes and can drift later under load. Reaching other regions needs the third-party Globalping add-on.

Cachet's actively developed v3 (the cachethq/core source) added basic HTTP component checks and subscriber management in mid-2026, but it is still 3.x-dev with no stable release: checks are HTTP GET only on a cron you add yourself, incident email to subscribers is not wired up yet, and the code ships under a custom source-available license.

Competitor facts were verified against each project's repository and docs in July 2026. Open-source projects move quickly, so check their current docs before you decide.

Upptime: monitoring inside your GitHub repo

Upptime is a neat idea. It runs checks as scheduled GitHub Actions, records history as commits in your repo, files incidents as GitHub Issues, and serves a static page from GitHub Pages. That design is also its ceiling. Actions cron will not run more than once every five minutes and can slip later under load, so detection is measured in minutes. There are no visitor subscriptions, checks run from a single region unless you add the third-party Globalping service, and there is no DNS-record or TLS-expiry check. Uptimepage runs its own checks every 60 seconds across HTTP, TCP, DNS, TLS and ping from several regions, and lets visitors subscribe by email or webhook.

Cachet: a status page catching up on monitoring

Cachet began as a pure communication tool: you set components up or down by hand or over its API. Its actively developed v3, in the cachethq/core repo, is moving fast and, as of mid-2026, added basic HTTP component checks and subscriber management. The checks are real but young: HTTP GET only, no TCP, DNS or TLS, and you schedule the check command yourself rather than getting a built-in interval. It is still 3.x-dev with no stable release, incident email to subscribers is not wired up yet, it is a PHP and Laravel app with a database, queue and cron to operate, and it ships under a custom source-available license rather than an OSI open-source one. Uptimepage runs HTTP, TCP, DNS, TLS and ping checks every 60 seconds from multiple regions out of the box, opens incidents automatically, and is one binary to run.

Statping: close in shape, thin on upkeep

Statping is the nearest match here. It is a single Go binary that runs its own HTTP, TCP, UDP, ICMP and gRPC checks, draws response-time graphs, and shows incidents and maintenance on a themeable page. The catch is upkeep. The original project stopped in 2020, and the community statping-ng fork carries it now at roughly one release a year, the most recent in mid-2025. It has no visitor subscriptions, no multi-region checks, and no Terraform provider. Uptimepage covers the same ground and adds config-as-code with Terraform, REST and MCP, team roles, subscriber pages and regional probes, hosted for free or self-hosted under AGPL.

One product, hosted or self-hosted

The pattern is simple. Upptime and Statping monitor but leave out subscribers and multi-region; Cachet publishes but does not monitor. Uptimepage does both in one binary. Run docker compose up with Postgres and ClickHouse on your own boxes, or start free on the hosted tier with no card. The REST API and Terraform provider work the same against both, so you can change your mind later.

links

FAQ

Does Cachet do monitoring?
As of mid-2026, partly. Cachet v3 added basic HTTP checks you schedule yourself (GET only, no TCP, DNS or TLS), though it is still in development with no stable release. Uptimepage runs HTTP, TCP, DNS, TLS and ping checks every 60 seconds from multiple regions and opens incidents automatically.
How often can Upptime check?
Upptime runs on GitHub Actions cron, which cannot fire more than once every five minutes and can drift later under load. Uptimepage checks as often as every 60 seconds from multiple regions.
Is Statping still maintained?
The original Statping stopped in 2020. A community fork, statping-ng, keeps it going at roughly one release a year. Uptimepage is actively developed, with config-as-code, subscriber pages and regional probes, hosted or self-hosted.
Can I self-host Uptimepage?
Yes, that is the point of it. One AGPL binary, Postgres, ClickHouse, one compose file. Or stay on the free hosted tier and let us run it.

Start in under 5 minutes.

Start free

features · pricing · notes