Skip to content

Cron expression explainer

Paste a cron expression like */15 9-17 * * MON-FRI to read it in plain English, check each field for mistakes and see the next run times in any time zone.

  • Runs in your browser
  • Nothing is uploaded
  • Free, no sign-up
Try:

What it means

Every 15 minutes from 09:00 to 17:45, Monday to Friday.

Field by field

  1. */15Minuteevery 15 minutes0, 15, 30, 45
  2. 9-17Hourhours 9 to 179, 10, 11, 12, 13, 14, 15, 16, 17
  3. *Day of monthevery day
  4. *Monthevery month
  5. MON-FRIDay of weekMonday to FridayMON, TUE, WED, THU, FRI

Next 10 runs

Servers, Kubernetes and GitHub Actions usually run cron in UTC. Pick the zone of the machine that runs it.

Working out the run times…

How it works

Type or paste a cron expression and the page reads it as cron would: a sentence saying when it runs, what each of the five fields matches, and the next ten run times. Mistakes are pointed out field by field, along with schedules that are valid but surprising, like a day that some months don't have.

Pick the time zone of the machine that runs the job to see the run times there, next to your own time and UTC. Around daylight saving changes the times follow cronie, the cron most Linux systems run. You can also paste a whole crontab line: the command at the end is set aside, and shortcuts like @daily and a CRON_TZ= prefix are understood.

A cron expression is five fields separated by spaces:

FieldAllowed values
Minute0 to 59
Hour0 to 23
Day of month1 to 31
Month1 to 12, or JAN to DEC
Day of week0 to 7 (0 and 7 are Sunday), or SUN to SAT

In each field, * means every value, 1-5 is a range, 1,15 is a list, and */10 is a step: every tenth value from the start of the field. A step can follow a range too, as in 9-17/2.

Common schedules

ExpressionRuns
* * * * *Every minute.
*/5 * * * *Every 5 minutes.
*/15 * * * *Every 15 minutes.
0 * * * *Every hour, on the hour.
0 */6 * * *At 00:00, 06:00, 12:00 and 18:00, every day.
0 0 * * *At 00:00, every day.
0 9 * * 1-5At 09:00, Monday to Friday.
0 0 * * 0At 00:00, on Sundays.
0 0 1 * *At 00:00, on the 1st of the month.
0 0 1 1 *At 00:00, on 1 January.

Questions

What does * * * * * mean in cron?

Every minute. The five fields are minute, hour, day of month, month and day of week, and a * means every value of its field, so a job with five stars runs once a minute, every day.

How do I run a cron job every 5 minutes?

Use */5 * * * *. The /5 is a step, so the minute field matches 0, 5, 10 and so on up to 55. Every 15 minutes is */15 * * * *, and every hour on the hour is 0 * * * *. A step that doesn't divide 60, like */7, starts again at the top of each hour, so the last gap is shorter.

Which time zone does cron use?

The time zone of the machine or service that runs it. Linux servers, Kubernetes and GitHub Actions usually run cron in UTC. cronie and many cron libraries also accept CRON_TZ= before the schedule to pick a zone. Choose the zone above the run times on this page to see them there and in your own time.

What happens if I set both the day of month and the day of week?

Cron runs on days that match either one. 0 0 1 * MON runs at midnight on the 1st of every month and on every Monday, not only on Mondays that fall on the 1st. If one of the two fields starts with *, as in */2, Vixie cron and cronie run only on days that match both.

Limits

This page reads the standard five-field form used by crontab, Kubernetes, GitHub Actions and most schedulers. The six and seven-field forms of Quartz, Spring and AWS EventBridge, with seconds or years and the ?, L, W and # characters, aren't read yet; the page says so when it sees them.

Cron programs differ in a few corners, and this page follows Vixie cron and cronie where they do: how day of month and day of week combine, a step written without a range like 5/15, and what happens when the clocks change. Your scheduler may differ, so the page notes each of these when your expression uses them. Run times assume the machine is on and cron is running; a job missed while it was off doesn't run later unless something like anacron runs it.

The schedule and time zone are kept after the # in the page address, so you can bookmark or share them. That part of an address is never sent to a server. A command pasted with the schedule is left out of the link.

Privacy

This tool runs entirely in your browser. The files you open and what you type are never sent to a server, and nothing is stored after you close the page. See the privacy page.

Related tools