Cron Expression Explainer
Translate a cron expression to plain English and preview the next 10 scheduled run times in your local timezone.
Cron Syntax
A cron expression is five space-separated fields that describe a recurring schedule. From left to right:
* * * * * │ │ │ │ └─ day of week (0-6, Sun=0) │ │ │ └────── month (1-12) │ │ └─────────── day of month (1-31) │ └──────────────── hour (0-23) └───────────────────── minute (0-59)
Field Operators
*— every value5— exact value1-5— range (1 through 5)1,3,5— list of values*/15— step (every 15 starting at 0)0-30/5— step within a range
Shortcut Aliases
@yearly/@annually→0 0 1 1 *@monthly→0 0 1 * *@weekly→0 0 * * 0@daily/@midnight→0 0 * * *@hourly→0 * * * *
Common Mistakes
- Day-of-month and day-of-week together — classic Unix cron treats these as OR, not AND.
0 0 1 * 1runs on the 1st of the month and every Monday. - Timezones — the daemon uses its host's timezone (or
CRON_TZif set). Schedules near DST transitions may skip or repeat. - Overlapping runs — cron starts a new instance even if the previous one is still running. Use a lockfile or
flockif that's not what you want. - Environment — cron jobs run with a minimal
PATHand no shell profile. Use absolute paths in scripts or source your env explicitly.
Frequently Asked Questions
Standard 5-field POSIX cron: minute, hour, day-of-month, month, day-of-week. It also accepts the common shortcuts
@yearly, @monthly, @weekly, @daily, @hourly. It does not parse the 6-field Quartz format (with seconds) or AWS EventBridge cron, which use slightly different rules.Sunday is 0 (and 7 also means Sunday in most implementations). Monday is 1, Tuesday 2, etc. Names like
MON, TUE are accepted. Note that if both day-of-month and day-of-week are restricted, classic Unix cron treats them as OR (the job fires when either matches) — this tool follows that convention.Yes. Next-run preview uses your browser's local timezone. Real cron daemons typically use the server's local time or UTC depending on configuration — confirm with your scheduler before relying on a specific time.
Both mean "every 5 units starting from 0".
*/5 in the minute field gives 0,5,10,15,...,55. You can change the start point: 7-59/5 means start at 7 then every 5 (7,12,17,...). Standard cron does not support 0/5 — that's a Quartz extension.Not with standard cron. The smallest unit is one minute. For sub-minute schedules, use a long-running process with a sleep loop, systemd timers with
OnUnitActiveSec, or an event scheduler like Quartz.