Skip to main content
CalcChef

Cron Expression Explainer

Paste a 5-field cron expression or an @alias to read it as one sentence, a card per field and its next runs: 0 9 * * 1 runs at 9:00 AM on Monday. How it works

Use the Cron Expression Explainer

Five fields: minute, hour, day of month, month, day of week (or an alias such as @daily). Up to 200 characters; a seconds field is not supported.

Plain English

Runs at 9:00 AM on Monday.

Minute

0
minute 0
Allowed: 0 to 59

Hour

9
9 AM
Allowed: 0 to 23

Day of month

*
every day of the month
Allowed: 1 to 31

Month

*
every month
Allowed: 1 to 12 or JAN to DEC

Day of week

1
Monday
Allowed: 0 to 7 or SUN to SAT (0 and 7 are Sunday)

Next 5 runs

Calculating the next runs…

Times are worked out in your browser from this computer's clock, in the zone chosen above. A server that runs cron in another zone, or one that skips or repeats an hour when the clocks change, will fire at different moments.

About the Cron Expression Explainer

0 9 * * 1 runs at 9:00 AM every Monday: minute 0, hour 9, any day of the month, any month, day of week 1. The cron expression explainer reads a 5-field crontab line or an alias such as @daily, writes it as one sentence, shows each field on a card with its meaning and the values it allows, and lists the next 5 or 10 run times in your time zone or one of 13 others. A 6-field expression with seconds is refused.

What each field form means

FieldWrittenThe card says
Minute*/15every 15 minutes
Minute5/10minutes 5, 15, 25, 35, 45 and 55
Minute0,30minutes 0 and 30
Minute10-40/5minutes 10, 15, 20, 25, 30, 35 and 40
Hour9-179 AM through 5 PM
Hour*/6every 6 hours, starting at 12 AM
Hour2210 PM
Day of month1,15days 1 and 15 of the month
Day of monthLthe last day of the month
Day of month?every day of the month
Monthjan-marJanuary through March
Month*/3January, April, July and October
Day of weekMON-FRIMonday through Friday
Day of week7Sunday
Day of week5Lthe last Friday of the month
Day of week5#2the 2nd Friday of the month

Allowed values: minute 0 to 59, hour 0 to 23, day of month 1 to 31, month 1 to 12 or JAN to DEC, day of week 0 to 7 or SUN to SAT (0 and 7 are Sunday). Names are three letters in any case. 5/10, L, 5L, 5#2 and ? are not in the cronie crontab(5) page, which allows a step only after * or a range (write 5-59/10 there), so check that your cron accepts them.

Mistakes the explainer refuses, and its message

ExpressionMessage
99 * * * *Minute: 99 is outside 0 to 59.
0 24 * * *Hour: 24 is outside 0 to 23.
0 0 * 13 *Month: 13 is outside 1 to 12.
0 0 * * 8Day of week: 8 is outside 0 to 7.
*/0 * * * *Minute: a step must be at least 1.
0 17-9 * * *Hour: the range 17-9 runs backwards.
0 0 * * 1,,2Day of week: a list has an empty item (check for a doubled or trailing comma).
0 0 * * MONDAYDay of week: "MONDAY" is not a number or a three-letter name.
0 9 * *A crontab line has exactly 5 fields (minute hour day-of-month month day-of-week) but this has 4.
@every@every is not a known alias. Known aliases: @yearly, @annually, @monthly, @weekly, @daily, @midnight, @hourly.

Frequently asked questions

How do I read a cron expression?
Left to right, the five fields are minute, hour, day of month, month and day of week, and * means every value of its field. 30 9 * * MON-FRI is minute 30, hour 9, every day of the month, every month, Monday through Friday, which the explainer writes as “Runs at 9:30 AM on Monday through Friday.”
Why does my cron job run on the 1st, the 15th and every Friday?
Because both day fields are set. The cronie crontab(5) page says that when both are restricted, “the command will be run when either field matches the current time.” 0 0 1,15 * 5 reads “Runs at 12:00 AM on days 1 and 15 of the month, or on Friday.” To run only on a 1st or 15th that is a Friday, set one field to * and test the day inside the script.
Is 7 Sunday in cron?
Yes: 0 and 7 both mean Sunday, so 0 0 * * 7 reads “Runs at 12:00 AM on Sunday.” Names work too, as the first three letters in any case (sun, MON-FRI). A full name such as MONDAY is refused with a message.
What do L, 5L and 5#2 mean in a cron expression?
L in the day-of-month field is the last day of the month. In the day-of-week field 5L is the last Friday of the month and 5#2 the 2nd Friday. The explainer reads all three and ? (no restriction on that day field), but the cronie crontab(5) page describes none of them, so check that your cron accepts them. W (nearest weekday) is refused.
Can it explain a cron expression with seconds?
No. It reads the 5-field crontab form and the aliases @yearly, @annually, @monthly, @weekly, @daily, @midnight and @hourly. A sixth field is refused with the message that a seconds field is not supported, and @reboot is refused because it has no repeating schedule.
How is the explainer different from the Crontab Translator?
They share one parser, so the sentence is the same on both pages. Use the explainer to learn what each field of a line means: every field gets a card with the values it allows, eight example buttons load common schedules, and the next 5 or 10 runs can be shown in any of 13 named zones. The Crontab Translator gives the sentence and the next 5 runs without the field cards, and the Cron Job Generator builds a line one field at a time.

Related Tools

View all tools