Cron Expression Builder

Build cron expressions visually instead of memorizing the syntax. Pick when each field should fire (every minute, every hour, specific days, specific times). The expression and next 10 fire times update live. Pair with the cron parser to read existing expressions.

Minute
Hour
Day of month
Month
Day of week

Next 10 fire times (local)

How to use the Cron Expression Builder

Pick a preset for each cron field, or choose Custom to type your own. Common patterns (every 5 minutes, weekdays at 9am, midnight, first of month) are one click. Output is a standard 5-field cron expression that any system understands (Linux cron, GitHub Actions, Vercel cron, AWS EventBridge).

The five cron fields, from clicks to expression

A cron expression is five space-separated fields — minute, hour, day-of-month, month, day-of-week — each one a wildcard (*), a value, a list (1,15), a range (1-5), or a step (*/15). The builder maps each field to a dropdown, so you choose intent ("weekdays", "every 15 minutes") and it writes the syntax for you.

The trap most people fall into is the relationship between day-of-month and day-of-week: when both are set to something other than *, standard cron treats them as OR, not AND, so the job fires more often than expected. Watching the next fire times update as you build is the quickest way to catch that.

Common use cases

  • Scheduling a backup or cleanup job — pick "daily at 2am" without looking up the syntax.
  • GitHub Actions, Vercel, EventBridge — generate the five-field string those platforms expect.
  • Learning cron — change a dropdown and watch which field of the expression moves.
  • Avoiding overlap — use the next-fire preview to confirm a job is not stacking on itself.
  • Documenting a schedule — copy a known-correct expression straight into a config file or runbook.

Frequently asked questions

Does this build 5-field or 6-field cron?

It builds the standard five-field expression (minute to day-of-week), which is what Linux cron, GitHub Actions, and most schedulers use. Quartz and Spring add a seconds field (6-7 fields) and special tokens like L for the last day.

Why did setting both day fields make the job fire more often?

Because cron ORs day-of-month and day-of-week when both are specified. 0 0 1 * 1 runs on the 1st OR on every Monday, not only on a Monday the 1st. Leave one field as * to avoid surprises.

Will the output run on GitHub Actions?

Yes, GitHub Actions takes a five-field cron, but it runs in UTC and has no timezone option, so convert your local time to UTC before pasting the expression in.

How is this different from the cron decoder?

The builder constructs an expression from your choices; the decoder reads an existing expression and tells you in English what it does and when it next fires. Use them in opposite directions.
Embed this tool on your site

Free to embed, no attribution required (but appreciated). Paste this where you want the tool to appear: