Cron expression generator

Build a cron expression with a simple form, or paste one and read what it means in plain words. The next 10 run times are listed in your time zone, with daylight saving changes marked.

Free and private. Everything runs in your browser, nothing is uploaded.

How it works

  1. Pick a scheduleStart from a common schedule or set each field in the form: every, every n, specific values or a range.
  2. Read it backThe expression is explained in plain words, so you can check that it does what you meant.
  3. Check the next runsCompare the next 10 run times in your server's time zone, then copy the expression.

What a cron expression means

A standard cron expression has five fields separated by spaces: minute, hour, day of month, month and day of week. An asterisk means every value, a comma separates a list (1,15), a hyphen marks a range (9-17) and a slash sets a step (*/15 is every 15 minutes). So 30 2 * * 1-5 runs at 2:30 in the night from Monday through Friday.

Paste any expression and the tool describes it in a sentence, lists each field and calculates the next ten run times. Shortcuts such as @daily and @hourly are understood too. If something is wrong, the message names the field and the position instead of a vague syntax error.

Traps that catch experienced people

When both day of month and day of week are set, classic cron runs on days that match either one, not both: 0 0 13 * 5 runs on every 13th and on every Friday. If one of the two fields starts with an asterisk, as in */2, both must match. The explanation points this out whenever it applies.

Cron uses the time zone of the machine it runs on. A job at 2:30 does not run on the night clocks go forward in many countries, and a job at 1:30 can meet the same hour twice when clocks go back. Choose your server's time zone in the run list to see exactly which days are affected. Months without day 31 are simply skipped.

Standard, seconds and Quartz

Linux crontab, Kubernetes CronJobs and GitHub Actions use the five field form. Some libraries add a seconds field in front. Quartz, used by many Java schedulers, has seconds, an optional year, numbers days of the week 1 to 7 starting with Sunday and requires ? in one of the day fields. It also adds L for the last day, W for the nearest weekday and # for the nth weekday of the month. Choose the syntax at the top; switching converts the expression where possible.

Frequently asked questions

What does */5 * * * * mean?

It runs every 5 minutes, at minute 0, 5, 10 and so on of every hour, every day.

Which time zone does cron use?

The time zone of the system that runs it, which is often UTC on servers. Kubernetes and some cloud schedulers let you set a time zone. Pick the right zone in the run list to see the real times.

How do I run a job on the last day of the month?

Standard cron has no symbol for it. Quartz supports L in the day of month field, for example 0 0 0 L * ?. In classic cron a common workaround is to run on days 28 to 31 and check the date in the script.

Why does my job not run on day 31 every month?

Because many months have fewer days. Cron skips those months instead of running on the last day.

Is my expression sent anywhere?

No. Everything, including the run times, is calculated in your browser.

Does it work offline?

Yes. After you open the page once, it keeps working without an internet connection.