How cron expressions work
A cron expression is five space-separated fields that tell a scheduler when to run a job. In order, they are minute (0–59), hour (0–23), day of the month (1–31), month (1–12 or JAN–DEC) and day of the week (0–6 or SUN–SAT, where 0 and 7 both mean Sunday).
An asterisk (*) means “every value”. A slash adds a step — */5in the minute field means “every 5 minutes”. You can also use ranges (1-5) and lists (1,15,30). So 0 9 * * 1-5reads as “at 09:00, Monday through Friday”.
This generator parses your expression entirely in the browser, describes it in plain English, validates the syntax, and previews the next few run times in UTC — nothing is sent to a server.
Popular cron expressions
* * * * *Every 5 minutes*/5 * * * *Every 10 minutes*/10 * * * *Every 15 minutes*/15 * * * *Every 30 minutes*/30 * * * *Every hour0 * * * *Every 2 hours0 */2 * * *Every 6 hours0 */6 * * *Daily at midnight0 0 * * *Daily at 9 AM0 9 * * *Every Monday0 0 * * 1Every Sunday0 0 * * 0Every weekday0 0 * * 1-5Every weekend0 0 * * 6,0First of the month0 0 1 * *Yearly (Jan 1)0 0 1 1 *Frequently Asked Questions
About cron expressions and this generator.
From the blog
Cron Expressions Explained: A 5-Field Cheatsheet
A technical reference for POSIX cron expressions: the 5-field syntax, step-value math traps, and the Day-of-Month vs. Day-of-Week OR-behavior that catches everyone.
Read →cronCron Syntax Across Schedulers: Unix vs. Quartz vs. AWS EventBridge
Why your cron expression failed in the cloud. A technical breakdown of the differences between POSIX, Java Quartz, AWS, and Node.js schedulers.
Read →cronWhy Your Cron Job Failed: Debugging Timezones, PATH Variables, and Overlaps
A practical guide to diagnosing standard runtime failure modes in cron daemons. Learn why your script works in the terminal but fails silently in the background.
Read →