What is a cron expression?
Cron is the classic Unix scheduler that runs commands at set times. A cron expression is the short text that describes when. It has five fields separated by spaces: minute, hour, day of the month, month and day of the week. For example 30 2 * * * means at 02:30 every day, and 0 9 * * 1-5 means at 09:00 on weekdays.
Cron-style schedules are used far beyond crontab files: in Kubernetes CronJobs, GitHub Actions, CI systems, task runners and cloud schedulers. Reading them correctly saves you from jobs that run too often, at the wrong hour or not at all.
How to use the cron parser
- Type or paste a cron expression, or press a preset.
- Read the plain-English description to check that it means what you intended.
- Look at the field table to see which values each field matches.
- Check the next 10 run times, in your local time or UTC.
- Fix any error shown, such as a value out of range.
The five fields and special characters
- Minute: 0 to 59. Hour: 0 to 23. Day of month: 1 to 31. Month: 1 to 12 or jan to dec. Day of week: 0 to 6 (Sunday is 0, and 7 is also accepted) or sun to sat.
- An asterisk (*) means every value in that field.
- A comma separates a list: 1,15 means the 1st and the 15th.
- A hyphen makes a range: 1-5 means Monday to Friday in the weekday field.
- A slash sets a step: */15 in the minute field means every 15 minutes, and 9-17/2 means every second hour from 9 to 17.
Day of month and day of week together
When both the day-of-month and the day-of-week fields are restricted, classic cron runs the job if either one matches, not both. So 0 0 13 * 5 runs at midnight on the 13th of every month and also on every Friday, which surprises many people. If you want only Friday the 13th, you need extra logic inside the script. This parser follows the classic behavior.
Time zones and other cron flavors
A cron schedule has no time zone of its own. It runs in the time zone of the machine or service that executes it, and many cloud tools use UTC. GitHub Actions schedules, for example, run in UTC. Some systems use a different syntax: AWS EventBridge uses six fields including a year, and Quartz adds a seconds field. This tool handles the standard five-field Unix format and the macros @hourly, @daily, @weekly, @monthly and @yearly.
Example: debugging a schedule
Imagine a backup job that should run every night but runs every minute during one hour. The expression 0-59 2 * * * means every minute from 02:00 to 02:59, because the minute field is a range. The fix is 0 2 * * *, which runs once at 02:00. Pasting each version into the parser makes the difference obvious in the description and in the list of next run times.
Common cron schedules
| Expression | Meaning |
|---|---|
| * * * * * | Every minute |
| */5 * * * * | Every 5 minutes |
| 0 * * * * | At the start of every hour |
| 0 0 * * * | Every day at midnight |
| 0 9 * * 1-5 | At 09:00 on weekdays |
| 30 2 1 * * | At 02:30 on the 1st of every month |
| 0 0 * * 0 | Every Sunday at midnight |
| 0 */6 * * * | Every 6 hours |
Frequently Asked Questions
How many fields does a cron expression have?
Standard Unix cron has five: minute, hour, day of month, month and day of week.
What does */5 mean in cron?
Every 5 units of that field. In the minute field it means every 5 minutes.
What does 0 0 * * * mean?
It runs every day at midnight.
Which time zone does cron use?
The time zone of the system that runs it. Many cloud schedulers use UTC.
Why does my job run on more days than expected?
If both day-of-month and day-of-week are set, classic cron runs when either matches.
Does this support seconds or Quartz syntax?
No. It supports the standard five-field Unix format.
Is my expression uploaded?
No. Parsing happens in your browser.