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
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.