Cron expression parser

Type a schedule, read it in English, see when it runs next.

*/15
Minute
9-17
Hour
*
Day of month
*
Month
1-5
Day of week

“Every 15 minutes, every hour from 09:00 to 17:59, Monday to Friday”

Next 10 runs

…

Fields

Minute*/150, 15, 30, 45
Hour9-179, 10, 11, 12, 13, 14, 15, 16, 17
Day of month*every
Month*every
Day of week1-5Mon, Tue, Wed, Thu, Fri

Syntax: * any, 1-5 range, */10 step, 1,15 list, @daily macros. A leading seconds field is ignored.

How to read a cron expression

  1. Type the expression

    Enter five space-separated fields, a macro such as @daily, or pick one of the presets. Each field is labelled under the box as you type so you can see which part is which.

  2. Check the meaning

    The plain-English sentence updates on every keystroke. If a field is wrong, the error names the field and the value that is out of range.

  3. See when it runs

    The next ten run times are listed in your local time, or in UTC with the tick box. The Fields table shows exactly which values each part expands to.

Good to know

  • Syntax: * any value, 1-5 a range, */10 every tenth, 5/10 every tenth starting at 5, 1,15 a list, and ? is treated the same as *. Month and day names such as JAN or MON work in any case.
  • Macros: @yearly, @annually, @monthly, @weekly, @daily, @midnight and @hourly.
  • Ctrl+C (Cmd+C on a Mac) with nothing selected copies the expression.
  • The run list refreshes every minute while the tab is open, so the first entry is always the next real run.
  • Ranges cannot wrap around midnight: 22-2 is rejected. Use a list such as 22,23,0,1,2 instead.
  • Everything is calculated in your browser. Nothing is sent anywhere.

Questions people ask

What do the five fields mean?

In order: minute (0-59), hour (0-23), day of month (1-31), month (1-12 or JAN-DEC) and day of week (0-7 or SUN-SAT, where both 0 and 7 mean Sunday). A star means every value.

Can I paste a six-field expression with seconds?

Yes. A leading seconds field, as used by Quartz, Spring and some cloud schedulers, is dropped and the remaining five fields are read as normal. Seconds are not evaluated, so run times are shown to the minute.

What happens when both day of month and day of week are set?

The tool follows Vixie cron, the cron on Linux and macOS: when both fields are restricted a run happens if either one matches. So 0 0 1 * 1 fires on the 1st of every month and on every Monday.

Which time zone are the run times in?

Your browser's local zone by default. Tick UTC to see when a server running on UTC would fire the same expression. Real cron uses the zone of the machine it runs on, so check that before you trust a time.

Why does it say no run in the next five years?

The search stops after five years. An expression that can never match, such as day 31 in February, or day 30 in February, produces no runs at all.