7 min read

Best Cron and Scheduled Job Monitoring Tools for Indie Hackers in 2026

Your nightly backup stopped running three weeks ago and nothing alerted you, because nothing errored. Here is what actually catches that.

Best Cron and Scheduled Job Monitoring Tools for Indie Hackers in 2026

Your nightly database backup stopped running on August 12. You found out on September 4, when you needed it.

Nothing alerted you, because nothing errored. The job didn't throw an exception or exit non-zero. It just stopped being invoked, so there was no exception to catch, no log line to grep, and nothing for Sentry to report. Your error tracker was working perfectly the whole time. It was watching the wrong thing.

That's the gap cron monitoring fills, and it's the one piece of the stack most solo builders skip.

How Does a Dead Man's Switch Actually Work?

The model is inverted compared to every other monitor you run. Instead of something calling your app to check it's alive, your job calls out every time it finishes. The monitor holds a timer. If the ping doesn't arrive before the deadline plus a grace period, you get an alert.

That's it. One HTTP request appended to the end of your job, usually a curl at the end of the crontab line.

How a heartbeat monitor catches a job that never ran Two parallel flows. In the healthy lane the cron fires, the job finishes, a ping is sent, the monitor timer resets and no alert is raised. In the failure lane the cron never fires, so no job runs, no ping arrives, the grace period expires and the monitor raises an alert. HEALTHY RUN Cron fires Job finishes Ping sent curl $URL Timer resets No alert SILENT FAILURE Cron never fires No exception, no log line No ping Grace period expires Alert fires The monitor never watches your job. It watches the gap where the ping should have been. LEGEND Nothing observable happens Healthy outcome You get told

One rule matters more than any feature comparison. Never run the monitor on the same machine as the jobs. A server that dies takes both with it, and you learn nothing.

Quick Verdict

Tool Best for Free tier Rating
Healthchecks.io The default pick 20 jobs 4.5/5
Better Stack Uptime and heartbeats together 10 heartbeats + 10 monitors 4.5/5
Cronitor Catching slow jobs, not just dead ones 5 monitors 4/5
Dead Man's Snitch One critical job, nothing more 1 snitch 3.5/5
Oh Dear Laravel shops who want everything in one None, $17/mo 4/5
Hyperping Cron plus status page on one bill 20 monitors 3.5/5

Healthchecks.io

The one I'd start with. The free Hobbyist plan monitors 20 jobs with 100 log entries each, which is more than most solo projects will ever schedule. Supporter is $5 a month for the same limits if you want to fund it. Business is $20 a month for 100 jobs, 1,000 log entries, 50 SMS credits and 20 phone call credits.

The real argument is the escape hatch. Healthchecks is BSD 3-clause open source and the hosted service runs the same code you can deploy yourself. Pricing risk is close to zero when you can walk with the software.

Who should skip it: anyone who wants one vendor for uptime, errors and heartbeats. This does one job.

Better Stack

The most generous free tier here by some distance. Ten monitors and ten heartbeats, checks as often as every 30 seconds, and unlimited SMS and phone call alerts without paying anything. Phone alerts on a free plan is unusual enough to be the deciding factor for a lot of people.

Scaling costs $25 a month per 50 extra monitors and $20 a month per 10 extra heartbeats, dropping to $21 and $17 on annual billing. Heartbeats get expensive faster than monitors do, so watch that ratio if you schedule a lot of small jobs.

It also shows up in our uptime monitoring roundup, which is the other half of this problem.

Who should skip it: anyone monitoring 40 jobs. The heartbeat pricing works against you at that point.

Cronitor

Cronitor is the one that knows your job ran slowly. It's schedule aware, so it tracks duration and can alert when a job that normally takes 40 seconds suddenly takes nine minutes. That's the failure that precedes the outage, and none of the pure heartbeat services see it.

Free Hacker gives you 5 monitors, one seat, and email and Slack only. Business is usage based at $2 per monitor plus $5 per user, so 20 monitors across 3 people works out at $55 a month, with 6 months of retention and all 11 alert integrations including SMS and on-call routing.

Who should skip it: anyone with a handful of jobs. At small scale you're paying for analytics you won't read.

Dead Man's Snitch

The oldest and simplest option, and it still does the job. Free covers exactly one snitch, which is enough if you have precisely one thing that must not die quietly. Little Birdy is $5 a month for 3, Private Eye is $19 for 100, Surveillance Van is $49 for 300 with smart alerts and error notices.

Every paid tier carries unlimited team members, which is a nicer stance than most.

Who should skip it: anyone comparing on features. The jump from 3 monitors to 100 with nothing in between is awkward if you land at 8.

Oh Dear

Scheduled task monitoring is included in every Oh Dear plan alongside uptime, SSL, broken links, DNS, performance, domain expiry and status pages. Nothing is gated to a higher tier. The only thing that changes as you pay more is how many sites you watch.

Solo is $17 a month for 2 sites, Solo Plus is $32 for 5, Freelance is $55 for 10, all with unlimited team members. It's built by people from the Laravel world and it shows in how the scheduled task integration fits a Laravel app.

Who should skip it: anyone with one site and one cron job. You're buying nine products to use one.

Hyperping

Hyperping folds heartbeat checks in beside uptime monitoring rather than selling them separately. The free plan covers 20 monitors at 5 minute checks with one status page. Essentials at $29 a month brings 50 monitors, 30 second checks and a status page on your own domain. Pro at $89 gets 100 monitors and three status pages. Annual billing gives you two months free.

The pricing page counts monitors, not cron jobs, so budget by total checks rather than by scheduled tasks. It's the tidiest option if you want monitoring and a public status page on one invoice.

Who should skip it: cron-first users. Paying $29 a month to get past a free tier built around uptime is poor value when Healthchecks watches 20 jobs for nothing.

What About Laravel's Scheduler?

If you're on Laravel you already have the wiring. The scheduler ships with pingOnSuccess and pingOnFailure, plus pingBefore and thenPing for the start and end of a task, and conditional variants of all four. Point them at a Healthchecks or Cronitor URL and you're done in one line per task.

Schedule::command('backup:run')
    ->dailyAt('02:00')
    ->pingOnSuccess($url)
    ->pingOnFailure($failureUrl);

No package needed. This is the cheapest observability win available to a Laravel app, and it pairs well with the queue side covered in our background job tools roundup.

How Should You Choose?

Count your jobs first, because that number decides almost everything.

Under 20 jobs and no budget: Healthchecks.io free. It's not a trial, it's a real tier, and the self-host option means you never get squeezed later.

Already paying for uptime monitoring: Better Stack, and consolidate. Ten free heartbeats bolted onto monitoring you already run is less work than a second vendor and a second login.

Jobs where timing matters, like a billing run or a nightly export with an SLA behind it: Cronitor. Duration tracking is worth real money when a job finishing late costs you something.

And whatever you pick, alerts belong somewhere you'll actually see them. An email alert at 3am is a log entry with extra steps. Route the ones that matter to SMS or a phone call, the same way you'd route error tracking alerts.

The Pick

Healthchecks.io for most people. Twenty free jobs covers a solo SaaS with room to spare, the interface stays out of the way, and BSD licensing means the pricing page can never hold you hostage.

Better Stack wins if you're already inside it for uptime. Cronitor wins when late is as bad as never.

The tool matters less than doing it at all. Every scheduled job you run right now is either monitored or it's a silent failure waiting for the worst possible day to reveal itself, and adding the ping takes about 30 seconds per job.

Frequently Asked Questions

What is cron job monitoring?

Cron job monitoring watches for the absence of a signal rather than the presence of an error. Your scheduled job sends an HTTP ping every time it finishes. If the monitoring service does not receive that ping inside the window you configured, it alerts you. This catches the failure mode logs miss entirely, which is a job that never started.

Why do cron jobs fail silently?

Because most cron failures are not exceptions. A crontab gets wiped by a deploy, the server reboots and the scheduler never comes back, a disk fills, or a container gets rescheduled and the job goes with it. In every case your application throws nothing, so your error tracker stays quiet and your logs contain no entry at all.

What is the best free cron job monitoring tool?

Healthchecks.io, which monitors 20 jobs on its free Hobbyist plan with 100 log entries each. Better Stack is the better free pick if you also want uptime checks, since it includes 10 monitors and 10 heartbeats plus unlimited SMS and phone call alerts. Cronitor free is limited to 5 monitors and only email and Slack alerts.

Can I self-host cron job monitoring?

Yes. Healthchecks is open source under the BSD 3-clause licence and the same codebase that runs the hosted service can run on your own server. One caveat matters more than any feature. Never run the monitor on the machine it watches, because a server that dies takes both the jobs and the monitoring with it.

Is cron monitoring different from uptime monitoring?

Yes, and you need both. Uptime monitoring calls your site from outside and tells you when it stops responding. Cron monitoring waits for your job to call in and tells you when it goes quiet. A server can serve pages perfectly while every scheduled task on it has been dead for a month.

Found this useful? Follow @devtoolpicks on X for more honest tool comparisons.
Share: X/Twitter | LinkedIn |

Get honest tool comparisons in your inbox

Join 50+ indie hackers and solo developers who get new comparisons, pricing changes, and tool picks. No spam. Unsubscribe anytime.