What is Cron Expression Parser?
Cron Expression Parser reads an existing cron expression and explains it in plain English, shows the next 10 scheduled run times, and validates the syntax. Paste any cron expression โ 5-field Unix cron, 6-field (with seconds), or Quartz cron โ to see exactly when it runs, with timezone support for accurate local time display.
A cron expression is a string of 5 (or 6) fields defining a recurring schedule: minute, hour, day-of-month, month, day-of-week. The wildcard (*) means 'every'. A comma separates values (1,15 = 1st and 15th). A hyphen defines a range (1-5 = Monday to Friday). A slash defines intervals (*/15 = every 15 minutes). The special strings @daily, @weekly, @monthly, @hourly, and @reboot are equivalent to common expressions.
Cron is used for: database backups, report generation, cache clearing, email digests, cleanup jobs, health checks, sitemap generation, and any recurring automated task. Kubernetes CronJobs, GitHub Actions scheduled workflows, AWS EventBridge Rules, and most cloud schedulers use cron syntax. Understanding how to read cron expressions is essential for configuring and debugging scheduled jobs.
How to Use
- Paste your cron expression into the input field (e.g., 0 9 * * 1-5).
- See the plain-English translation immediately: 'At 09:00, Monday through Friday.'
- View the next 10 run times in both UTC and your local timezone.
- Click any field to see allowed values and special characters for that position.
- Use the 'Validate' button to check for syntax errors and get specific error messages.
Examples
Parse a production cron
Result: '0 2 * * 0' โ 'At 02:00 on Sunday' โ next: 2026-08-02 02:00, 2026-08-09 02:00...
Understand a complex expression
Result: '0 9,17 * * 1-5' โ 'At 09:00 and 17:00, Monday through Friday'
GitHub Actions schedule
Result: '0 8 1 * *' โ 'At 08:00 on day 1 of the month' โ next: Aug 1, Sep 1, Oct 1...
Frequently Asked Questions
What does '*/15 * * * *' mean?
'*/15' in the minutes field means 'every 15 minutes' โ specifically at minutes 0, 15, 30, 45 of every hour. The full expression '*/15 * * * *' runs at 00:00, 00:15, 00:30, 00:45, 01:00, 01:15, etc. The slash operator in cron means 'every N' starting from the field's minimum value.
What is the difference between 5-field and 6-field cron?
Traditional Unix cron uses 5 fields: minute hour day-of-month month day-of-week. Some systems (Quartz scheduler, AWS EventBridge, some cloud schedulers) add a seconds field as the first field: second minute hour day-of-month month day-of-week. '0 0 9 * * 1-5' in 6-field cron = '0 9 * * 1-5' in 5-field cron โ both mean 9:00 AM on weekdays.
How does cron handle day-of-month and day-of-week?
When both day-of-month and day-of-week are specified (not *), most cron implementations use OR logic: the job runs when either condition is met. '15 9 1 * 1' runs on the 1st of every month OR every Monday (not 'the 1st that is a Monday'). To run on the first Monday: use a script that checks the date, or use the @weekly pattern with a startup check, or use a cloud scheduler that supports complex schedule expressions.
What timezone does cron use?
Unix cron runs in the system timezone of the machine where the cron daemon runs. When you deploy to a server, the timezone is typically UTC. '0 9 * * *' means 9:00 UTC, not 9:00 in your local timezone. If you want local-time scheduling, either configure the system timezone or convert your desired time to UTC. Cloud schedulers (AWS EventBridge, GCP Cloud Scheduler) let you specify a timezone.
How do I create a cron expression for 'every first Monday of the month'?
Pure cron cannot directly express this โ it has no 'nth weekday of month' field. Workarounds: 1. Run daily at your target time and check the date in the script: if [ $(date +%d) -le 7 ] && [ $(date +%u) -eq 1 ]. 2. Use a scheduler that supports this: AWS EventBridge Scheduler (cron(0 9 ? * 2#1 *) means first Monday). 3. Use a more expressive scheduler like APScheduler (Python) or node-schedule (Node.js) which support these patterns.
Related Tools