Scheduler tool
Cron Expression Parser
Paste a cron expression to see what it means in plain English and when it runs next.
Quick presets
How Cron Expressions Work
A cron expression is a string of five fields separated by spaces that defines a recurring schedule. It is used by the Unix cron daemon, and by schedulers in virtually every programming language and platform — AWS Lambda, GitHub Actions, Kubernetes CronJobs, Jenkins, and most databases all use cron syntax.
| Field | Position | Allowed values | Special characters |
|---|---|---|---|
| Minute | 1st | 0–59 | * , - / |
| Hour | 2nd | 0–23 | * , - / |
| Day of month | 3rd | 1–31 | * , - / ? |
| Month | 4th | 1–12 | * , - / |
| Day of week | 5th | 0–7 (0 and 7 = Sunday) | * , - / |
Special Characters
* means "every value" — * * * * * runs every minute of every hour of every day. / is a step — */15 in the minute field means "every 15 minutes." - is a range — 1-5 in the weekday field means Monday through Friday. , is a list — 1,15 in the day field means the 1st and 15th of the month.
Use our YAML Validator if you're writing cron schedules inside YAML config files like GitHub Actions or Kubernetes manifests — it will catch indentation errors before they cause silent scheduling failures.
Common Patterns
The most common cron patterns you'll encounter: 0 * * * * runs at the top of every hour. 0 0 * * * runs at midnight every day. 0 9 * * 1-5 runs at 9am on weekdays. */5 * * * * runs every 5 minutes. 0 0 1 * * runs at midnight on the first day of every month.
Frequently Asked Questions
- What does * * * * * mean in cron?
- Five asterisks means "every minute of every hour of every day of every month on every day of the week" — in other words, run every minute without exception. Each asterisk is a wildcard meaning "any value" for that field. It is the most permissive cron expression possible and is often used for testing or for processes that genuinely need to run continuously.
- What is the difference between day-of-month and day-of-week?
- These are two separate fields with different interpretations. Day-of-month (field 3) specifies a calendar date —
1means the 1st of the month. Day-of-week (field 5) specifies a day name —1means Monday (0 and 7 both mean Sunday). When both fields are set to non-wildcard values, most cron implementations run the job when either condition is met, not both — which can cause unexpected behaviour. Use?in one field to explicitly ignore it. - How do I run a cron job every 5 minutes?
- Use the step operator:
*/5 * * * *. The*/5in the minute field means "every value divisible by 5" — i.e. 0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55. Similarly,*/15runs every 15 minutes and*/2runs every 2 minutes. You cannot schedule a job to run every 30 seconds in standard 5-field cron — you would need a 6-field cron (with a seconds field) or run the job twice per minute with two entries. - Why is my cron job not running when expected?
- The most common causes are: timezone mismatch (cron runs in the server's timezone, which may differ from yours — always confirm with
crontab -ewhat timezone the server uses), off-by-one errors in day-of-week (0 = Sunday on most systems, but some use 1 = Monday), and the interaction between day-of-month and day-of-week described above. Also verify the cron daemon is running withsystemctl status cronorservice cron status. - Does cron support seconds?
- Standard Unix cron (5-field) does not support seconds — the minimum resolution is one minute. Some extended implementations add a 6th field for seconds: AWS EventBridge, Spring Scheduler, and Quartz Scheduler all support 6-field cron with seconds as the first field. If you need sub-minute scheduling, check your platform's documentation to confirm whether it supports the seconds field and what position it uses.
- What is the cron syntax for GitHub Actions?
- GitHub Actions uses standard 5-field cron syntax in UTC. Define it under the
scheduletrigger:on: schedule: - cron: '0 9 * * 1-5'. Note that GitHub Actions schedules may run up to 15 minutes late during periods of high load. The minimum supported interval is every 5 minutes —* * * * *will be throttled. All times are UTC regardless of your repository's location.