Cron Expression Explainer

Translate a cron expression into plain English and see when it next runs.

DevOps Runs in your browser Shareable link
Expression
minutehourday of monthmonthday of week

Nothing explained yet

Paste a cron expression — five fields, or an @alias such as @daily — to get a plain-English description, a field-by-field breakdown and the next ten runs.

Runs entirely in your browser. Your data isn't uploaded — this page makes no network request with anything you type, which you can verify in your browser's network tab. How this works.

What is the Cron Expression Explainer?

The opposite problem: you have found a cron expression in a repository and need to know what it does before changing it. Reading "0 3 * * 0" correctly is easy to get almost right, and almost right means a job runs at the wrong time in production.

Paste the expression and get a plain-English description, a field-by-field breakdown showing exactly which values each field matches, and the next occurrences in your chosen time zone. Out-of-range and malformed fields are flagged with the reason.

How to use it

  1. Paste the cron expression.
  2. Read the one-line summary, then the per-field table for the details.
  3. Set a time zone to see the next run times where the job actually runs.
  4. Use Explain another to check the schedule you are replacing it with.

Example

Reading an expression found in a repository.

Input
*/15 2-4 * * 6,0
Result
Every 15 minutes, between 02:00 and 04:59, on Saturday and Sunday.

minute        0, 15, 30, 45
hour          2, 3, 4
day of month  every day
month         every month
day of week   Saturday, Sunday

Features

  • Plain-English summary of any standard five-field expression
  • Per-field breakdown of matched values
  • Next ten run times in any time zone
  • Support for @hourly, @daily, @weekly, @monthly and @yearly aliases
  • Named months and weekdays (JAN, MON) as well as numbers
  • Validation with specific errors for out-of-range and malformed fields

Frequently asked questions

Is Sunday 0 or 7?
Both, in most implementations — day-of-week accepts 0-7 with 0 and 7 both meaning Sunday. Some schedulers only accept 0-6, so prefer 0 or the name SUN for portability.
What do @daily and the other aliases mean?
@hourly is "0 * * * *", @daily and @midnight are "0 0 * * *", @weekly is "0 0 * * 0", @monthly is "0 0 1 * *" and @yearly and @annually are "0 0 1 1 *". @reboot is not a schedule at all — it runs once at startup.
Why does my job not run on the 31st?
Because months without a 31st simply do not match. A schedule on day 31 runs seven times a year. For "last day of month", use L if your scheduler supports it, or run daily and check the date in the job.
Esc

Loading the catalog…