cron-job.org alternative: watching jobs rather than running them
Updated Aug 19, 2026
Worth clearing up first, because it changes the answer: cron-job.org is a free service that executes scheduled jobs by calling your URLs on a timetable. Undownable does not run anything for you; it watches jobs you already run and tells you when they stop reporting in. Some people searching for an alternative want a different executor. Most, once they think about it, want the monitoring half.
What cron-job.org does well
It is free, it has been running for many years, and it does a specific useful thing: if you have no server of your own to run cron on, it will call your URL on a schedule for you. That is a real gap it fills, particularly for shared hosting, serverless apps, and hobby projects.
- Genuinely free, funded by voluntary donations, with no paid tier to upsell you into.
- No hard cap on the number of jobs, subject to fair use, which is remarkable for a free service.
- Schedules down to once per minute, at up to sixty executions per hour.
- Full execution history with response bodies and timing, so you can see what your endpoint actually returned on each run.
- Failure and recovery notifications, plus SSL expiry notifications on the URLs it calls.
- Status monitor jobs with publishable status pages and embeddable badges, so it does more than pure execution.
- The source is open on GitHub under the GPL, and the operator has run it transparently for a long time.
If you need something to trigger a URL every ten minutes and you have no infrastructure, it is hard to argue with free, unlimited, and proven.
The trade you are making
The constraints are the ones you would expect from a free, donation-funded service, and they are published honestly.
- A short execution timeout per job, so anything slow is cut off rather than completed.
- A cap on the response size it will read back.
- A daily limit on API calls, which constrains automation.
- It is operated by an individual rather than a company, so there is no SLA and no support contract. That is not a criticism, it is the deal, and the deal is a good one at the price.
- Most importantly for this comparison: if you already run your jobs on your own machine, cron-job.org is not solving your problem. Your cron is fine. What you are missing is being told when it silently stops.
The failure it cannot catch
A scheduled job has a specific and nasty failure mode: it fails quietly. Nobody notices a backup that has not run, because nothing happens. No error page, no angry customer, no alert. You find out weeks later when you need the backup, which is the worst possible moment to find out.
The fix is a dead man switch. Your job pings a private URL when it succeeds. If the ping does not arrive inside the window you set, an incident opens and you get alerted. Silence becomes a signal rather than an absence. That works no matter where the job runs: a server, a laptop, a Raspberry Pi, a container, a CI pipeline, or a scheduled task somewhere else entirely.
0 3 * * * /usr/local/bin/backup.sh && curl -fsS --max-time 10 https://undownable.com/ping/your-monitor-id > /dev/null
The double ampersand is the important part. The ping only fires if the backup script exits successfully, so a failed backup produces no ping, and no ping produces an alert. A job that runs but fails is now just as loud as a job that never runs at all.
Side by side
| cron-job.org | Undownable | |
|---|---|---|
| Pricing model | Free, donation funded, no paid tier | Free tier, then one flat price per team |
| Check interval | Executes as often as once per minute | 5 minutes on Free, 1 minute on Pro, plus heartbeat windows |
| Monitor count | No hard job cap, subject to fair use | 10 monitors on Free, 50 on Pro |
| Status pages | Status monitor pages and badges available | 1 on Free, unlimited on Pro with custom domains |
| Alert channels | Failure, recovery, and SSL expiry notifications | Email, ntfy, Telegram, Slack, Discord, webhooks, all plans |
| Team members | Single account model | Unlimited on Pro, no per-seat charge |
| API and automation | API with a daily call limit | Versioned REST API plus a first-party MCP server |
| External backstop fit | Runs your jobs, does not watch your own scheduler | Watches your jobs and your sites from outside |
Where Undownable differs
The two are complements more often than substitutes, but the differences are worth stating plainly.
- Undownable does not execute anything. It watches: heartbeats for jobs you already run, and active checks against your sites and services.
- Push heartbeats give any job on any machine a private ping URL, so the thing being monitored does not have to be reachable from the internet.
- The same account also runs HTTP, keyword, JSON API, TCP port, ping, DNS, and SSL checks, so your cron monitoring and your uptime monitoring share one dashboard and one alert configuration.
- Six alert channels on every plan including free: email, ntfy, Telegram, Slack, Discord, and webhooks, with first class support for self-hosted ntfy servers.
- Exactly-once delivery, flap suppression, and confirmation thresholds so one blip never pages anybody.
- SSL checks that verify the full chain and hostname with escalating warnings at 30, 14, 7, and 1 days out, rather than a single expiry notice.
- Status pages that show heartbeat monitors and uptime monitors together, on your own domain on Pro.
- A versioned REST API and a first-party MCP server, with least-privilege tokens and no daily call ceiling to design around.
Who should stick with cron-job.org
- You need something to run your jobs, not watch them. Undownable has no scheduler and will not call your URLs on a timetable.
- You have no server of your own and cron-job.org is the reason your scheduled work happens at all.
- You need a large number of jobs at zero cost.
- You want to inspect the response body of every execution, which their history view gives you.
- Your budget for this is nothing, and free plus fair use covers it.
The strongest setup for many people is both: let cron-job.org trigger the work, and have the endpoint it calls ping an Undownable heartbeat on success. Then you find out when the executor itself stops calling, which is the one failure cron-job.org cannot report to you.
Can Undownable run my cron jobs for me?
No. Undownable is a monitor, not a scheduler. It never calls your URLs on a timetable of your choosing to do work. It runs health checks and it waits for heartbeat pings, and it alerts when either goes wrong.
How do I monitor a cron job with Undownable?
Create a heartbeat monitor and set the interval you expect a ping within. You get a private URL. Append a curl to that URL at the end of your job, joined with a double ampersand so it only runs on success. If the ping does not arrive in time, an incident opens and your alert channels fire.
What if my job runs a few minutes late?
Nothing happens until the window you configured has passed. Set the expected interval a little wider than the job actually needs and normal variance never pages anyone, while a genuinely dead job still does.
Does the machine running the job need to be reachable from the internet?
No, and that is the advantage of the push model. The job makes an outbound HTTPS request to the ping URL, so it works fine on a laptop, a home server behind a router, a container, or a CI runner, with no inbound access and no open ports.
Can I use both cron-job.org and Undownable together?
Yes, and it is a sensible pairing. cron-job.org triggers the work, and the endpoint it calls pings an Undownable heartbeat when it finishes successfully. That way you are alerted whether the job fails, the endpoint breaks, or the executor stops calling.
Related reading
Monitoring that watches from the outside
Free plan with 10 monitors, plus a 14-day Pro trial. No credit card required.
Start free