Skip to content
Devtoolry

Cron Expression Parser

Explain any cron expression in plain English and see its next run times in your time zone. Validates crontab syntax, steps, ranges, names and @daily macros.

About the Cron Expression Parser

The Cron Expression Parser explains a crontab schedule in plain English, breaks it into its five (or six) fields and lists the next ten times it will run in the time zone you choose. Use it to check a schedule before it goes into a crontab, a Kubernetes CronJob, GitHub Actions or a job queue, instead of waiting to see whether it fires.

Everything runs in your browser, so your input is never uploaded to a server.

How to use the Cron Expression Parser

  1. Type a cron expression such as 0 9 * * 1-5, or pick a common schedule.
  2. Read the plain-English description and check each field’s expanded values.
  3. Choose the time zone the job runs in to see its next ten run times.
  4. Copy the expression or description into your crontab, CI config or docs.

Examples

Weekdays during office hours

Input

*/15 9-17 * * 1-5

Result

At every 15th minute past every hour from 9 through 17 on every day-of-week from Monday through Friday.

The last run is 17:45, because the hour range includes 17.

First day of each quarter

Input

0 6 1 */3 *

Result

At 06:00 on day-of-month 1 in every 3rd month.

Runs in January, April, July and October.

Common mistakes

  • Expecting AND between the day fields. Setting both day-of-month and day-of-week matches either one. To run on the first Monday only, schedule 0 9 1-7 * * and check the weekday inside the job.
  • Forgetting the server time zone. A job written as 0 9 * * * runs at 09:00 in the server zone, which is often UTC. Check the run times in that zone before deploying.
  • Jobs inside a DST change. Times between 02:00 and 03:00 do not exist on the spring-forward day in many zones. The run list marks those runs with “DST shift”.

Works well with the Cron Expression Parser

Frequently asked questions

What do the five cron fields mean?

In order: minute (0–59), hour (0–23), day of month (1–31), month (1–12 or JAN–DEC) and day of week (0–7 or SUN–SAT, where 0 and 7 are both Sunday). A sixth field in front, as used by node-cron and Spring, holds seconds.

How do I run a cron job every 5 minutes?

Use */5 * * * *. The */5 step in the minute field matches minutes 0, 5, 10 … 55 of every hour. For every 15 minutes use */15, and for every 30 seconds (six-field cron) use */30 * * * * *.

What happens when both day-of-month and day-of-week are set?

Standard cron runs the job when EITHER field matches, not both. 0 0 13 * 5 runs on every 13th and on every Friday, not only on Friday the 13th. The parser follows this rule when listing run times.

Which time zone does cron use?

The time zone of the machine or service running it, often UTC on servers and in GitHub Actions. Kubernetes CronJobs accept a timeZone field. Pick the same zone here to see the real run times.

Are L, W and # supported?

No. They are Quartz scheduler extensions (last day, nearest weekday, nth weekday) that standard crontab rejects, so the parser reports them as an error instead of guessing.