Cron expression
MDV ToolsRead a crontab line in plain English, or build one from a preset, and see when it fires next.
- Minute
- Hour
- Day of month
- Month
- Day of week
How this works
The page reads the five fields of a crontab line — minute, hour, day of month, month, day of week —
written as *, a number, a list (1,15), a range (9-17) or a step
(*/5, 10-40/10). Month and weekday names work in any case
(JAN, mon), Sunday is both 0 and 7, and the
shorthands @yearly, @annually, @monthly, @weekly,
@daily, @midnight and @hourly expand to their five fields.
Two things are refused rather than guessed: @reboot, which is an event and not a time,
and a six-field expression with seconds, which belongs to Quartz or Spring and not to crontab.
Backwards ranges such as 22-4 are refused too — crontab does not define them, and
different daemons disagree.
The rule people get wrong is the last one: when day of month and day of week are both
restricted, cron runs when either matches, not when both do. So 0 0 13 * 5 is
every 13th and every Friday, not Friday the 13th. When one of the two is *, only the
other decides. The page says which rule is in force under the sentence.
The next runs are worked out by walking forward day by day for five years, taking the days the
month and day rules allow, then the hours and minutes inside them; if nothing matches in that span
the page says so, which is the honest answer for a line such as 0 0 30 2 *. Times are
this device's own clock and this device's summer-time rules. A real daemon uses the clock of the
machine it runs on, so treat these as a reading of the expression, not a promise about a server; an
hour the clocks skip is resolved the way the browser resolves it, and cron implementations differ on
exactly that hour. Seconds are never part of a crontab line: every run lands on the minute.
Nothing leaves the page — the expression is parsed here, and there is no server in this file. The Dark button remembers its setting in this browser's local storage; nothing you type is stored.