About this tool
The five fields
A cron expression is five fields separated by spaces: minute (0–59), hour (0–23), day of month (1–31), month (1–12) and day of week (0–7, where both 0 and 7 mean Sunday). Cron checks the clock once a minute and runs the job when the minute, the hour, the month and the day all match. The two day fields decide together whether the day matches, by the rule described below.
In each field * matches every value, a list such as 1,15 matches each value in it, a range such as 1-5 matches everything from the first value to the last, and a step such as */15 or 8-18/2 takes every Nth value of the range. Months and weekdays can be written as three-letter English names, JAN to DEC and SUN to SAT.
The macros are shorthands: @hourly is 0 * * * *, @daily and @midnight are 0 0 * * *, @weekly is 0 0 * * 0, @monthly is 0 0 1 * *, and @yearly and @annually are 0 0 1 1 *.
When both day fields are set
Day of month and day of week do not narrow each other down. When both are restricted, the job runs on a day that matches either of them. 0 0 13 * 5 therefore runs at midnight on the 13th of every month and also on every Friday, not only on Friday the 13th.
Vixie cron and cronie decide whether a day field is restricted by looking at its first character. A field that begins with *, including a step such as */2, counts as unrestricted, and then both fields must match. 0 0 */2 * 1 runs on Mondays that fall on an odd day of the month. This tool follows the same rule and tells you which of the two cases applies.
Steps, time zones and what is not read
A step counts from the start of the range and starts again when the range ends. */15 in the minute field gives 0, 15, 30 and 45, which really is every 15 minutes. */7 gives 0, 7, 14 and so on up to 56, and then 0 again four minutes later. The table lists the values a step expands to so that you can see this.
Cron compares the expression with the clock of the machine it runs on, and many servers keep that clock in UTC. Choose Local time or UTC above the list of next runs to match the machine, and read the other column to see the same moments in the other zone. When the local clock changes for daylight saving time, cron implementations differ in what they do with jobs set in the skipped or repeated hour. This tool does not list a run at a time that is skipped, and lists a repeated time twice only when the minute field or the hour field begins with *.
Only the standard five-field syntax is read. A seconds field, a year field and the characters ?, L, W and # belong to other schedulers, such as Quartz, and are reported as errors. So is a step after a single value, such as 5/15: the crontab manual defines a step only after * or after a range, so write 5-59/15.