Skip to content
Cron Cookbook

Cron expression validator and explainer

Paste a five-field cron expression to see what each field means, when it runs next, and which platforms accept it as written. It also validates AWS EventBridge expressions, such as cron(0 18 ? * MON-FRI *), and shows them as standard cron.

Five fields: minute, hour, day of month, month, day of week. AWS EventBridge cron() expressions work too. Results update as you type.

your expression · 5 fields
*/159-17**1-5

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

Next 5 runs

Vercel always runs schedules in UTC, and GitHub Actions does unless you set a time zone. Crontab and Kubernetes use the server's time zone.

Field by field

*/15Minute
Every 15th minute: 0, 15, 30, 45
9-17Hour
Every hour from 9 through 17
*Day of month
Every day of the month
*Month
Every month
1-5Day of week
Monday through Friday

Platform check

Whether each scheduler accepts */15 9-17 * * 1-5 as written.

  • crontab

    Accepted

    Runs in the server's local time zone.

  • GitHub Actions

    Accepted

    Runs in UTC unless you add a timezone key. Runs at the start of an hour are the likeliest to be delayed.

  • Kubernetes

    Accepted

    Set spec.timeZone, or the schedule follows the kube-controller-manager's time zone.

  • AWS EventBridge

    Rewrite needed

    EventBridge uses six fields ending in a year, and one of the day fields has to be ?. It numbers weekdays 1-7 starting on Sunday, so the rewrite uses day names. EventBridge Scheduler can run it in any time zone; older scheduled rules use UTC.

    • cron(0/15 9-17 ? * MON-FRI *)
  • Vercel

    Paid plans only

    Runs more than once a day, which fails to deploy on the Hobby plan. Vercel runs cron jobs in UTC.

Cron expression generator

Pick a schedule and copy the expression. For anything the menus don't cover, edit it in the explainer above.

On
generated · 5 fields
09**1-5

At 09:00, Monday through Friday.

Explain this expression to see its next runs in your time zone and whether GitHub Actions, Kubernetes, AWS and Vercel accept it.

AWS EventBridge cron expressions

EventBridge wraps six fields in cron(...): the five of standard cron plus a year. One of the two day fields must be ?, and the day of the week counts 1-7 from Sunday. Paste one into the validator above, or open an example below, to see it as standard cron.

FieldValuesWildcards
Minutes0-59, - * /
Hours0-23, - * /
Day of month1-31, - * ? / L W
Month1-12 or JAN-DEC, - * /
Day of week1-7 or SUN-SAT, - * ? L #
Year1970-2199, - * /
EventBridgeRuns, and the same in standard cron
cron(0 12 * * ? *)12:00 every day
0 12 * * *
cron(0/15 * * * ? *)Every 15 minutes
*/15 * * * *
cron(0 9 ? * MON-FRI *)09:00 on weekdays
0 9 * * 1-5
cron(0 8 ? * 1 *)08:00 on Sundays (1 is Sunday in AWS)
0 8 * * 0
cron(30 2 1 * ? *)02:30 on the 1st of every month
30 2 1 * *
cron(0 18 L * ? *)18:00 on the last day of every month
No standard-cron form
cron(0 10 ? * 6#3 *)10:00 on the third Friday of every month
No standard-cron form

The validator catches the mistakes that make AWS reject an expression. Open one to see the message:

ExpressionMistake
cron(0 12 * * * *)No ? in either day field
cron(0 12 ? * ? *)? in both day fields
cron(0 9 ? * 0 *)Sunday written as 0
cron(0 9 ? * MON/2 *)A step in the day of week

L and # exist only in AWS and Quartz, so the last two examples can't be converted. EventBridge rules run in UTC. EventBridge Scheduler takes a time zone for each schedule, so cron(0 9 ? * MON-FRI *) can mean 09:00 in New York. For a plain interval, both also accept rate(15 minutes), which counts from when the rule was created rather than from the top of the hour. The Quartz guide covers L, W and # in more detail.

Common cron expressions

Schedules people look up most often. Each one opens its own page, or this explainer with the expression filled in.