Cron expression generator

Build standard five-field cron strings (minute hour day-of-month month day-of-week) and get a plain-English summary. Adjust fields or start from a preset.

Presets

Fields

Need more than a template?

Need something built around this?

I build internal tools, integrations and full-stack products for startups and growing teams.

Full-stack engineering →

How to use the cron expression generator

A cron expression is five fields: minute, hour, day of month, month and day of week. This tool builds the string from those fields, explains it in plain English and lists the next five times it will fire, so you can check a schedule before it goes into a crontab, a Kubernetes CronJob or a CI workflow.

  1. Pick a preset, or type a value into each field. A star means every value, */15 means every 15th, 1-5 is a range and 1,15 is a list.
  2. Read the plain-English line under the expression. If it says something you did not mean, fix the field it names.
  3. Switch between your own time zone and UTC to see when the job will really run, then copy the expression.

Worked examples

Weekdays at 09:00

0 9 * * 1-5

Minute 0, hour 9, any day of the month, any month, Monday to Friday.

Every 15 minutes

*/15 * * * *

Fires at :00, :15, :30 and :45 of every hour.

02:30 on the first of the month

30 2 1 * *

A common slot for a monthly cleanup or report, when traffic is low.

Mistakes to avoid

  • Forgetting the time zone

    Cron runs in the time zone of the machine or platform, not yours. A server set to UTC fires 0 9 * * * at 09:00 UTC. GitHub Actions schedules are always UTC. A Kubernetes CronJob uses the controller's time zone unless you set spec.timeZone, which is stable from Kubernetes 1.27.

  • Restricting both day of month and day of week

    When both fields are set, standard cron runs the job when either one matches. 0 9 13 * 5 fires on every 13th and on every Friday, not only on Friday the 13th.

  • Steps that do not divide evenly

    */7 in the minute field fires at :00, :07 and so on up to :56, then starts over at :00. The gap across the top of the hour is four minutes, not seven.

  • Letting runs overlap

    If a job takes longer than its interval, the next run starts while the first is still going. On Linux wrap the command in flock. On a Kubernetes CronJob set concurrencyPolicy: Forbid.

Common cron schedules

Each of these has its own page with the expression, the next run times and the syntax for other schedulers.

Questions people ask

Does it support a seconds field?
No. Standard cron has no seconds. Quartz and Spring put a seconds field in front, and AWS EventBridge uses six fields with a question mark in one of the two day fields, so those formats need converting by hand.
Is Sunday 0 or 7?
This tool uses 0 for Sunday and 6 for Saturday. Many cron implementations also accept 7 for Sunday, but not all do, so 0 is the safe choice.
How do I run something every 90 minutes?
One cron line cannot do it, because the minute and hour fields repeat on the clock. Run a job every 30 minutes and have the script skip alternate runs, or use a scheduler that supports intervals, such as a systemd timer.
Does my expression leave the page?
No. The expression is built and checked in your browser.

Related