11 Best Free Uptime Monitoring Tools in 2026 (Self-Hosted & Cloud)


11 Best Free Uptime Monitoring Tools in 2026 (Self-Hosted & Cloud)

It is 2 AM on a Saturday. Your Nextcloud instance went down three hours ago because a Docker volume ran out of space. Your family is trying to access shared photos for a gathering tomorrow. Nobody can reach the files. You find out when your spouse texts you, annoyed, at breakfast.

This is the exact scenario uptime monitoring exists to prevent. A monitoring tool checks your services on a schedule — every 30 seconds, every minute, every five minutes — and sends you an alert the moment something goes down. You get a push notification, an email, a Slack message, or a webhook, and you fix the problem before anyone else notices.

For self-hosters, uptime monitoring is not optional. It is the difference between “my server had a brief issue that I fixed in ten minutes” and “my server was down for a day and I did not know.”

The good news is that monitoring tools have gotten extremely good, and many of them are completely free. This guide covers 11 options — five self-hosted and six cloud-based — with honest assessments of what each one does well, where it falls short, and who should use it.

Table of Contents

TL;DR

  • Best self-hosted (general): Uptime Kuma. Beautiful UI, 90+ notification types, dead simple Docker setup. The community default for good reason.
  • Best self-hosted (DevOps): Gatus. Config-as-code, built for CI/CD pipelines, excellent for teams that manage infrastructure as YAML.
  • Best cloud (free tier): UptimeRobot. 50 monitors, 5-minute intervals, been around forever, reliable.
  • Best hybrid (cron job monitoring): CronPing. Lightweight, designed for monitoring cron jobs, backups, and background tasks that traditional uptime monitors miss.
  • Best for developers: Checkly. Monitoring as code with Playwright-based browser checks.
  • If you just want one tool: Install Uptime Kuma on your server for internal monitoring and use UptimeRobot’s free tier to monitor the server itself from outside your network.

Quick Comparison Table

ToolTypeFree TierMin IntervalNotificationsStatus PageDocker
Uptime KumaSelf-hostedUnlimited20 sec90+ typesYesYes
GatusSelf-hostedUnlimited1 sec10+ typesYesYes
Statping-ngSelf-hostedUnlimited30 sec10+ typesYesYes
CronPingCloud5 monitors1 minEmail, Slack, WebhookNoN/A
Oh DearCloud + AgentNo free tier ($16/mo)30 sec10+ typesYesAgent only
UptimeRobotCloud50 monitors5 minEmail, WebhookYesN/A
Better StackCloud10 monitors3 min10+ typesYesN/A
ChecklyCloud5 checks10 min (free)8+ typesNoN/A
Hetrix ToolsCloud15 monitors1 minEmail, Slack, WebhookYesN/A
FreshpingCloud50 monitors1 minEmailYesN/A
PingdomCloud1 monitor1 minEmail, SMSYesN/A

What to Look for in an Uptime Monitor

Before diving into individual tools, here is what actually matters when choosing a monitoring solution:

Check Types

Basic HTTP checks (“is this URL returning a 200?”) are table stakes. More useful are:

  • Keyword checks: verify that the response body contains expected content (catches cases where a server returns 200 but displays an error page)
  • TCP/UDP port checks: monitor databases, mail servers, game servers
  • DNS checks: verify that DNS resolution works correctly
  • Certificate monitoring: alert before TLS certificates expire
  • Cron/heartbeat checks: monitor background tasks by expecting periodic pings (if the ping stops arriving, something is wrong)

Alert Quality

The best monitoring tool is useless if its alerts do not reach you. Look for:

  • Multiple notification channels (email, push notifications, Slack, Discord, Telegram, webhooks)
  • Alert escalation (if nobody acknowledges the alert in 10 minutes, escalate to a second person or channel)
  • Alert grouping (if 5 services on the same server go down simultaneously, send one alert, not five)
  • Recovery notifications (tell me when the service comes back up, not just when it goes down)

Status Pages

A public status page tells your users (even if “your users” is just your family) the current state of your services. Good status pages include historical uptime percentages, incident timelines, and the ability to subscribe to updates.

Check Interval

How often the monitoring tool checks your services determines how quickly you find out about outages. A 5-minute interval means you could be down for up to 5 minutes before an alert fires. For most self-hosted setups, 1-5 minute intervals are fine. For production services, 30 seconds or less is preferable.

The Monitoring Paradox

Self-hosted monitoring has a fundamental problem: if your server goes down, your monitoring goes down with it. You will not receive an alert because the tool that sends alerts is on the same machine that just crashed.

The solution is to run your self-hosted monitor on a different machine than the services it monitors, or to complement self-hosted monitoring with an external cloud service. The cheapest approach: run Uptime Kuma on your server for detailed internal monitoring, and use UptimeRobot’s free tier to monitor the server itself from the outside.

Self-Hosted Monitoring Tools

1. Uptime Kuma

The community favorite. Beautiful, feature-rich, and trivially easy to deploy.

Uptime Kuma is the self-hosted monitoring tool that most people recommend, and for good reason. It has a polished web UI that looks like it belongs to a commercial product, supports over 90 notification services, and deploys in a single Docker command.

What It Does

Uptime Kuma monitors HTTP(S) endpoints, TCP ports, DNS records, Docker containers (directly via the Docker socket), and can receive heartbeat pings from cron jobs and background tasks. It tracks response times, calculates uptime percentages, and displays everything on a clean dashboard with real-time updates.

It also includes a built-in status page system. You can create public or password-protected status pages showing the current state and historical uptime of your services — useful for sharing with family members or a small team.

Setup

# docker-compose.yml
services:
  uptime-kuma:
    image: louislam/uptime-kuma:1
    container_name: uptime-kuma
    volumes:
      - uptime-kuma-data:/app/data
      - /var/run/docker.sock:/var/run/docker.sock:ro  # Optional: Docker container monitoring
    ports:
      - "3001:3001"
    restart: unless-stopped

volumes:
  uptime-kuma-data:
docker compose up -d
# Open http://your-server:3001
# Create an admin account on first visit

From there, adding monitors is point-and-click. Enter a URL, set the check interval, configure notifications, and you are monitoring.

Notification Setup Example (Discord)

  1. Create a Discord webhook in your server settings
  2. In Uptime Kuma, go to Settings > Notifications
  3. Select “Discord” and paste the webhook URL
  4. Test the notification — you should see a message in your Discord channel

Uptime Kuma supports Discord, Slack, Telegram, Pushover, Ntfy, Gotify, Matrix, email (SMTP), PagerDuty, Opsgenie, webhooks, and dozens more. The notification setup is consistently one of the best in any monitoring tool, self-hosted or otherwise.

Pricing

Free. Open source (MIT license). No paid tier, no feature restrictions, no telemetry.

Pros

  • Beautiful, responsive web UI that non-technical users can navigate
  • 90+ notification integrations covering every major platform
  • Docker container monitoring via socket
  • Built-in status pages with custom domains
  • Active development with regular releases
  • Low resource usage (~70 MB RAM, minimal CPU)
  • Maintenance windows to suppress alerts during planned downtime
  • Multi-language support (25+ languages)
  • 2FA support for the admin panel

Cons

  • Single-user design — no team features, RBAC, or multi-tenancy
  • SQLite database does not scale well beyond a few hundred monitors
  • No API for programmatic monitor management (monitor configuration is UI-only)
  • No config-as-code approach — monitors are stored in the database, not in files
  • The monitoring paradox applies: if the host goes down, monitoring goes down
  • No distributed monitoring (all checks come from one location)

Who It Is For

Self-hosters who want a polished monitoring dashboard without complexity. If you run a home lab with 5-50 services and want to know when something goes down, Uptime Kuma is the answer. It is the “install and forget” choice.


2. Gatus

Configuration-as-code monitoring for DevOps-minded self-hosters.

Gatus takes a fundamentally different approach from Uptime Kuma. Instead of a web UI for configuration, Gatus is configured entirely through a YAML file. There is no database. There is no admin panel for adding monitors. You define your endpoints in a config file, deploy with Docker, and the web interface is a read-only dashboard showing status.

What It Does

Gatus monitors HTTP(S) endpoints, TCP ports, DNS, ICMP (ping), SSH, and STARTTLS connections. What sets it apart is the condition language: instead of just checking “is this URL returning 200?”, you can write conditions like “response time must be under 500ms AND the response body must contain ‘healthy’ AND the certificate must not expire within 30 days.”

# gatus config.yaml
endpoints:
  - name: Nextcloud
    group: core
    url: "https://cloud.yourdomain.com"
    interval: 60s
    conditions:
      - "[STATUS] == 200"
      - "[RESPONSE_TIME] < 2000"
      - "[CERTIFICATE_EXPIRATION] > 720h"  # 30 days
    alerts:
      - type: discord
        send-on-resolved: true
        description: "Nextcloud health check"

  - name: Jellyfin
    group: media
    url: "https://media.yourdomain.com"
    interval: 30s
    conditions:
      - "[STATUS] == 200"
      - "[RESPONSE_TIME] < 1000"
      - "[BODY].healthy == true"  # JSONPath check

  - name: Home Database
    group: core
    url: "tcp://postgres:5432"
    interval: 30s
    conditions:
      - "[CONNECTED] == true"

  - name: DNS Resolution
    group: infrastructure
    url: "dns://cloud.yourdomain.com"
    dns:
      query-type: A
      query-name: "cloud.yourdomain.com"
    conditions:
      - "[DNS_RCODE] == NOERROR"
      - "[BODY] == 192.168.1.50"

alerting:
  discord:
    webhook-url: "https://discord.com/api/webhooks/..."

Setup

# docker-compose.yml
services:
  gatus:
    image: twinproduction/gatus:latest
    container_name: gatus
    volumes:
      - ./config.yaml:/config/config.yaml:ro
    ports:
      - "8080:8080"
    restart: unless-stopped

Pricing

Free. Open source (Apache 2.0 license).

Pros

  • Configuration as code — version control your monitoring setup in Git
  • Powerful condition language with JSONPath, regex, and chaining
  • Extremely lightweight (~15 MB RAM)
  • Built-in status page with badge generation (for README files)
  • Supports external storage backends (PostgreSQL, SQLite) for historical data
  • Fast startup and low resource usage
  • No database required for basic operation

Cons

  • No web UI for adding or editing monitors — config file only
  • Fewer notification integrations than Uptime Kuma (10+ vs 90+)
  • Status page is less polished than Uptime Kuma’s
  • No Docker container monitoring (only network-based checks)
  • Smaller community and fewer tutorials
  • No maintenance window support
  • Documentation is comprehensive but assumes DevOps experience

Who It Is For

DevOps engineers and infrastructure-as-code practitioners who want monitoring defined in the same Git repos as their docker-compose files. If “edit YAML and redeploy” is your workflow, Gatus fits naturally. If “click buttons in a web UI” is your workflow, use Uptime Kuma instead.


3. Statping-ng

The middle ground between Uptime Kuma’s simplicity and Gatus’s flexibility.

Statping-ng is a fork of the original Statping project, maintained by the community after the original maintainer stepped back. It offers a web UI for configuration (like Uptime Kuma) with an API for programmatic access (like Gatus), plus a built-in status page system.

What It Does

Statping-ng monitors HTTP(S), TCP, UDP, gRPC, and ICMP endpoints. It stores historical data in SQLite, PostgreSQL, or MySQL, and exposes a REST API for creating and managing monitors programmatically. The built-in status page is customizable with themes and can be hosted on a custom domain.

Setup

# docker-compose.yml
services:
  statping:
    image: adamboutcher/statping-ng:latest
    container_name: statping
    volumes:
      - statping-data:/app
    ports:
      - "8080:8080"
    environment:
      - DB_CONN=sqlite
    restart: unless-stopped

volumes:
  statping-data:

Pricing

Free. Open source (GPL-3.0 license).

Pros

  • Web UI for configuration and a REST API for automation
  • Supports multiple database backends
  • Built-in status page with theming
  • GraphQL and REST API for programmatic access
  • Supports Prometheus metrics export
  • Plugin system for custom check types

Cons

  • Development has slowed significantly — the fork is maintained by a small group
  • UI feels dated compared to Uptime Kuma
  • Fewer notification integrations
  • Documentation is fragmented between the original project and the fork
  • Some bugs in the latest releases that have not been fixed promptly
  • Smaller community means fewer resources when you encounter problems

Who It Is For

Users who need both a web UI and an API, or who need Prometheus metrics integration from their monitoring tool. In practice, most users are better served by Uptime Kuma (for the UI) or Gatus (for the config-as-code approach). Statping-ng occupies a middle ground that fewer people need.


4. CronPing

Purpose-built for monitoring cron jobs, backups, and background tasks.

CronPing fills a gap that traditional uptime monitors miss. Most monitoring tools check whether a service is responding. CronPing checks whether a scheduled task actually ran. It works by expecting periodic HTTP pings from your scripts — if the ping does not arrive on schedule, CronPing alerts you.

This is the monitoring equivalent of a dead man’s switch. Your backup script sends a ping to CronPing after completing successfully. If the ping stops arriving (because the script failed, the cron schedule broke, or the server went down), CronPing notices and alerts you.

What It Does

You create a monitor in CronPing and get a unique URL. Add a curl call to the end of your scripts:

#!/bin/bash
# backup.sh - nightly backup script

# Run the backup
restic backup /data --repo /mnt/backup

# If backup succeeded, ping CronPing
if [ $? -eq 0 ]; then
    curl -s https://cronping.com/ping/your-unique-id
fi
# In crontab
0 2 * * * /home/user/backup.sh

CronPing expects the ping to arrive within your configured schedule (e.g., every 24 hours with a 30-minute grace period). If it does not arrive, you get an alert.

This solves a real problem that general uptime monitors cannot: knowing that your backups actually ran. Your Nextcloud server might be up (passing all HTTP checks) while the backup cron job silently failed three weeks ago. You will not know until you need to restore from a backup that does not exist.

Pricing

CronPing offers a free tier with 5 monitors, which covers the essentials for a home lab (backup job, database maintenance, certificate renewal, system updates, and one spare). Paid plans start at $5/month for more monitors and shorter check intervals.

Pros

  • Solves a specific problem that general monitoring tools handle poorly
  • Dead simple integration — one curl command at the end of any script
  • Works with any language or platform that can make HTTP requests
  • Grace period prevents false alerts from slightly delayed tasks
  • Useful for monitoring tasks across multiple servers
  • Lightweight — no agent to install, no Docker container to run

Cons

  • Cloud-only — no self-hosted option
  • Free tier is limited to 5 monitors
  • No HTTP/TCP endpoint monitoring (it is not a general uptime monitor)
  • No status page feature
  • Newer entrant with a smaller user base than established tools

Who It Is For

Anyone running scheduled tasks — backups, database maintenance, certificate renewal, data sync jobs — who needs to know when those tasks stop running. CronPing complements a general uptime monitor like Uptime Kuma rather than replacing it. Use Uptime Kuma to monitor whether services are up, and CronPing to monitor whether background tasks are completing.


5. Oh Dear

Premium monitoring with a self-hosted agent option.

Oh Dear is not free, so it stretches the definition of this list, but it deserves mention because of its self-hosted monitoring agent and because it does several things that no free tool matches.

What It Does

Oh Dear monitors uptime, broken links, mixed content, certificate health, scheduled tasks (like CronPing), DNS records, application health (JSON endpoint), Lighthouse performance scores, and cron job monitoring. It checks from multiple locations and supports maintenance windows, escalation policies, and team features.

The self-hosted agent option is particularly interesting: you run an Oh Dear agent on your internal network, and it reports results to Oh Dear’s dashboard. This gives you external monitoring of internal services without exposing them to the internet.

Pricing

Starts at $16/month for 20 sites. No free tier, but a 10-day free trial is available.

Pros

  • Most comprehensive feature set of any tool on this list
  • Multi-location monitoring
  • Broken link checking and mixed content detection
  • Lighthouse performance scoring
  • Self-hosted agent for internal monitoring
  • Beautiful dashboard and reports
  • Excellent documentation and responsive support team

Cons

  • No free tier — $16/month minimum
  • Overkill for most self-hosted setups
  • The monitoring agent is not open source

Who It Is For

Developers and small teams running production websites who need comprehensive monitoring beyond basic uptime checks. The $16/month price is justified if you are monitoring revenue-generating sites where downtime costs money. For a home lab, it is usually overkill.

Cloud-Based Monitoring Tools

6. UptimeRobot

The most generous free tier. The monitoring tool everyone has heard of.

UptimeRobot has been around since 2010 and is probably the first monitoring service most people encounter. Its free tier is remarkably generous: 50 monitors with 5-minute check intervals. For a self-hosted setup with 10-20 services, this covers everything with room to spare.

What It Does

UptimeRobot checks HTTP(S), keyword (response body match), ping, port, and heartbeat (cron monitoring) endpoints. It sends alerts via email, SMS, Slack, Telegram, webhooks, and many other integrations. It includes a public status page and tracks historical uptime data.

Pricing

PlanPriceMonitorsIntervalLocations
Free$0505 min1 (rotating)
Pro$7/mo501 min3+
Business$21/mo10030 sec10+
Enterprise$37/mo20030 sec13+

Pros

  • 50 free monitors — the most generous free tier of any cloud monitoring service
  • Simple, intuitive web interface
  • Heartbeat/cron monitoring included in the free tier
  • Status pages with custom domains (paid) or UptimeRobot subdomain (free)
  • Reliable — UptimeRobot has been running for over 15 years
  • Mobile apps for iOS and Android

Cons

  • 5-minute minimum interval on the free tier (your site could be down for almost 5 minutes before an alert)
  • Single monitoring location on the free tier (no geographic redundancy)
  • No certificate expiration monitoring on the free tier
  • The UI has not been significantly updated in years — functional but dated
  • API rate limits on the free tier
  • Status page customization is limited on the free tier

Who It Is For

Everyone. UptimeRobot’s free tier should be part of every self-hoster’s monitoring stack. Even if you run Uptime Kuma internally, use UptimeRobot to monitor your server from the outside. It solves the monitoring paradox: if your server goes down, UptimeRobot (running on their infrastructure) still detects the outage and alerts you.


7. Better Stack (formerly Better Uptime)

Modern monitoring with an on-call management twist.

Better Stack (rebranded from Better Uptime) combines uptime monitoring with incident management and on-call scheduling. The free tier is more limited than UptimeRobot (10 monitors vs 50) but includes features that UptimeRobot charges for.

What It Does

Better Stack monitors HTTP(S), TCP, UDP, DNS, SMTP, POP3, IMAP, and ICMP endpoints. It checks from 6+ locations simultaneously and uses multi-location confirmation to reduce false positives (a location must fail from multiple regions before triggering an alert). It includes incident timelines, on-call scheduling, and a status page.

Pricing

PlanPriceMonitorsInterval
Free$0103 min
Team$29/mo5030 sec
Business$85/mo15030 sec

Pros

  • Multi-location checking reduces false positives
  • On-call scheduling and escalation policies on paid plans
  • Beautiful, modern UI and status pages
  • Screenshot capture on downtime (shows what the page looked like when it went down)
  • HTTP method and header customization
  • 3-minute intervals on the free tier (better than UptimeRobot’s 5 minutes)

Cons

  • Only 10 monitors on the free tier (vs UptimeRobot’s 50)
  • Many useful features locked behind the $29/month plan
  • Relatively new company — less track record than UptimeRobot
  • Status page customization is limited on the free tier

Who It Is For

Teams and individuals who want a more modern monitoring experience than UptimeRobot, especially if on-call scheduling and incident management are important. The 10-monitor free tier covers a small home lab, but larger setups will quickly need the paid plan or a different tool.


8. Checkly

Monitoring as code for developers. Playwright-based browser checks.

Checkly is aimed squarely at developers. It treats monitoring as code: you write checks in JavaScript (using Playwright for browser checks and Node.js for API checks), version control them, and deploy them through a CLI. It is the Gatus of cloud monitoring.

What It Does

Checkly runs two types of checks:

  1. API checks: HTTP requests with assertions on status codes, response bodies, headers, and response times.
  2. Browser checks: Full Playwright scripts that navigate your site, fill forms, click buttons, and verify that everything works. This catches issues that simple HTTP checks miss (broken JavaScript, CSS loading failures, API errors that only appear in the browser).
// Example Checkly browser check
const { test, expect } = require('@playwright/test');

test('Nextcloud login works', async ({ page }) => {
  await page.goto('https://cloud.yourdomain.com');
  await page.fill('#user', 'admin');
  await page.fill('#password', process.env.NEXTCLOUD_PASSWORD);
  await page.click('#submit-form');
  await expect(page.locator('.app-navigation')).toBeVisible();
});

Pricing

PlanPriceAPI ChecksBrowser Checks
Free$05 (10 min interval)1
Team$30/mo20 (1 min)5
EnterpriseCustomUnlimitedUnlimited

Pros

  • Monitoring as code — checks live in your Git repo
  • Playwright-based browser checks catch issues other tools miss
  • CLI for deploying and managing checks
  • Multi-location checking
  • Terraform provider for infrastructure-as-code setups
  • Excellent developer experience

Cons

  • Free tier is very limited (5 API checks, 1 browser check)
  • 10-minute minimum interval on the free tier
  • Overkill for simple uptime monitoring
  • Requires JavaScript knowledge to write browser checks
  • No status page feature on the free tier
  • Pricing can add up quickly for comprehensive monitoring

Who It Is For

Developers running web applications who want to monitor actual user workflows, not just endpoint availability. If your self-hosted services have login flows, forms, or interactive features that need to work, Checkly’s browser checks are invaluable. For basic “is it up?” monitoring, it is overkill.


9. Hetrix Tools

Generous free tier with server monitoring included.

Hetrix Tools is less well-known than UptimeRobot but offers a competitive free tier that includes both uptime monitoring and server resource monitoring (CPU, RAM, disk) via an installed agent.

What It Does

Hetrix monitors HTTP(S), ping, port, and keyword endpoints from multiple global locations. Uniquely for a free monitoring service, it also includes a server monitoring agent that tracks CPU usage, memory usage, disk space, network traffic, and running processes. It also monitors IP blacklists (useful if you run a mail server).

Pricing

PlanPriceUptime MonitorsServer Monitors
Free$0151
Basic$5.99/mo5010
Pro$14.99/mo15030

Pros

  • 15 uptime monitors on the free tier
  • 1 server resource monitor (CPU, RAM, disk) on the free tier
  • 1-minute check intervals on the free tier
  • IP blacklist monitoring (excellent for mail server operators)
  • Multi-location checking
  • Status pages included
  • Reasonable pricing on paid plans

Cons

  • UI is functional but looks dated
  • Fewer notification integrations than UptimeRobot
  • The server agent must be installed on each monitored server
  • Less community documentation and tutorials
  • Reporting features are basic on the free tier

Who It Is For

Self-hosters who want uptime monitoring and basic server resource monitoring in a single free tool. The blacklist monitoring is a unique feature that is genuinely useful if you run a self-hosted mail server (Mailcow, Mailu, etc.) and need to know if your IP gets listed on spam blacklists.


10. Freshping

50 free monitors from the Freshworks ecosystem.

Freshping is the free uptime monitoring tool from Freshworks (the company behind Freshdesk, Freshservice, and other business tools). It matches UptimeRobot’s 50-monitor free tier and adds 1-minute check intervals, which UptimeRobot locks behind its paid plan.

What It Does

Freshping monitors HTTP(S) and ICMP endpoints from up to 10 global locations. It includes a public status page, multi-location checks, and integrates with the broader Freshworks ecosystem (Freshdesk for ticket creation on downtime, for example).

Pricing

PlanPriceMonitorsIntervalLocations
Free$0501 min10
PaidIntegrated with Freshworks suite250+30 sec10+

Pros

  • 50 monitors on the free tier — matching UptimeRobot
  • 1-minute intervals on the free tier — better than UptimeRobot’s 5 minutes
  • 10 check locations on the free tier — better than UptimeRobot’s 1 location
  • Clean, modern UI
  • Multi-user support with role-based access

Cons

  • Email-only notifications on the free tier (no Slack, Discord, or webhook)
  • No keyword monitoring on the free tier
  • No TCP/port monitoring — HTTP(S) and ping only
  • Part of the larger Freshworks ecosystem (you need a Freshworks account)
  • Less focused on developer/self-hosting use cases
  • Limited API access on the free tier

Who It Is For

Users who want more monitors with faster intervals than UptimeRobot’s free tier and do not need advanced notification channels. The email-only limitation on the free tier is a significant drawback, but if email alerts are sufficient for your setup, Freshping’s free tier is objectively superior to UptimeRobot’s in terms of check frequency and locations.


11. Pingdom (Free Tier)

The original uptime monitoring service, now with a minimal free tier.

Pingdom has been around since 2007 and was acquired by SolarWinds in 2014. It is one of the most recognized names in uptime monitoring. The free tier is very limited (1 monitor), but it is worth mentioning because the paid product is excellent and many teams encounter it in professional settings.

What It Does

Pingdom monitors HTTP(S), TCP, UDP, DNS, SMTP, POP3, and IMAP endpoints from 100+ global locations. The paid plans include Real User Monitoring (RUM) that tracks actual user experience via a JavaScript snippet, transaction monitoring (multi-step flows), and detailed performance analytics.

Pricing

PlanPriceMonitorsFeatures
Free$01Basic uptime + 1 status page
Synthetic$15/mo10Multi-step transactions
Advanced$85/mo50RUM + advanced analytics

Pros

  • 100+ check locations — the most of any tool on this list
  • Extremely reliable infrastructure (17+ years in operation)
  • Real User Monitoring on paid plans
  • Transaction monitoring for multi-step workflows
  • Comprehensive analytics and reporting
  • Enterprise-grade with SLAs

Cons

  • Only 1 monitor on the free tier — nearly useless for self-hosters
  • Expensive paid plans ($15/month for 10 monitors)
  • Owned by SolarWinds (some trust concerns after the 2020 supply chain attack)
  • Overkill for self-hosting — designed for enterprise websites
  • The free tier feels like a teaser rather than a useful product

Who It Is For

Honestly, not self-hosters. Pingdom’s free tier is too limited, and its paid plans are too expensive for home lab use. It is included in this list for completeness and because you may encounter it at work. For self-hosting, UptimeRobot, Freshping, or Hetrix offer far more value at the free tier.

Detailed Comparison Table

FeatureUptime KumaGatusStatping-ngCronPingUptimeRobotBetter StackChecklyHetrixFreshpingPingdom
TypeSelf-hostedSelf-hostedSelf-hostedCloudCloudCloudCloudCloudCloudCloud
Free MonitorsUnlimitedUnlimitedUnlimited55010515501
Min Interval20s1s30s1m5m (free)3m (free)10m (free)1m1m1m
HTTP(S) ChecksYesYesYesNoYesYesYesYesYesYes
TCP/Port ChecksYesYesYesNoYesYesNoYesNoYes
DNS ChecksYesYesNoNoNoYesNoNoNoYes
Ping (ICMP)YesYesYesNoYesYesNoYesYesNo
Keyword CheckYesYes (regex)YesNoYesYesYesYesNo (free)Yes
Cron/HeartbeatYesNoNoYesYesYesNoNoNoNo
Certificate MonitorYesYesNoNoPaidYesNoNoNoYes
Browser ChecksNoNoNoNoNoNoYesNoNoPaid
Status PageYesYesYesNoYesYesNo (free)YesYesYes
Multi-LocationNoNoNoNoPaidYes (free)YesYesYesYes
REST APILimitedNo (config file)YesYesYesYesYesYesYesYes
Docker DeployYesYesYesN/AN/AN/AN/AN/AN/AN/A
Mobile AppNo (responsive web)NoNoNoYesYesNoNoYesYes

How to Choose: Decision Framework

Use this flowchart to narrow down your choice:

Do you want to self-host your monitoring?

  • Yes, and I want a web UI: Uptime Kuma
  • Yes, and I want config-as-code: Gatus
  • No, I want a cloud service: continue below

How many monitors do you need for free?

  • 50+: UptimeRobot or Freshping
  • 15: Hetrix Tools
  • 10: Better Stack
  • 5: Checkly or CronPing

What is your primary use case?

  • General uptime monitoring: UptimeRobot
  • Cron job / background task monitoring: CronPing
  • Developer-oriented monitoring as code: Checkly
  • Server resource monitoring included: Hetrix Tools
  • Fastest check intervals (free): Freshping (1 min)

Setting Up Alerts That Actually Work

Having monitors is useless if the alerts do not reach you. Here is a practical alert setup for self-hosters:

Primary Channel: Push Notifications

Use Pushover ($5 one-time purchase) or ntfy (free, self-hosted). These bypass email deliverability issues and get your attention even at 2 AM.

# ntfy alert example (works with Uptime Kuma webhook)
curl -d "Nextcloud is DOWN" https://ntfy.sh/your-monitoring-topic

Secondary Channel: Discord or Telegram

Create a dedicated #alerts channel in your Discord server or a Telegram group. This provides a historical record of all alerts and is easy to share with family members or roommates.

Escalation: Phone Call

For critical services, use a service like PagerDuty (free tier: 1 user, 1 escalation policy) or Better Stack’s on-call feature to escalate to a phone call if an alert is not acknowledged within a set time.

Avoid Alert Fatigue

The biggest mistake in monitoring is alerting on everything. If you get 10 notifications a day, you start ignoring them all. Configure alerts only for:

  • Services going down (not slow, not degraded — down)
  • Certificates expiring within 14 days (not 30 days)
  • Background tasks missing their schedule (not running slowly)
  • Disk usage above 90% (not 80%)

A monitoring setup that sends 1-2 alerts per month is one you will actually pay attention to.

Monitoring Architecture for Self-Hosters

The optimal monitoring setup for a self-hosted environment uses two layers:

Layer 1: Internal Monitoring (Uptime Kuma)

Run Uptime Kuma on your server. Monitor every service: HTTP endpoints, TCP ports, Docker containers. Set 60-second check intervals. Configure notifications to Discord/Telegram/Pushover. This gives you detailed internal visibility.

Layer 2: External Monitoring (UptimeRobot + CronPing)

Use UptimeRobot’s free tier to monitor your publicly accessible services from outside your network. This catches network outages, DNS failures, and scenarios where your entire server goes down (which Uptime Kuma cannot detect because it goes down with the server).

Use CronPing’s free tier to monitor your 3-5 most critical background tasks (daily backup, database maintenance, certificate renewal).

External Internet

    ├── UptimeRobot (cloud) ──── monitors ──→ Your public services
    │                                          (Nextcloud, Jellyfin, etc.)

    ├── CronPing (cloud) ──── receives pings ← Your cron jobs
    │                                          (backups, maintenance)

    └── Your Server

         ├── Uptime Kuma ──── monitors ──→ All internal services
         │                                  (databases, containers, ports)

         ├── Nextcloud
         ├── Jellyfin
         ├── Home Assistant
         └── ...

This two-layer approach costs nothing (all free tiers) and provides comprehensive monitoring with no single point of failure for alerting.

Verdict: Our Recommendations

Best Overall Self-Hosted: Uptime Kuma

For 95% of self-hosters, Uptime Kuma is the right choice. Install it in 30 seconds, configure monitors through the web UI, set up Discord/Telegram notifications, and forget about it. It handles HTTP checks, TCP checks, Docker container monitoring, and even basic cron monitoring. The UI is polished, the project is actively maintained, and the community is large and helpful.

Best for DevOps Workflows: Gatus

If you manage your infrastructure as code and want your monitoring configuration in the same Git repo as your docker-compose files, Gatus is the tool. Its YAML-based configuration, powerful condition language, and minimal resource usage make it ideal for infrastructure-as-code workflows.

Best Free Cloud Monitoring: UptimeRobot

50 monitors at no cost, from a company that has been doing this for 15 years. The 5-minute check interval on the free tier is the main limitation, but for most self-hosted setups, a potential 5-minute detection delay is perfectly acceptable.

Best for Background Task Monitoring: CronPing

If your backups, maintenance scripts, or scheduled tasks have ever failed silently, CronPing solves that problem. A single curl command at the end of your scripts is all it takes. The free tier covers the essentials, and it complements any general uptime monitor rather than replacing it.

Best Value (Free Tier): Freshping

50 monitors, 1-minute intervals, 10 check locations — all free. The email-only notification limitation is the catch, but if email works for your alert workflow, Freshping offers the best free tier specifications of any cloud monitoring service.

For Production Websites: Oh Dear or Better Stack

If you are monitoring revenue-generating websites and need comprehensive checks (broken links, mixed content, performance scoring, on-call scheduling), Oh Dear or Better Stack’s paid plans are worth the investment. The cost is trivial compared to the revenue lost during undetected downtime.

Final Thoughts

Monitoring is one of those things that feels unnecessary until the moment it saves you. The setup takes 15 minutes. The ongoing maintenance is essentially zero. And the first time you get an alert, fix the issue, and restore service before anyone notices a problem, you will wonder why you did not set this up sooner.

The practical advice is simple: install Uptime Kuma on your server, sign up for UptimeRobot’s free tier, and add your critical cron jobs to CronPing. That three-tool combination covers internal monitoring, external monitoring, and background task monitoring at a total cost of zero dollars.

Do it today. Your 2 AM self will thank you.