Cron Expression Builder is a visual tool for constructing cron schedule expressions without memorizing the syntax. Select minutes, hours, days, months, and weekdays using an interactive picker, and the tool generates the correct cron expression in real time. It also translates existing expressions into plain English and shows the next 10 scheduled execution times.
A cron expression has five fields: minute (0-59), hour (0-23), day-of-month (1-31), month (1-12), and day-of-week (0-7). Special characters control frequency: * means "every value", */N means "every N units", 1,15 means "1st and 15th", 9-17 means "9 through 17". This compact notation encodes complex schedules — 0 9 * * 1-5 means "9 AM on weekdays", */15 * * * * means "every 15 minutes".
Cron runs in the server's local timezone by default. Cloud schedulers (AWS EventBridge, GitHub Actions, Cloudflare Cron Triggers) typically use UTC. Verify timezone assumptions when scheduling jobs across environments.
Every weekday at 9 AM
Result: 0 9 * * 1-5 — runs Monday through Friday at 09:00
Every 15 minutes
Result: */15 * * * * — runs at :00, :15, :30, :45 every hour
1st of every month at midnight
Result: 0 0 1 * * — runs at 00:00 on the 1st of January through December
Why does my cron job run at the wrong time?
Most likely a timezone mismatch. The cron expression specifies clock time in the server's timezone. Cloud schedulers (GitHub Actions, AWS EventBridge) use UTC. Adjust your expression by your UTC offset.
What does */5 mean?
The slash syntax means 'every N'. */5 in the minutes field means every 5 minutes starting from :00 — runs at :00, :05, :10, :15... */2 in the hours field means every 2 hours: 00:00, 02:00, 04:00...
Can I run a job every 2 hours at a specific minute?
Yes: 30 */2 * * * runs at 00:30, 02:30, 04:30... every 2 hours at :30 past the hour.
What is the difference between 0 and 7 for Sunday?
Both 0 and 7 represent Sunday in standard cron. Day-of-week values are 0=Sunday, 1=Monday, ..., 6=Saturday, 7=Sunday. Most cron implementations accept both.
How do I run a job only on the last day of the month?
Standard cron has no built-in 'last day' syntax. Common workaround: schedule for the 28th-31st and check the date in your script, or use a scheduler that supports the L modifier (Quartz, Jenkins).