Cron Syntax Reference

A standard cron expression has five space-separated fields. Each field accepts specific values, ranges, lists, and step expressions.

Field reference

Field Position Allowed values Special characters
Minute1st0–59* / , -
Hour2nd0–23* / , -
Day of Month3rd1–31* / , -
Month4th1–12* / , -
Day of Week5th0–7 (0 & 7 = Sun)* / , -

Special characters

CharacterNameMeaningExample
*WildcardEvery value in the field* * * * *: every minute
/StepEvery N values*/5 * * * *: every 5 min
-RangeFrom value to value0 9-17 * * *: 9 AM to 5 PM
,ListMultiple specific values0 8,20 * * *: 8 AM & 8 PM

Shorthand strings

Many cron implementations support convenient aliases instead of a full five-field expression:

StringEquivalentMeaning
@yearly0 0 1 1 *Once a year, Jan 1 at midnight
@monthly0 0 1 * *Once a month, 1st at midnight
@weekly0 0 * * 0Once a week, Sunday at midnight
@daily0 0 * * *Once a day at midnight
@hourly0 * * * *Once an hour, at minute 0
@reboot(none)Once at system startup

Non-standard extensions

Some schedulers (Quartz, AWS EventBridge) extend the syntax beyond the standard five fields. Common extensions include L (last day of month/week), W (nearest weekday), and # (Nth weekday). These are not supported by vixie cron, GitHub Actions, or most Linux cron daemons.

Want to see what any expression does in plain English?

Translate an Expression →