Cron Expression Generator

Build a standard five-field cron expression from presets and dropdowns, or type one to get a plain-English description and its next five run times in your time zone. Free, instant and evaluated in your browser.

Cron Expression GeneratorPrivate · runs on your device
Build the schedule
Schedule

Example: 0 9 * * 1-5 → At 09:00, Monday through Friday

How to use the cron expression generator

Build from the controls, or type an expression and let the page explain it.

  1. Choose a Preset such as Weekdays at 09:00 or First day of every month as a starting point. It overwrites the expression box.
  2. Alternatively use the selects for Minute, Hour, Day of month, Month and Day of week. Changing any of them rebuilds the Cron expression box.
  3. For anything the menus do not offer, type straight into the Cron expression box. The menus only list common choices, so custom values go here.
  4. Read the big result: the expression with its plain-English description underneath, then a table of the five fields.
  5. Check the Next run table, which lists the next five times in your device time zone with how long until each.
  6. Press Copy expression, or Reset to return to the default.

An expression without exactly five fields shows a warning instead of a result.

The presets are Every minute, Every 5 minutes, Every hour, Daily at midnight, Weekdays at 09:00, Every Sunday at midnight, First day of every month and Once a year (1 January). Cron cannot express every second Tuesday or the last day of a month directly, so schedule such a job more often and let the script decide whether to run.

The five fields and what the tool accepts

FieldAllowed valuesExample
Minute0-59*/15
Hour0-239-17
Day of month1-311,15
Month1-12 or JAN-DEC1,4,7,10
Day of week0-7 or SUN-SAT1-5

An asterisk matches every value, a comma lists values, a hyphen gives a range and a slash sets a step. Both 0 and 7 mean Sunday. The tool also reads forms such as 1-10/2 and 5/10. It does not understand @daily, @reboot, ?, L, W, #, H, or the six- and seven-field layouts that add seconds or a year.

Some worked readings: */15 * * * * is Every 15 minutes; 30 2 1 * * is At 02:30, on day 1 of the month. When both day fields are restricted, standard cron runs the job if either one matches, and the tool follows that rule, so 0 0 13 * 5 fires on every 13th and on every Friday, not only on Friday the 13th. A value out of range, such as minute 61, is reported by name.

ExpressionThe tool describes it as
0 * * * *At minute 0 of every hour
0 0 * * 0At 00:00, Sunday
0 0 1 * *At 00:00, on day 1 of the month
*/10 9-17 * * 1-5Every 10 minutes, past hour 9 through 17, Monday through Friday

The wording is generated from the fields, so unusual combinations read a little stiffly. Use the run times as the final check.

Schedulers differ, and so do time zones

The five-field format is widely shared, but the details are not, and the wrong assumption usually shows up as a job firing at the wrong hour.

  • Linux crontab uses the server local time and supports shortcuts like @daily.
  • GitHub Actions evaluates schedules in UTC, so a local 9 a.m. needs converting, and its shortest interval is five minutes.
  • Jenkins adds H, which picks a stable minute from a hash of the job name to spread load.
  • Quartz, Spring and AWS EventBridge use six or seven fields and the symbols ? and L, so a five-field expression must be adapted.
  • Kubernetes CronJob uses the standard five fields and the controller time zone unless timeZone is set.

This page shows run times in your own zone, so translate to the scheduler zone before you rely on them. The preview looks ahead 366 days. A valid but rare schedule, such as 29 February, may therefore show no runs, as does an impossible one like 31 February. The time zone converter helps move a local time to UTC. The Unix timestamp converter turns a logged run time into a readable date, and the date difference calculator counts days between two dates.

Quick answers

Frequently asked questions

The questions people ask most, answered in plain words.

What does 0 9 * * 1-5 mean in cron?

It means minute 0, hour 9, any day of the month, any month, and days 1 to 5 of the week. In plain English: at 09:00 every Monday through Friday. Change the last field to * to include weekends, or to 1,3,5 to run on Monday, Wednesday and Friday only.

How do I run a cron job every 5 minutes?

Use */5 * * * *. The step in the minute field matches minutes 0, 5, 10 and so on up to 55, while the asterisks allow every hour and day. For every 5 minutes during working hours only, combine it with an hour range such as */5 9-17 * * 1-5.

Is Sunday 0 or 7 in cron?

Both are accepted. Standard cron treats 0 and 7 as Sunday in the day-of-week field, and this tool also accepts the names SUN to SAT. Writing 1-5 therefore means Monday to Friday. Some schedulers, such as Quartz, number the days from 1 to 7 instead, so check their documentation.

Why does my GitHub Actions cron run at the wrong time?

GitHub Actions evaluates schedules in UTC, not your local zone, so 9 a.m. in New York must be written as hour 13 or 14 depending on daylight saving. Scheduled workflows can also start late when GitHub is busy. This tool shows run times in your device zone, so convert them first.

Does this tool check that my cron expression is valid?

It checks that there are five fields and that each value is in range, and it names the bad value if not. If no run is found in the next 366 days, it says so. It cannot know your scheduler quirks, so compare the plain-English line with what you intended.