Cron Expression Generator & Analyzer
Build a cron expression with guided options, or paste one to get a plain-English explanation, the next run times and warnings about common mistakes.
Paste a cron expression to see what it means and when it runs next.
Common schedules
This schedule means
Next 5 run times
Field breakdown
Things to check
All analysis runs locally in your browser — your expressions are never sent to a server. Next-run times use your browser's local timezone; confirm the timezone of the server that will actually run the job.
What It Does
A cron expression is five fields — minute, hour, day-of-month, month and day-of-week — that tell a scheduler exactly when to run a job. The syntax is terse and easy to get wrong, especially the asterisks, step values and the surprising way day-of-month and day-of-week combine. This tool works in two directions. In Analyze mode you paste any cron expression (including @daily-style macros) and instantly get a clear English sentence describing it, the next five times it will fire in your local timezone, a field-by-field breakdown, and warnings for the traps that bite even experienced engineers. In Build mode you assemble an expression from guided dropdowns and common-schedule presets, watching the same live explanation update as you go — so you can be confident the schedule does what you intend before you paste it into a crontab.
When to Use It
- You found a cron line in a server's crontab or a CI config and need to know, in plain words, exactly when it runs before you touch it.
- You are setting up a new scheduled job — a backup, a report, a cleanup task — and want to build the expression visually instead of guessing at the field order.
- A job is firing more or less often than expected and you need to verify the schedule and see its actual next run times.
- You suspect the classic day-of-month plus day-of-week mistake and want a tool that explicitly warns when the OR rule applies.
Worked Examples
0 9 * * 1-5
The everyday business schedule: at 09:00, Monday through Friday. Note the day-of-week range 1-5 covers Monday to Friday, and the asterisks leave day-of-month and month open.
*/15 * * * *
A step value in the minute field: every 15 minutes, around the clock. The */15 expands to minutes 0, 15, 30 and 45 of every hour.
0 0 13 * 5
The famous trap. This does NOT mean 'Friday the 13th'. Because both day-of-month (13) and day-of-week (5 = Friday) are set, cron runs on the 13th OR on any Friday. The analyzer flags this OR behaviour.
@daily
A macro. It expands to 0 0 * * * — once a day at midnight. The tool shows the expansion alongside the description.
Features
How to Use
Analyze: paste a cron expression into the input and read the plain-English description, next run times and any warnings below. Build: switch to the Build tab, pick values from the dropdowns or click a common-schedule preset, then copy the generated expression. The live explanation updates as you change fields.
Common Mistakes
- Assuming day-of-month and day-of-week combine with AND. They combine with OR when both are set — 0 0 13 * 5 fires on the 13th OR any Friday, not only on Friday the 13th.
- Forgetting the scheduler's timezone. Cron runs in the server's timezone (often UTC). The next-run times here use your local timezone, so a job set for 'midnight' may run hours off from what you expect on the server.
- Mixing up the field order. It is minute first, then hour — not hour first. 30 2 means 02:30, while 2 30 is invalid because 30 is not a valid hour.
- Using a 6-field or Quartz expression in a place that only accepts 5 fields. Standard Unix cron has no seconds field — for seconds use the cron-seconds variant, and for L/W/# operators use Quartz.
- Writing */0 or a step of zero. The step value after a slash must be greater than zero, and a bare 0 step is invalid.