Cron Expression Builder

Visually build a cron expression — minute, hour, day, month, weekday — and preview the next 5 fire times.

0 9 * * 1-5
Enter input above to see the result.

Five fields, one job

Cron syntax is famously dense — five fields, each accepting wildcards, ranges, lists, and steps. Writing one from scratch every time invites typos and off-by-one errors. This builder lets you construct a cron expression visually using dropdowns and presets, see the resulting string, read a plain-English summary, and verify against the next five real fire times in your local timezone before deployment.

Servers, Kubernetes, and cloud schedulers

Building a schedule visually

Wildcards, ranges, lists, and steps

OR logic, timezones, and Quartz traps

Assembling a weekday-morning schedule

Set minute 0, hour 9, day-of-month *, month *, day-of-week 1-5. The builder assembles 0 9 * * 1-5, explains it as "At minute 0, hour 9, on Mon–Fri.", and lists the next five real fire times in your local timezone so you can eyeball them before shipping. Change day-of-week to */2 in the minute field and it re-validates instantly, rejecting anything out of range with the field's valid bounds.

Day-of-month vs day-of-week, phase offsets, and extra fields

Does * * 15 * 1 run only on the 15th if it's a Monday? No — it fires on the 15th OR on any Monday. When both day-of-month and day-of-week are restricted, standard cron ORs them together. Matching "the 15th only when it's a Monday" needs a wrapper script that checks the date.

The preview times don't match when my job actually runs. The preview uses your browser's timezone; real cron daemons run in the server's timezone, usually UTC. Convert your intended local time to the server's zone before deploying.

Is */15 "every 15 minutes from now"? No. It's a fixed phase from the start of the range — minutes 0, 15, 30, 45 — not a rolling interval anchored to the current time. Use an explicit list like 7,22,37,52 if you need a different phase.

My 6- or 7-field expression won't parse. This builder targets the standard 5-field crontab. Quartz (used by Java schedulers) adds seconds and an optional year, and systemd timers use an entirely different syntax — neither is 5-field cron.