Skip to content

Cron Expression Generator

Build, parse, and test cron schedules with a visual editor

0–59
0–23
1–31
1–12
0–6 (Sun=0)

Build and Understand Cron Schedules

Cron is the time-based job scheduler on Unix and Linux systems, and its five-field expression format has become the standard way to define recurring schedules across cloud platforms, CI/CD pipelines, container orchestrators, and monitoring tools. The syntax is compact but not intuitive — a misplaced number can shift a job from daily to hourly or miss weekends entirely. This tool lets you build expressions visually, see a plain-English description, and verify the next run times before deploying.

The Five Fields

A standard cron expression has five fields separated by spaces: minute (0–59), hour (0–23), day of month (1–31), month (1–12), and day of week (0–6, where 0 is Sunday). Each field accepts an asterisk (every value), a single value, a comma-separated list, a dash-separated range, or a slash-based step. These can be combined:"1,15 */2 * * *" means at minutes 1 and 15 of every second hour.

Common Patterns

"0 * * * *" runs at the top of every hour."0 9 * * 1-5" runs at 9:00 AM Monday through Friday."*/10 * * * *" runs every 10 minutes."0 0 1 * *" runs at midnight on the first day of every month."30 2 * * 0" runs at 2:30 AM every Sunday. Once you recognize these patterns, reading and writing cron becomes routine. The presets above give you one-click access to the most common schedules.

Step Intervals and Ranges

The slash operator divides a range into steps."*/5" in the minute field expands to 0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55. You can apply steps to a subrange:"10-40/10" means 10, 20, 30, 40. Ranges use a dash:"1-5" in the day-of-week field means Monday through Friday. Combining ranges with steps gives fine-grained control without listing every value.

Day-of-Month vs Day-of-Week Gotcha

When both the day-of-month and day-of-week fields are set to something other than *, most cron implementations treat them as an OR condition."0 9 15 * 1" runs at 9 AM on the 15th of every month and also on every Monday, not just Mondays that fall on the 15th. This catches people off guard regularly. If you need AND logic, set one field to * and add a conditional check inside the script.

Testing Before Deploying

A cron job that runs more often than intended wastes resources; one that runs less often than intended misses deadlines. The next-run preview shows the upcoming 10 execution times calculated from your device clock so you can verify the cadence before adding the expression to crontab, GitHub Actions, Kubernetes CronJob, AWS EventBridge, or any other scheduler. If the times look wrong, adjust the fields and re-check immediately.

$ faq

What is a cron expression?
A cron expression is a string of five fields separated by spaces that defines a recurring schedule. The fields represent minute (0–59), hour (0–23), day of month (1–31), month (1–12), and day of week (0–6, where 0 is Sunday). An asterisk (*) means"every value", a comma separates individual values, a dash defines a range, and a slash sets a step interval.
What does */5 mean?
The slash notation means"every Nth value". So */5 in the minute field means every 5 minutes (0, 5, 10, 15, …). You can also combine it with a range: 10-30/5 means every 5 minutes between 10 and 30 (10, 15, 20, 25, 30).
How do I schedule something for the first Monday of every month?
Standard five-field cron cannot express"first Monday" directly because the day-of-month and day-of-week fields combine with OR logic, not AND. A common workaround is to set the day-of-week to Monday (1) and the day-of-month to 1-7, then add a check in your script. Some extended cron implementations support a sixth field or special syntax for this.
What is the difference between day of month and day of week?
In most cron implementations, if both fields are set to something other than *, the job runs when either condition is true (OR logic). For example,"0 9 15 * 1" runs at 9:00 AM on the 15th of every month AND every Monday, not just Mondays that fall on the 15th.
Are the next run times accurate?
The next run times are calculated based on your device clock and the standard five-field cron specification. They do not account for system-level factors like cron daemon configuration, timezone differences on the server, or daylight saving transitions. Use them as a quick sanity check, not as the definitive schedule.
Can I use names for months and days?
Some cron implementations accept JAN–DEC for months and SUN–SAT for days of the week. This tool generates numeric values for maximum compatibility, but the human-readable description uses names so you can verify the schedule at a glance.
Is my data sent to a server?
No. The entire generator and parser runs in JavaScript inside your browser. No cron expressions or schedule data are transmitted anywhere.