Cron Expression Explainer
Paste a cron expression to see what it means in English, or type English to get cron back. Plus the next 10 run times and the systemd timer equivalent.
—
- —
—
Want to know if your cron actually ran?
Free open-source heartbeat monitoring — set up in 2 min:
Healthchecks.io
Free for 20 monitors. Get pinged on Slack/Telegram/Discord if your cron missed a run. Self-host option too.
cron-job.org
Free hosted cron runner. Triggers HTTP endpoints on your schedule. Good if you don't have a server.
BetterStack
Free tier 10 monitors + 50 heartbeats. Slack/PagerDuty integration. Worth it for paid teams.
FAQ
What's the difference between 5-field and 6-field cron?
5-field (minute hour day-of-month month day-of-week) is standard Linux/Unix cron — the kind in /etc/crontab. 6-field adds a leading "second" field — used by Quartz scheduler (Java) and some other systems. This tool defaults to 5-field.
What does the asterisk mean?
* means "every value" for that field. So * * * * * = every minute, every hour, every day, every month, every day of the week. To limit, use specific values, ranges (1-5), lists (1,15,30), or steps (*/10 = every 10).
Why does my cron not run at the expected time?
Most common: timezone. System crons run in the server's local timezone (often UTC on cloud VMs). If you wrote a cron for IST or PST, check timedatectl on Linux or set TZ=Asia/Kolkata at the top of your crontab.
How do I run a cron every Sunday at 2am?
0 2 * * 0 or 0 2 * * SUN — both work. Day-of-week field: 0 (or 7) = Sunday, 1 = Monday, ..., 6 = Saturday.
What's the difference between @daily and 0 0 * * *?
Identical. @daily, @hourly, @weekly, @monthly, @yearly are shortcut aliases. Most modern cron implementations support them. Some embedded/BusyBox cron may not — use the 5-field form to be safe.
What is systemd timer and why use it over cron?
On systemd-based Linux (most modern distros), timers are an alternative to cron with three advantages: (1) tightly integrated with services and journaling — journalctl -u my-timer gets you logs; (2) missed runs persist across reboots if Persistent=true is set; (3) randomized delays via RandomizedDelaySec to avoid thundering herds. Use timers for production services; keep cron for quick ad-hoc scripts.