Cron expression explainer

Translate a five-field cron expression into a sentence and list the next run times.

Runs in your browser. Your input is not uploaded.

Loading the tool…

What it does

A cron expression has five fields: minute, hour, day of month, month and day of week. * means every value, , lists values, - gives a range and / a step. */15 * * * * means every 15 minutes.

The explainer turns the expression into a sentence and lists the next run times in your browser’s time zone. It follows standard (Vixie) cron rules. Pasting a whole crontab line is fine: the text after the five fields is the command, and it is shown separately.

How to use it

  1. Paste an expression, a preset, or a crontab line such as 0 2 * * * /usr/bin/backup.sh.
  2. Read the sentence and the next run times.
  3. Check what cron will run, and the lines it skips.

Example

Input
0 9 * * 1-5
Output
At 09:00, on weekdays (Monday to Friday).

Things to watch for

  • When both day of month and day of week are set, cron runs when either matches, not both. 0 0 1 * 1 runs on the 1st and on every Monday.
  • The server’s time zone decides when jobs run. The next runs here are in your browser’s zone, which may differ.
  • Six or seven time fields, ?, L, W and # are Quartz or Spring syntax, not crontab. Text after five fields is a command, not another field.
  • In /etc/crontab the word after the five fields is the account, and cron does not run it. In a user’s own crontab that word is the start of the command.

Guides

Questions

What does */5 mean?
Every fifth value starting from the lowest: minutes 0, 5, 10 and so on.
Is Sunday 0 or 7?
Both. Standard cron accepts either.
What does @daily mean?
It is a shorthand for 0 0 * * *, midnight every day. @hourly, @weekly, @monthly and @yearly are also supported.
Does this work for GitHub Actions or Kubernetes CronJobs?
Yes, both use the five-field syntax. GitHub Actions runs schedules in UTC.
Can I paste a line straight from a crontab?
Yes. The five time fields set the schedule and everything after them is the command, shown under What cron runs. A % ends the command: cron does not run the text after it, and passes that text to the command as input. Comment lines and NAME=value lines are listed under Ignored.