Cron Expression Generator
Pick a preset or set each field individually to build a valid cron expression, with a plain-English explanation of when it runs.
Runs at minute 0 past hour 9 on Monday to Friday.
Supported syntax: * (any), */n (step), a-b (range), a,b (list).
100% private
This tool runs entirely in your browser. Nothing you type is uploaded, logged or stored.
Cron Syntax and Server Task Scheduling
A standard cron expression has five fields separated by spaces: minute (0–59), hour (0–23), day of month (1–31), month (1–12) and day of week (0–6, where 0 is Sunday). Read left to right, `30 2 * * 1` means at 02:30 on Mondays. Four operators cover almost every schedule: `*` matches any value, `*/n` steps in intervals, `a-b` defines a range and `a,b,c` lists specific values.
The most common mistake is combining day of month and day of week. When both are set to anything other than `*`, most cron implementations OR them rather than AND them — `0 0 13 * 5` runs on the 13th of the month and on every Friday, not only on Friday the 13th. If you need both conditions, check the date inside your script instead.
For production jobs, treat scheduling as part of the application. Cron runs in the server's timezone, so daylight-saving transitions can skip or duplicate an hourly job — schedule critical work in UTC. Avoid running everything on the hour: staggering to minute 7 or 23 spreads load and prevents thundering-herd spikes. Make jobs idempotent so a retry cannot double-charge or double-send, add a lock so long-running tasks never overlap themselves, and log start and finish times to a monitoring endpoint so a silently failing job is noticed the same day rather than the same quarter.
Frequently asked questions
In order: minute, hour, day of month, month and day of week. An asterisk in any position means every possible value for that field.