Explain a cron schedule and preview its next runs.
Five fields, separated by spaces: minute, hour, day of month, month and day of week.
Every 5 minutes
| Field | Value | Meaning |
|---|---|---|
| Minute | */5 | Every 5th minute: 0, 5, 10, 15, 20, 25, 30, 35, ... |
| Hour | * | Every hour |
| Day of month | * | Every day of the month |
| Month | * | Every month |
| Day of week | * | Every day of the week |
Each one has its own page with an explanation and the next scheduled runs.
* * * * *Every Minute*/5 * * * *Every 5 Minutes*/10 * * * *Every 10 Minutes*/15 * * * *Every 15 Minutes*/30 * * * *Every 30 Minutes0 * * * *Every Hour0 */2 * * *Every 2 Hours0 */6 * * *Every 6 Hours0 0 * * *Every Day at Midnight0 9 * * *Every Day at 9 AM0 9 * * 1Every Monday at 9 AM0 9 * * 1-5Every Weekday at 9 AM0 0 * * 0Every Sunday at Midnight0 0 1 * *First Day of the Month0 0,12 * * *Twice a DayFrom the maker of MakeUUID
Five fields, one gotcha, and the step syntax that trips people up.
A cron expression is five space-separated fields read left to right. A job runs when the current time matches every field at once.
Every field takes * for "any value", a single number, a list like 1,15, or a range like 9-17.
The step syntax */n means "every nth value counting from the start of the field", not "every n from now". So */5 * * * * fires at :00, :05, :10 and so on, aligned to the clock rather than to whenever you installed the job. You can also step a range: 0-30/10 gives :00, :10, :20 and :30.
The classic gotcha is the pair of day fields. When both day of month and day of week are restricted, cron runs the job if either one matches, not both. That makes 0 0 13 * 5 fire on the 13th of every month and on every Friday, which is far more often than most people expect. When only one of the two is set, that field alone decides.
Times here are interpreted in your browser's timezone. A real cron daemon uses the server's timezone, so a schedule that looks right on your laptop can fire hours away in production.