Cron Expression Parser & Next Run Calculator

Parse a cron expression (minute hour day month weekday) and see a plain-English description of its schedule. Supports steps, ranges and lists, and calculates the next 5 run times. Handy for reading crontab entries or a GitHub Actions schedule.

Cron expression syntax (5 fields)

A cron expression has 5 space-separated fields, from left to right: minute, hour, day of month, month, and day of week. Each field accepts the special characters below.

Position Field Allowed values
1 Minute 0-59
2 Hour 0-23
3 Day of month 1-31
4 Month 1-12
5 Day of week 0-7

Day of week is normally 0 = Sunday through 6 = Saturday, but this tool also accepts 7 as an alias for Sunday, as used by some cron implementations (it is treated the same as 0).

Each field can use "*" (any value), comma-separated lists (1,15,30), hyphen ranges (1-5), and slash steps (*/15, 1-30/5) — and these can be freely combined.

Common cron patterns

Cron expression Meaning
* * * * * Runs every minute.
*/5 * * * * Runs every 5 minutes.
0 * * * * Runs once an hour, at minute 0.
0 0 * * * Runs daily at midnight (00:00).
0 9 * * 1-5 Runs at 9:00 on weekdays (Monday through Friday).
0 0 1 * * Runs at midnight on the 1st of every month.
0 0 1 1 * Runs at midnight on January 1st every year.
*/15 9-17 * * 1-5 Runs every 15 minutes between 9:00 and 17:00 on weekdays.

Tips

  • Fields can freely combine comma lists, hyphen ranges, and slash steps, e.g. "*/15 9-17 * * 1-5".
  • Day of week is normally 0-6 (Sunday-Saturday), but this tool also accepts 7 as a common alias for Sunday used by some cron implementations.
  • If both the day-of-month and day-of-week fields are restricted (not "*"), standard cron treats them as an OR condition — the job runs when either one matches.
  • GitHub Actions' schedule trigger uses the same 5-field cron syntax as this tool, so you can use it to check exactly when a workflow will run.
  • The actual run time depends on the server's timezone setting, so after editing a crontab it is worth double-checking the server's current time as well.

Frequently Asked Questions

Yes. The standard cron specification uses 0 for Sunday, but some implementations (such as Vixie cron) also accept 7 as an alternate notation for Sunday. This tool treats both as Sunday.

Neither takes priority — they're combined with an OR condition. When both the day-of-month and day-of-week fields are restricted (not "*"), the job runs on any day that matches either one. If only one field is restricted, only that field's condition applies.

The basic 5-field format (minute hour day month weekday) is the same. The key differences are that GitHub Actions schedules are always evaluated in UTC, and the actual run can be delayed by several minutes to tens of minutes, unlike a server's crontab.

Yes, step values (either a starting value with a slash, or */interval) can be used in any of the five fields. That said, fields with a small range, like month or day of week, have limited practical use for steps.
ツールくん

Side Note — Half a Century of Cron

The name "cron" is said to derive from Chronos, the Greek word for time, and it has been a staple job scheduler since the early days of UNIX in the 1970s. Its compact five-field syntax can express anything from "every minute" to "a specific date and time once a year", and it is still widely used nearly half a century later.

Today, this same 5-field cron syntax is used to configure schedules not only in Linux crontabs, but also in many CI/CD tools and container platforms, including GitHub Actions, GitLab CI, and Kubernetes CronJobs. It is a striking example of a syntax designed in the UNIX era still thriving unchanged in cloud-native environments.

One of the trickiest parts of cron syntax is how it behaves when both the day-of-month and day-of-week fields are set. It is tempting to assume an AND condition (a day satisfying both), but the actual specification is an OR condition (a day satisfying either), which is a common source of jobs running more often than intended.

→ Browse all trivia