Cron Expression Builder & Explainer
Read a five-field cron expression in plain English with its next run times, or build one field by field: lists, ranges, steps, names, @shorthands (Vixie cron).
A sentence that says exactly when a schedule fires, the next runs in UTC, and warnings for the traps (day-of-month OR day-of-week, 7 for Sunday, dates that never come).
Example: */15 9-17 * * 1-5 → "Every 15 minutes between 09:00 and 17:59, on Monday to Friday"; from Sat 19 Sep 2026 08:00 UTC the next run is Mon 21 Sep 09:00.
Five fields,
and one rule everyone gets wrong.
The syntax this page reads, how the sentence and the next runs are derived, and the dialects it deliberately refuses.
The syntax
A cron line has five fields: minute (0–59), hour (0–23), day of month (1–31), month (1–12 or JAN–DEC) and day of week (0–7 or SUN–SAT, with both 0 and 7 meaning Sunday). Each field is * (any), a value, a list (1,15), a range (1-5), or a step (*/15, 1-30/5 — every fifth value from 1 to 30). The @hourly, @daily, @weekly, @monthly and @yearly words are expanded to their five-field forms and the expansion is shown. This is the POSIX crontab format as extended by Vixie cron, the one in Linux, macOS and most schedulers that call themselves "cron".
Day of month OR day of week
When both the day-of-month and the day-of-week fields are restricted, cron runs when either matches — "0 9 1,15 * MON" fires on the 1st, the 15th and every Monday, not only on Mondays that fall on the 1st or 15th. This is the documented Vixie behaviour and the most common source of surprise; the page warns whenever it applies. When only one of the two is restricted, it is a plain AND with the other fields.
Next runs
The next runs are found by stepping forward from the start time one minute at a time (skipping whole months, days and hours that cannot match) in UTC, bounded to five years, so an expression that never matches — day 31 in February — reports no runs instead of looping. Real crons run in the machine's local time zone and repeat or skip an hour at daylight-saving changes; convert the UTC list to your zone with that in mind. The average interval between the listed runs is given as a sanity check.
What the tool refuses
Six- or seven-field expressions with seconds (Quartz, Spring), the L, W and # modifiers, and time-zone prefixes are different dialects with different rules; the page names them and declines rather than guess. Nothing you enter leaves the browser; the same four anonymous usage counts as the rest of the site apply.
SOURCES
- POSIX.1-2024 — crontab: Schedule Periodic Background Work (five-field format)
- crontab(5) manual page, Vixie/ISC cron — names, steps, @shorthands, the day-of-month/day-of-week rule
Last reviewed 19 September 2026. How results are checked: How we verify.