What is a cron expression?
A cron expression is a five-field schedule — minute, hour, day of month, month, day of week — read by the cron daemon and by most schedulers (Kubernetes CronJobs, CI pipelines, cloud functions): "0 9 * * 1-5" means 09:00 on weekdays. Ranges, lists and steps (*/15) refine each field; the POSIX definition is the baseline, and some schedulers add a seconds field or named shortcuts such as @daily.
Read the guide: Cron Expressions Explained
How to use Cron Expression Generator
- Start from a preset or leave "Custom schedule".
- Set each field: choose a mode and pick values, a range or a step.
- Check the plain-English explanation and the upcoming runs.
- 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 (Spring / node-cron style)
- 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–FriOutput:
0 9,17 * * 1-5
At minute 0 past hour 9 and 17 on Monday through Friday.Cron expression
Part 1:0
- 1–5In plain English:
At minute 0 past hour 9 and 17 on Monday through Friday.
- 1Minutes (
0–59)Value 0: at minute 0 of the hour.Specific values - 2Hours (
0–23)Values 9 and 17, written as the list9,17: at 09:00 and at 17:00.Specific values - 3Day of month (
1–31)*: no restriction, any day of the month.Every day - 4Month (
1–12)*: no restriction, any month.Every month - 5Day of week (
0–6)Mon to Fri ticked (values 1 to 5); three or more consecutive values are written as the range1-5.Specific values
Tick “Include seconds field” and a seconds field is added first (6 fields). The builder always writes Sunday as 0, never 7.
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 and node-cron (day of week 0–7, Sunday = 0 or 7). Quartz also puts seconds first but numbers days 1–7 from Sunday and needs ? in one day field, so use weekday names (MON-FRI) and add ? before pasting into Quartz.
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.
References
- crontab — POSIX.1-2017 (IEEE Std 1003.1-2017)The portable definition of the five-field crontab line and the meaning of each field.
- crontab(5) — Linux manual pageThe Linux (cron/Vixie) crontab format, including ranges, steps, lists and the @hourly-style shortcuts.