IT infrastructure calculators

Cron Expression Builder & Explainer

Paste a cron expression to read it in plain English and see the next run times, or build one from simple choices.

Build an expression

Expression: 30 2 * * *

Explain an expression

Result

MeaningEvery 15 minutes.
Minute*/15
Hour*
Day of month*
Month*
Day of week*
Next runsCalculating...

Note: Follows classic Vixie cron and cronie (most Linux distributions). Next runs use your browser time zone; the server runs cron in its own time zone (or CRON_TZ). In a crontab line, a % in the command means a new line, so write \% for a literal percent sign.

Learn more

How it works

A cron expression has five fields: minute (0-59), hour (0-23), day of month (1-31), month (1-12 or JAN-DEC) and day of week (0-7, where 0 and 7 are both Sunday, or SUN-SAT). Each field takes *, a number, a range like 1-5, a list like 1,15, or a step like */15 or 9-17/2.

The rules match cronie and Vixie cron, the versions most Linux systems use, checked against cronie's parser. Things other schedulers accept are rejected here rather than guessed: seconds or year fields, ?, L, W, #, a step without a range like 5/10, and cronie's random ~.

The two day fields have a special rule. If both are restricted, the job runs when either matches. If either field starts with * (including */2), both must match. The crontab(5) manual describes the either-match case.

Daylight saving: cronie's man page says skipped times never run, but its source code runs a fixed-time job (minute and hour both specific) right after the clock jumps forward, and does not repeat it when the clock falls back. Jobs with * or a step in the minute or hour field skip the missing hour and run again in the repeated hour. The next-run list follows the source code.

Worked example

30 4 1,15 * 5 restricts both day fields, so the either rule applies: it runs at 4:30 AM on the 1st and 15th of every month, and also every Friday. Starting Thursday, September 24, 2026, the next runs are Friday September 25, Thursday October 1, Friday October 2 and Friday October 9.

0 0 */2 * 1 looks like "every other day, on Mondays", but because the day-of-month field starts with *, both must match: midnight on odd-numbered days that are also Mondays (October 5 and 19, 2026 are the next two).

What does */5 mean in cron?

Every 5 units of that field, counted from the start of its range. In the minute field */5 runs at :00, :05, :10 and so on. */7 still restarts at :00 each hour, so the last gap is shorter.

Is Sunday 0 or 7 in cron?

Both. cronie and Vixie cron treat 0 and 7 as Sunday, and SUN works too. A range like FRI-SUN wraps to Friday, Saturday and Sunday.

Why did my job run on the wrong days?

Most often it is the day rule: if you set both day of month and day of week, cron runs on either one. Put * in one of them to use only the other.

What time zone does cron use?

The server's local time zone, unless the crontab sets CRON_TZ (cronie). This page shows next runs in your browser's zone or UTC, so pick the one that matches the server.

Why does my command break at a percent sign?

In a crontab line, % in the command becomes a new line. Escape it as \% (for example date +\%F).