← Blog

August 21, 2026 · 6 min read

Scheduled job monitoring compared: Healthchecks, Cronitor, Dead Man's Snitch

Heartbeat monitoring tools mostly work the same way: your job pings a URL, and you get alerted when a ping is late. Nothing about that is cron-specific. It works for a systemd timer, a Kubernetes CronJob, a queue worker, or a nightly agent run just as well. The differences that matter are the pricing model, the free tier, whether you can run it yourself, and whether the tool checks what a run did or only that it checked in.

This is written by the team behind illari, which is one of the tools below. Where another option is the better pick, we say so.

The options

ToolChecksPricingFree tierSelf-host
Healthchecks.ioCheck-in, small payloadFlat tiers20 checksYes (BSD 3-clause)
CronitorCheck-in, run data, uptimePer-monitor + per-user5 monitorsNo
Dead Man's SnitchCheck-in onlyTiered by job count1 snitchNo
Uptime KumaCheck-in, uptimeFreeEverythingYes (MIT, self-host only)
illariCheck-in, run data, metricsFlat: Free / Pro $2025 monitorsNo

Details move around, so check each site before deciding. The shape of each option is stable, though.

Healthchecks.io

The reference implementation for this category. Open source under a BSD license, genuinely self-hostable, generous free tier, and a small paid plan for teams that want it hosted. It supports /start and /fail signals and a small payload on every ping, so it does some lightweight run data too.

Pick it if: you want open source, you want to self-host, or the free tier already covers you. It's hard to beat on those terms.

Cronitor

The most feature-broad option. Every plan bundles cron, heartbeat, website and API monitoring, plus synthetic browser checks and web analytics, and it owns crontab.guru. For scheduled jobs it captures output, tracks duration, and records exit codes.

The friction point is pricing: it meters per monitor and per user, so the bill grows with everything you add. If you monitor a lot, that math works against you, and the pricing quietly pushes you toward covering less than you should.

Pick it if: you want one tool spanning cron, uptime, and analytics, and per-monitor pricing works out at your scale.

Dead Man's Snitch

One of the originals, and still solid at the basic job: expect a check-in, alert when it's missing. The free tier is a single snitch; paid tiers are bucketed by how many “snitches” you need ($5 for 3, $19 for 100, $49 for 300). Email alerts on every plan, but Slack and other integrations start at the $19 tier.

Pick it if: you want something proven and simple and only have a handful of jobs.

Uptime Kuma

Not a service. It's a self-hosted app you run yourself. Push monitors give you heartbeat checks with a clean dashboard, for free, forever, on your own box.

The tradeoff is that you are now running and monitoring the monitor. If it's on the same infrastructure as your jobs, a bad enough outage takes both down together.

Pick it if: you enjoy self-hosting, want a nice UI, and are comfortable being your own point of failure.

illari

Where we've tried to be different:

  • A run is a run. A cron job, a systemd timer, a Kubernetes CronJob, a queue worker, a scheduled agent. The one-line integration and the alerts are the same for all of them, and a coding agent can wire it into a repo from one docs URL.
  • Checks what the run did (Pro). Beyond the check-in: exit code, run duration, output tail, and a hung-run alert when a start ping never gets its finish. Send your own numbers on the same ping (rows, cost_usd, tool_calls) and alert on a threshold (rows < 1) or on a z-score baseline that flags a run far off its own recent history. That is the case a check-in alone misses.
  • More than one way in. A single HTTP request from any language, a CLI (illari run -- ./job.sh) that wraps a command and reports start, exit code, and output, and a REST API with an OpenAPI spec for managing monitors from code.
  • Flat pricing, every channel included. Free, or Pro at $20/month, with no per-monitor or per-seat metering. Slack, Discord, Telegram, PagerDuty, incident.io, ntfy, Pushover, and plain webhooks are all on Pro, not gated behind a higher tier.
  • Schedule-accurate detection. A cron expression and an IANA timezone, with daylight-saving handled, so a 2 a.m. job doesn't false-alarm twice a year. See the schedule tester.
  • Narrow on purpose. It watches scheduled and triggered runs. It is not trying to become an uptime or observability platform.

Pick it if: you want hosted monitoring at a flat price, you're watching a mix of scheduled jobs, workers, and agent runs, your schedules are timezone-sensitive, or you want run-level checks (exit code, duration, metrics) without a second tool.

The short version

Under about 20 jobs on simple schedules, Healthchecks.io's free tier is hard to argue with. To self-host and be your own backstop, run Uptime Kuma. For one tool across cron, uptime and analytics, if the per-monitor math works out, pick Cronitor.

Reach for illari when you've outgrown a free tier and don't want a per-monitor meter, when your schedules cross timezones or hit daylight-saving edges, or when you want exit-code and output checks in the same place, at a flat $20 whether that's 30 monitors or 300. Try the schedule tester or read the docs.

Monitor a scheduled job with illari

Your job pings a URL when it runs. Miss the window and you get an alert. 25 monitors free, no credit card.