Buyer's guide · facts checked 18 October 2026

Healthchecks.io alternatives, starting with the ones that speak its ping protocol

Updated · written by Ritom Puzari at PuzariCloud, which makes Vigil, one of the tools below

Healthchecks.io is excellent, and for cron jobs alone its free 20 checks are hard to beat. If you want to move or add a second watcher, two options here accept its ping URLs with only the host and UUID changed: Healthchecks itself, self-hosted, and Vigil by PuzariCloud (/start, /fail, /log, exit codes, ?rid=). Cronitor, Better Stack and Dead Man's Snitch use their own URLs.

Every competitor fact on this page was read from that vendor's own pricing page, documentation or source repository on 18 October 2026 (checked 2026-10-18), and each row links its source. Where the vendor's page does not say something, we write "not stated" instead of guessing. Vigil's rows come from our own plan table and code. Prices change: the vendor's site is the final word.

Healthchecks.io is the cron monitor many developers trust: a clean ping API, cron expressions with time zones, start and failure signals, job output logs, and an open-source codebase you can host yourself. It is run by one developer, and it is very good. So this page starts with a fair question: do you need an alternative at all?

People usually look for one for three reasons: they want their cron jobs in the same tool as uptime checks and status pages, they need more jobs than the free 20 without a per-job price, or they want a second, independent watcher so that one provider's outage cannot hide a failed backup. Whatever the reason, the cheapest switch is a tool that already understands the URLs your scripts call. That is what the first table shows.

We make Vigil by PuzariCloud, one of the tools below, and we built its heartbeat URLs to follow the Healthchecks grammar. Vigil is not affiliated with Healthchecks.io.

The ping URL grammar, side by side

Each row is a call your scripts make to Healthchecks. Each column shows how the same call looks in another tool, as documented on the page linked in the header. A dash means the page we read does not document an equivalent.

CallHealthchecks.ioVigil by PuzariCloudBetter StackCronitorDead Man's SnitchUptime Kuma (push)
Successhc-ping.com/<uuid>puzaricloud.in/ping/<uuid>incidents.betterstack.com/api/v1/heartbeat/<token>cronitor.link/p/<api-key>/<monitor>?state=completenosnch.in/<token><your-kuma>/api/push/<token>?status=up
Run started…/<uuid>/start…/<uuid>/start—?state=run——
Failure…/<uuid>/fail…/<uuid>/fail…/<token>/fail?state=fail—?status=down
Exit status…/<uuid>/<0-255>…/<uuid>/<0-255>…/<token>/<exit code>&status_code=<n>POST s=<exit status>—
Log a message only…/<uuid>/log…/<uuid>/log————
Pair start and finish?rid=<uuid>?rid=<uuid>—&series=<id>——
Slug URLs, auto-create/<ping-key>/<slug>, ?create=1Not supported—Monitor keys are names you choose——
Request body keptFirst 100 kB (Ping-Body-Limit header)First 100 KB (Ping-Body-Limit header)Output with a failure——— (msg= query parameter instead)

All six accept plain HTTP requests from curl. Healthchecks and Vigil accept GET, POST and HEAD on every ping URL; Uptime Kuma's push route accepts any method.

What "compatible" means in practice

For a script that calls https://hc-ping.com/<uuid>, moving to a compatible tool means replacing the host and the UUID, and nothing else. A typical wrapper keeps working line for line:

URL=https://puzaricloud.in/ping/<your-vigil-uuid>   # was https://hc-ping.com/<uuid>
RID=$(cat /proc/sys/kernel/random/uuid)
curl -fsS -m 10 --retry 5 -o /dev/null "$URL/start?rid=$RID"
./backup.sh > /tmp/backup.log 2>&1
curl -fsS -m 10 --retry 5 --data-binary @/tmp/backup.log "$URL/$??rid=$RID"

The last line reports the exit status (0 is success, 1 to 255 is failure), sends the job's output as the request body, and pairs the finish with its own start so overlapping runs get the right duration. Vigil keeps the first 100 KB of the body as the run's log and returns a Ping-Body-Limit header, as Healthchecks does.

With Cronitor, Better Stack or Dead Man's Snitch the same job needs different calls: Cronitor uses ?state=run and ?state=complete on its own host, Better Stack takes /fail and an exit-code suffix on a different base URL, and Dead Man's Snitch takes the exit status as a POST field. None of that is hard, but every script has to be edited, not just its URL variable.

Free tiers, prices and scope

Read on 18 October 2026 from each vendor's page (linked).

ToolAccepts Healthchecks URLs?Free tierPaidWhat else it monitorsSelf-hosting
Healthchecks.io (hosted) The referenceHobbyist: 20 jobs, 100 log entries per jobBusiness $20/mo ($192/yr): 100 jobs, 1,000 log entries, 50 SMS & WhatsApp credits, 20 phone call creditsCron and background jobsYes, BSD 3-clause
Healthchecks (self-hosted) Identical (same code)Free software; you pay for the server—Same as hosted; you run the web app, the sendalerts process and SMTPPython 3.12+, Django 6.0, PostgreSQL or MySQL; Docker Compose sample
Vigil by PuzariCloud Compatible subset: UUID URLs, /start, /fail, /<code>, /log, ?rid=20 monitors (heartbeats count as monitors), 7 days of historyStarter $19/mo: 50 monitors, 30 days of historyJobs plus uptime, API and browser checks, servers, logs, errors and status pagesSelf-hosted edition $149/mo
Cronitor No (own telemetry API)Hacker: 5 monitors, email and Slack, basic status pageBusiness: $2 per monitor + $5 per user a monthJobs, uptime checks, heartbeats, status pages, web analyticsNo
Better Stack heartbeats Partly: /fail and /<exit code> suffixes, different base URL10 monitors and heartbeats in total+10 heartbeats $20/mo ($17 yearly); responder licence $34/mo for phone and SMSPart of an incident, uptime, logs and tracing platformNo
Dead Man's Snitch No (own URLs)The Lone Snitch: 1 snitchLittle Birdy $5/mo (3); Private Eye $19/mo (100); Surveillance Van $49/mo (300)Cron jobs only; unlimited team members on paid plansOn-premise on request
Uptime Kuma push monitors No (own push URL)Free, MIT-licensed—A push monitor next to Kuma's own uptime checksYes (that is the only way)

Who should stay on Healthchecks.io

Most people reading this should probably stay. Healthchecks.io is the better choice if:

  • You only monitor jobs. It does that one thing extremely well, and its interface is built around it.
  • You have many jobs and a small budget. Business is $20 a month (or $192 a year) for 100 jobs with 1,000 log entries each. Vigil's Starter is $19 for 50 monitors in total, so for jobs alone Healthchecks gives you more per dollar.
  • You use slug URLs or auto-provisioning. Healthchecks lets a script ping /<ping-key>/<slug>?create=1 and creates the check on the fly. Vigil does not support either.
  • You want SMS, WhatsApp or phone calls included. Business includes 50 SMS and WhatsApp credits and 20 phone call credits a month. Hosted Vigil makes no SMS or phone calls.
  • You run an open-source project or a non-profit. Healthchecks.io offers its Business plan free to them.
  • You need long per-job history on Free. 100 log entries cover two years of a weekly job. Vigil's Free keeps 7 days.
  • You want to host it yourself under a permissive licence. Healthchecks is BSD 3-clause; you will need Python 3.12+, Django 6.0, PostgreSQL or MySQL, SMTP and the sendalerts process.

When an alternative makes sense

  • Jobs next to everything else: if you also watch websites, APIs, SSL expiry, servers or a public status page, one tool means one alert routing setup and one bill. Vigil, Cronitor and Better Stack all cover more than jobs; Vigil is the one that keeps the Healthchecks URL format.
  • A second watcher: backups and billing runs are worth watching twice. Ping both services from the same script; if either provider has a bad day, the other still tells you.
  • Unlimited team members: Dead Man's Snitch's paid plans and every paid Vigil plan have no per-user charge. Cronitor charges $5 per user a month.
  • Rupee billing: buyers in India pay Vigil in INR (₹1,499 a month for Starter) with UPI through Paddle.

Running both side by side

Because the grammar matches, a two-line shell function sends every signal to both services. It is a cheap way to trial Vigil without touching your Healthchecks setup:

hc() {  # usage: hc "" | hc /start | hc /fail | hc /$?
  curl -fsS -m 10 --retry 3 -o /dev/null "https://hc-ping.com/$HC_UUID$1" || true
  curl -fsS -m 10 --retry 3 -o /dev/null "https://puzaricloud.in/ping/$VIGIL_UUID$1" || true
}

Vigil's heartbeats, including what they do not do

A Vigil heartbeat expects a ping on a fixed period (as short as one minute, on every plan) or on a cron schedule with a time zone such as 0 2 * * * in Asia/Kolkata, with a grace period and an optional maximum run time. New heartbeats get a UUID token. Pings can be /start, /fail, an exit status, or /log (a message that never changes state). Heartbeats count toward the same monitor allowance as uptime checks: 20 on Free, 50 on Starter, 200 on Pro.

What it does not do: slug URLs and ?create=1; a separate short ping host like hc-ping.com (pings go to puzaricloud.in/ping); SMS or phone alerts on the hosted service; and keeping your Healthchecks UUIDs (each heartbeat gets its own). All checks and the ping endpoint run from one location in Germany. The full URL mapping, with borgmatic and runitor notes, is in the cron job monitoring guide; the feature-by-feature comparison is on Vigil vs Healthchecks.io.

Who should pick what

  • Jobs only, any budget: stay on Healthchecks.io. Self-host it if you want full control.
  • Jobs plus uptime checks and a status page, keeping your scripts: Vigil by PuzariCloud.
  • Jobs plus uptime, web analytics and a mature team product, per-monitor pricing: Cronitor.
  • Already on Better Stack for incidents or logs: its heartbeats, accepting that scripts need new URLs.
  • A handful of jobs and the simplest possible tool: Dead Man's Snitch, from $5 a month for 3 snitches.
  • A homelab running Uptime Kuma: its push monitors, plus something outside the homelab to watch Kuma itself.

Frequently asked questions

Can I keep my Healthchecks UUIDs when moving to Vigil?

No. Each Vigil heartbeat has its own UUID token, so you replace the whole URL (host and UUID) in each job. Everything after the UUID — /start, /fail, /log, the exit-status suffix and ?rid= — stays the same.

Does Vigil support Healthchecks slug URLs or ?create=1?

No. Vigil accepts only the UUID form (https://puzaricloud.in/ping/<uuid>). Create the heartbeat in Vigil first, then copy its URL. Tools that insist on slug URLs or auto-provisioning should stay on Healthchecks.

Is Healthchecks.io open source? Can I host it myself?

Yes. Healthchecks is licensed under the BSD 3-clause licence. It needs Python 3.12+, Django 6.0 and PostgreSQL or MySQL, and the project ships a sample Docker Compose setup. You also need SMTP for emails and a separate process (sendalerts) that sends the alerts.

Which Healthchecks.io alternative is cheapest for 100 cron jobs?

Among the tools here, Healthchecks.io Business itself: $20 a month (or $192 a year) for 100 jobs. Dead Man's Snitch Private Eye is $19 for 100. Vigil Starter is $19 for 50 monitors, so 100 jobs needs Pro ($49), which only makes sense if you also want uptime checks, servers or status pages in the same place.

Is Vigil affiliated with Healthchecks.io?

No. Vigil by PuzariCloud is an independent product that accepts the same ping URL format, so scripts written for Healthchecks work after a base-URL change. Healthchecks.io is a separate, well-run service by its own developer.

More buyer's guides

  • Best uptime monitoring tools in India (2026): INR pricing, UPI, GST invoices, WhatsApp and checks from India
  • Free status page tools: What the free tier of 11 hosted status page tools and 3 self-hosted ones really includes: own domain, email subscribers, built-in monitors and the catch
  • WhatsApp uptime alerts: Which uptime monitors send WhatsApp alerts natively, which need a gateway or webhook, how to set it up in Vigil by PuzariCloud, and what a message costs on Meta's India rate card
  • All comparisons: Vigil by PuzariCloud against one tool at a time, with prices

Try Vigil by PuzariCloud

Free for 20 monitors at 5-minute checks, commercial use allowed, no card. Look around a live workspace first if you prefer.