Skip to main content
chain
⏲
Cron Expression Builder

COMMON SCHEDULES

Field order is minute · hour · day-of-month · month · day-of-week. When both day-of-month and day-of-week are restricted, cron runs on a day matching either — not both.

// about this tool

Cron Expression Builder Online

Updated 2026-10-24

Build a cron expression online for free. Pick a mode for each of the five fields (minute, hour, day of month, month, day of week) and SnapTools writes the expression, a plain-English description, and the next run times, so you can check it means what you think before it's live. Everything happens in your browser.

Setting both day-of-month and day-of-week is the single most surprising rule in cron: the job fires on a day matching either field, not both, which is exactly the kind of mistake the next-run list here is meant to catch before a deploy does.

// how to use

  1. 1 Pick a mode for each field (every, every N, specific values, or a range).
  2. 2 Read the plain-English line and the next run times to check it means what you think.
  3. 3 Copy the expression and paste it into your crontab, CI schedule or scheduler config.

// examples

Every 15 minutes during office hours, weekdays only
Input
Minute: every 15 · Hour: 9 to 17 · Day of week: Mon to Fri
Output
*/15 9-17 * * 1-5
A nightly job
Input
Minute: 0 · Hour: 3
Output
0 3 * * * (at 03:00 every day)
The first of every month
Input
Minute: 0 · Hour: 0 · Day of month: 1
Output
0 0 1 * *

// common uses

Writing a crontab line without looking up the field order again Setting a schedule for a CI job, backup or cache warm Checking a schedule really fires when you think before you deploy it Learning what the star, comma, dash and slash forms do

// faq

What do the five fields mean?
In order, minute, hour, day of month, month and day of week. A star means "every", so `* * * * *` runs every minute and `0 3 * * *` runs at 03:00 every day. Some schedulers add a sixth field for seconds or a year, but the five-field form is what crontab itself uses.
What does */5 actually mean?
Every value divisible by 5, counting from zero, so in the minute field it fires at :00, :05, :10 and so on. It is a step, not "five minutes after the job last ran", which matters if you expected the gap to shift.
Why does my job run more often than I expected?
Almost always an unset field. `*/5 * * * *` is every five minutes of every hour, forever. If you meant five-minute intervals only during the morning you also have to constrain the hour field, which is what the hour row here is for.
What happens if I set both day-of-month and day-of-week?
Cron runs the job on a day matching either one, not both. `0 0 1 * 1` is midnight on the 1st AND midnight every Monday. It is the single most surprising rule in cron, so the builder shows you the next run times rather than asking you to trust the expression.
Which timezone do the next run times use?
Your browser's local timezone, because that is the one you can verify at a glance. The server running the job uses its own, usually UTC on a cloud box, so check the timezone there before relying on an exact hour.