Cron expression generator and explainer

A cron expression is a five-field schedule (minute, hour, day of month, month, day of week) that tells a scheduler when to run a job.

Build a cron expression from presets or five fields, read it in plain English, and preview the next run times. Free and works entirely in your browser.

Browser-sideNo accountCopy, download, or print

Last reviewed

Your inputs are saved as a draft in this browser only. Nothing is uploaded.

Jump to result
Interactive workspace

Inputs

Result

More export options

Add inputs and run the tool to generate a result.

Examples

Every 5 minutes

*/5 * * * * runs at minute 0, 5, 10 and so on, every hour of every day.

Weekdays at 09:00

0 9 * * 1-5 runs at 09:00 Monday to Friday. Day of week 1-5 means Monday through Friday.

Every day at 02:30

30 2 * * * runs once a day at 02:30, a common slot for nightly batch jobs.

Every 6 hours

0 */6 * * * runs at 00:00, 06:00, 12:00 and 18:00.

Every 15 minutes in business hours

*/15 9-17 * * 1-5 runs every 15 minutes from 09:00 to 17:45, Monday to Friday.

First day of every month at midnight

0 0 1 * * runs at 00:00 on the 1st of each month.

Every Sunday at 23:00

0 23 * * 0 runs at 23:00 on Sundays. Most cron implementations also accept 7 or SUN for Sunday.

Quarterly at 06:00

0 6 1 1,4,7,10 * runs at 06:00 on 1 January, 1 April, 1 July and 1 October.

How to use it

  1. Pick a preset such as every 5 minutes or weekdays at 18:00, or keep Custom fields to build your own.
  2. For a custom schedule, fill in the minute, hour, day of month, month, and day of week fields.
  3. Name the job and enter an IANA timezone such as Asia/Kolkata if it should differ from your browser's local time.
  4. Check the plain-English description and the upcoming runs, then copy the expression into your scheduler.

Questions

What do the five fields in a cron expression 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-6 or SUN-SAT, where 0 is Sunday). An asterisk in a field means every value.
What do *, */n, ranges and lists mean?
* matches every value, */15 means every 15th value starting from the lowest, 9-17 is an inclusive range, and 1,15 is a list. You can combine them, for example 0-30/10 for minutes 0, 10, 20 and 30.
What happens if I set both day of month and day of week?
In standard (Vixie) cron the job runs when either field matches. For example, 0 9 1 * 1 runs at 09:00 on the 1st of every month and also every Monday, not only on Mondays that fall on the 1st.
In which timezone are the next runs calculated?
In your browser's local timezone, or in the IANA timezone name you enter, such as Asia/Kolkata or Europe/London. Many servers run cron in UTC, and GitHub Actions schedules always use UTC, so convert the hour before you deploy.
Does it support seconds or Quartz cron syntax?
No. It builds the standard five-field format used by Unix cron, Kubernetes CronJobs, and GitHub Actions. Quartz and Spring add a seconds field at the start and use ? in the day fields; the Quartz expression 0 0 9 ? * MON-FRI is 0 9 * * 1-5 in five-field cron.
How do I schedule something every 90 minutes?
One expression cannot do it, because step values reset every hour. Use two entries: 0 0-21/3 * * * and 30 1-22/3 * * *, which together run at 00:00, 01:30, 03:00, 04:30 and so on.
Is my schedule sent to a server?
No. The expression is built and previewed entirely in your browser and nothing is uploaded.