2026-09-09
Cron syntax is compact enough that it's easy to get subtly wrong - paste anything from here into the Cron Expression tool to see the plain-English schedule and its next run times before you ship it.
A standard cron expression is five space-separated fields, in this order:
| Field | Allowed values | Position |
|---|---|---|
| Minute | 0-59 |
1st |
| Hour | 0-23 |
2nd |
| Day of month | 1-31 |
3rd |
| Month | 1-12 (or JAN-DEC) |
4th |
| Day of week | 0-6 (0 = Sunday, or SUN-SAT) |
5th |
So 30 14 1 * * reads as: minute 30, hour 14, day-of-month 1, any month, any day-of-week - i.e. 2:30 PM on the 1st of every month.
| Character | Meaning | Example |
|---|---|---|
* |
Any value | * * * * * runs every minute |
, |
A list of values | 0 9,17 * * * runs at 9 AM and 5 PM |
- |
A range of values | 0 9-17 * * * runs every hour from 9 AM to 5 PM |
/ |
Step values | */15 * * * * runs every 15 minutes |
These can combine: 0 9-17/2 * * MON-FRI runs every 2 hours between 9 AM and 5 PM, Monday through Friday.
Some cron implementations (including most schedulers built on top of standard cron) support these shorthand strings in place of the 5-field syntax:
| Shortcut | Equivalent to | Runs |
|---|---|---|
@yearly (or @annually) |
0 0 1 1 * |
Once a year, midnight on Jan 1 |
@monthly |
0 0 1 * * |
Once a month, midnight on the 1st |
@weekly |
0 0 * * 0 |
Once a week, midnight on Sunday |
@daily (or @midnight) |
0 0 * * * |
Once a day, at midnight |
@hourly |
0 * * * * |
Once an hour, at minute 0 |
Not every cron implementation supports the shortcut syntax - check your scheduler's docs if you're not sure it will parse @daily correctly.
| Expression | Meaning |
|---|---|
* * * * * |
Every minute |
*/5 * * * * |
Every 5 minutes |
0 * * * * |
Every hour, on the hour |
0 0 * * * |
Every day at midnight |
0 9 * * MON-FRI |
9 AM, Monday through Friday |
0 0 1 * * |
Midnight on the 1st of every month |
0 0 * * 0 |
Midnight every Sunday |
0 0 1 1 * |
Midnight on January 1st every year |
30 3 * * * |
3:30 AM every day |
0 */6 * * * |
Every 6 hours (12 AM, 6 AM, 12 PM, 6 PM) |