Dev utility

Cron expression explainer

Paste a cron expression to read it in plain English and see when it will actually run. Fields are minute hour day-of-month month day-of-week — or add a leading seconds field for 6-field (Quartz-style) cron.

Try:

The fields

minute0–59
hour0–23
day of month1–31
month1–12, or JAN–DEC
day of week0–7 (0 and 7 are Sunday), or SUN–SAT

Add a sixth field at the front for seconds (0–59) and the expression is read Quartz/Spring-style — */30 * * * * * is "every 30 seconds". A 5-field expression simply runs at second 0. Nicknames work too: @hourly, @daily, @weekly, @monthly, @yearly.

Syntax

*
Every value.
5
A single value.
1-5
A range (1 through 5).
*/15
A step — every 15th value (0, 15, 30, 45).
0,30
A list of values.
9-17/2
A range with a step (9, 11, 13, 15, 17).

The day-of-month / day-of-week gotcha

When both the day-of-month and day-of-week fields are restricted (neither is *), cron runs when either matches — not both. So 0 0 13 * 5 fires on the 13th of the month and on every Friday, which surprises people expecting "Friday the 13th". When one field is *, the other simply applies.

Sources & references