devtools

Cron Expression Generator

Build a cron expression from presets or your own edits and preview the next five run times in your local timezone. Runs entirely in your browser.

Runs entirely in your browser — your data never leaves your device.

How to use Cron Expression Generator

What it does & when you need it

You need a cron expression for a scheduled job — a backup, a cache purge, a nightly report — and you want to be sure it fires when you think it does. This tool builds an expression from common presets or your own edits and shows the next five times it will run in your local time, so you can sanity-check the schedule before pasting it into a crontab, a CI config, or a Kubernetes CronJob.

How to use

  1. Click a preset (for example Every 15 minutes) or type your own expression in the field.
  2. The plain-English description and the next 5 runs update live. A red message appears if the expression is invalid.
  3. Press Copy expression (or Ctrl/Cmd + Enter) to copy it.

Things worth knowing

The five fields, in order. A standard cron line is minute hour day-of-month month day-of-week. So 0 9 * * 1-5 means "at 09:00, every day, every month, on weekdays" — minute 0, hour 9, days-of-month any, months any, weekdays Monday–Friday. Weekday 0 and 7 both mean Sunday.

Steps, ranges, and lists. */5 in the minute field means "every 5 minutes" (minutes 0,5,10,…), a shorthand for a step over the whole range. 1-5 is a range, 1,15 is a list, and they combine: 0,30 9-17 * * * runs on the hour and half-hour between 9am and 5pm.

The day-of-month / day-of-week trap. When both the day-of-month and day-of-week fields are restricted (neither is *), cron runs when either matches — an OR, not an AND. So 0 0 13 * 5 fires on the 13th and every Friday, not only on Friday the 13th. Leave one field as * unless you really want the union.

Five fields vs six. The classic Unix/Vixie cron this tool targets has five fields. Quartz (Java) and some other schedulers prepend a seconds field for six, so a Quartz expression pasted here will be misread by one field. Know which dialect your scheduler speaks.

Daylight saving time will surprise you. Cron runs in the server's local timezone. On the spring-forward day, a job scheduled for 02:30 never runs (that hour does not exist); on fall-back it may run twice. For anything time-critical, schedule in UTC or pick an hour that DST never skips. Because the epoch has no timezone, cross-checking a run against a Unix timestamp is a reliable way to reason about absolute time, and if your job emits JSON logs you can tidy them with the JSON formatter.

Examples

Every 15 minutes

*/15 * * * *

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

Weekdays at 9am

0 9 * * 1-5

Runs once at 09:00, Monday through Friday.

Frequently asked questions

What do the five cron fields mean?

In order: minute, hour, day-of-month, month, and day-of-week. For example 0 9 * * 1-5 means 09:00 every weekday. Both 0 and 7 in the last field mean Sunday.

How do I write "every 5 minutes"?

Use */5 in the minute field: */5 * * * *. The */n step syntax means every n units across the whole range, so */15 is every quarter hour.

Why does my day-of-month and day-of-week schedule fire too often?

When both day fields are restricted, cron runs when either matches (an OR). So 0 0 13 * 5 fires on the 13th and every Friday, not only Friday the 13th. Leave one field as * to avoid this.

Is this five-field or six-field cron?

Five-field (classic Unix/Vixie cron). Quartz and some schedulers add a leading seconds field for six; those expressions will be misread here by one position.

What timezone are the run times in?

The preview uses your browser's local timezone. Real cron runs in the server's timezone, and daylight-saving transitions can skip or repeat a scheduled hour — schedule in UTC for time-critical jobs.