Build, read, and validate cron expressions with a visual field-by-field builder, common presets, a plain-English description, and a preview of the next 5 run times.
At 9:00 AM, every day
| Field | Allowed Values |
|---|---|
| Minute | 0–59 |
| Hour | 0–23 |
| Day of Month | 1–31 |
| Month | 1–12 |
| Day of Week | 0–6 (0 = Sunday) |
| Symbol | Meaning |
|---|---|
| * | Any value — matches every possible value for the field. |
| , | Value list separator — e.g. 1,15 means the 1st and the 15th. |
| - | Inclusive range — e.g. 1-5 means values 1 through 5. |
| / | Step value — e.g. */15 means every 15 units, starting from the field's minimum. |
Cron takes its name from the Greek word 'chronos' (time), and the original cron utility dates back to Version 7 Unix in 1979 — making its five-field scheduling syntax one of the longest-lived, most widely copied configuration formats in all of computing. Its job is deceptively simple: run a specified command at specified times, recurring indefinitely, without requiring a person to manually trigger it. What made cron's syntax endure for over four decades, across countless reimplementations and entirely different platforms, is its combination of compactness (a full recurring schedule fits on one line) and expressive power (wildcards, steps, ranges, and lists cover the overwhelming majority of real-world scheduling needs without ever needing a more elaborate configuration language).
Each of the five fields answers one question independently, and a given moment in time matches the overall expression only if it satisfies every field (with the specific day-of-month/day-of-week OR exception noted above). The minute field asks 'which minute(s) of the hour?' The hour field asks 'which hour(s) of the day, in 24-hour time?' The day-of-month field asks 'which day(s) of the calendar month?' The month field asks 'which month(s) of the year?' And the day-of-week field asks 'which day(s) of the week, numbered 0 (Sunday) through 6 (Saturday)?' Because each field is independent, you can freely mix specificity — an expression like '0,30 8-18 * * 1-5' (every half hour, from 8 AM to 6 PM, Monday through Friday) combines a list, a range, and a range in three different fields simultaneously.
A handful of patterns cover the vast majority of real-world scheduling needs. 'Every N minutes/hours' uses the step syntax on an otherwise-wildcard field: '*/10 * * * *' for every 10 minutes, '0 */4 * * *' for every 4 hours on the hour. 'Once a day at a fixed time' uses specific values for minute and hour with everything else wildcarded: '30 6 * * *' for 6:30 AM daily. 'Only on weekdays' or 'only on weekends' restricts the day-of-week field: '1-5' for Monday–Friday, '0,6' for Saturday and Sunday. 'Once a week' fixes a single day-of-week value alongside a fixed time: '0 9 * * 1' for 9 AM every Monday. 'Once a month' fixes a day-of-month value: '0 0 1 * *' for midnight on the 1st. This tool's Quick presets cover the most common of these directly, and the visual builder makes constructing any variation on them straightforward.
The single most common cron mistake is misreading the day-of-month/day-of-week OR interaction described above — writing '0 9 15 * 1' expecting 'the 15th, but only if it's a Monday' when it actually means 'the 15th of every month, OR every Monday,' which fires far more often than intended. Another frequent mistake is confusing 12-hour and 24-hour time — cron's hour field is always 0–23, so 9 PM is hour 21, not '9 PM' or '9'. A third common error is forgetting that day-of-week 0 means Sunday (not Monday), which trips up anyone used to a Monday-first week convention. Finally, it's easy to accidentally leave a field wildcarded when you meant to restrict it — '30 9 * * *' (every day) instead of the intended '30 9 * * 1-5' (weekdays only) is an easy typo with a real operational consequence, since it means a job intended for business days alone also fires on weekends.
Cron Expression Generator builds and explains recurring schedules. These related developer tools cover other common time and automation workflows.