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.
| Call | Healthchecks.io | Vigil by PuzariCloud | Better Stack | Cronitor | Dead Man's Snitch | Uptime Kuma (push) |
|---|---|---|---|---|---|---|
| Success | hc-ping.com/<uuid> | puzaricloud.in/ping/<uuid> | incidents.betterstack.com/api/v1/heartbeat/<token> | cronitor.link/p/<api-key>/<monitor>?state=complete | nosnch.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=1 | Not supported | — | Monitor keys are names you choose | — | — |
| Request body kept | First 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).
| Tool | Accepts Healthchecks URLs? | Free tier | Paid | What else it monitors | Self-hosting |
|---|---|---|---|---|---|
| Healthchecks.io (hosted) | The reference | Hobbyist: 20 jobs, 100 log entries per job | Business $20/mo ($192/yr): 100 jobs, 1,000 log entries, 50 SMS & WhatsApp credits, 20 phone call credits | Cron and background jobs | Yes, 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 SMTP | Python 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 history | Starter $19/mo: 50 monitors, 30 days of history | Jobs plus uptime, API and browser checks, servers, logs, errors and status pages | Self-hosted edition $149/mo |
| Cronitor | No (own telemetry API) | Hacker: 5 monitors, email and Slack, basic status page | Business: $2 per monitor + $5 per user a month | Jobs, uptime checks, heartbeats, status pages, web analytics | No |
| Better Stack heartbeats | Partly: /fail and /<exit code> suffixes, different base URL | 10 monitors and heartbeats in total | +10 heartbeats $20/mo ($17 yearly); responder licence $34/mo for phone and SMS | Part of an incident, uptime, logs and tracing platform | No |
| Dead Man's Snitch | No (own URLs) | The Lone Snitch: 1 snitch | Little Birdy $5/mo (3); Private Eye $19/mo (100); Surveillance Van $49/mo (300) | Cron jobs only; unlimited team members on paid plans | On-premise on request |
| Uptime Kuma push monitors | No (own push URL) | Free, MIT-licensed | — | A push monitor next to Kuma's own uptime checks | Yes (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=1and 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
sendalertsprocess.
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.