Cron Expression Generator

Runs in browser Utilities

Pick minutes, hours, days, months and weekdays with a friendly builder (or presets like "every 15 minutes" / "weekdays at 09:00"), and see the resulting expression, its explanation and the next 10 executions.

Privacy: This tool runs entirely in your browser. Your input never leaves your device.
Loading tool…

How to use Cron Expression Generator

  1. Start from a preset or leave "Custom schedule".
  2. Set each field: choose a mode and pick values, a range or a step.
  3. Check the plain-English explanation and the upcoming runs.
  4. Copy the expression into your crontab, CI config or scheduler.

Cron Expression Generator features

  • Presets for common schedules including Gulf work-week (Sunday–Thursday) and last-day-of-month
  • Per-field builder: every, specific values, range or step for minutes, hours, days, months and weekdays
  • Optional seconds field for Spring / Quartz / node-cron
  • Live expression, English explanation and the next 10 runs in your timezone
  • Load any existing expression into the builder
  • One-click copy of the expression

Cron Expression Generator example

Weekdays at 09:00 and 17:00

Input:

Minutes: 0 · Hours: 9,17 · Days: every · Months: every · Weekdays: Mon–Fri

Output:

0 9,17 * * 1-5
At minute 0 past hour 9 and 17 on Monday through Friday.

Frequently asked questions about Cron Expression Generator

Which cron format does the generator produce?

The standard 5-field format (minute hour day-of-month month day-of-week) used by crontab, Kubernetes CronJobs, GitHub Actions, Cloudflare Cron Triggers and most schedulers. Tick "Include seconds" for the 6-field format used by Spring, Quartz and node-cron.

What does "Every N (step)" mean?

It produces */N: for minutes, */15 fires at :00, :15, :30 and :45 of every hour. Set a start value to get an expression like 5-59/15.

Are the next run times in my timezone?

They are computed in the timezone you select, with daylight-saving transitions handled — a job scheduled at 02:30 is skipped on a night when 02:30 does not exist.

Can I load an existing expression into the builder?

Yes — paste it in the "Load an existing expression" field. Lists, ranges and steps are mapped to the controls; L, W and # forms are explained but cannot be edited visually.

Why is there a Sunday–Thursday preset?

Saudi Arabia, Jordan and most Gulf countries work Sunday to Thursday, so "0 8 * * 0-4" is the local equivalent of a weekday schedule.

Technical notes

The builder emits the narrowest canonical form (buildCron): specific values are de-duplicated, sorted and compressed into a range only when three or more are consecutive (0,15,30,45 stays a list; 9,10,11,12 becomes 9-12), a step starting at the field minimum is written */N and otherwise from-max/N (5-59/15), and a reversed range is silently swapped. Day-of-week is capped at 6, so Sunday is always written as 0, never 7.

Loading an expression maps the parsed value sets, not the raw text, back onto the controls: MON-FRI becomes checkboxes 1–5, the Quartz-style 5/15 loads as step 15 from 5 and is re-emitted as 5-59/15, and a field using L, W or # is reset to 'every' with a note because no control exists for it. Next runs use the same DST-aware scheduler as the explainer, in the timezone chosen here, capped at 10.