TOOL-12 · Scheduling

Cron expression builder

Type any cron expression and get a plain-English description plus the next scheduled run times.

Cron expression

minutehourdaymonthweekday

Presets

Schedule description

Loading…

Next 10 runs

Reading a cron expression

A cron schedule is five fields — minute, hour, day-of-month, month, day-of-week — each accepting a number, a range (1-5), a list (1,15), a step (*/15), or a wildcard (* meaning "every"). 0 2 * * * reads as "at minute 0 of hour 2, every day of every month, every day of the week" — 2:00 AM daily. The order never changes and there's no seconds field in standard cron; that's the whole syntax.

The mistake this tool catches early

The most common cron bug is a schedule that's technically valid but doesn't fire when you think — * 2 * * * (every minute of hour 2, not once at 2 AM) is a one-character typo away from the schedule you meant. Seeing the next 10 actual run times, not just the expression, is the fastest way to catch that before it ships to a crontab.

What does */15 mean in a cron schedule?

A step value — “every 15 units, starting from 0.” In the minute field, */15 fires at :00, :15, :30, :45. It's shorthand for the list 0,15,30,45.

What's the difference between day-of-month and day-of-week?

They're separate fields (positions 3 and 5) and when both are restricted (not *), most cron implementations treat them as OR, not AND — the job runs if either condition matches. This is a frequent source of schedules firing more often than intended.

Does cron use seconds?

Standard POSIX cron does not — five fields, minute resolution. Some schedulers (Quartz, some CI systems) add a seconds field as a sixth position; check your specific scheduler's docs if a 6-field expression doesn't parse where you're pasting it.

All processing runs locally