Skip to content

Cron Expression Generator

What it means in English, and the next eight times it will run.

Read any cron expression in plain English, see when it will next fire, and catch the day-of-week rule that makes jobs run far more often than intended.

Written and maintained by Mohit PatelLast checked August 4, 2026How we build these

At 09:00, on Monday, Tuesday, Wednesday, Thursday and Friday.

The five fields

What each field of the expression means
FieldYoursAllowed
Minute*/15 for every quarter hour00-59
Hour9-17 for working hours90-23
Day of month1,15 for twice monthly*1-31
Month* unless it is seasonal*1-12 or JAN-DEC
Day of week0 and 7 are both SundayMON-FRI0-7 or SUN-SAT

Common schedules

Next runs

Reading the clock…

Steps count from the start of the range

*/15 in the minute field means 0, 15, 30 and 45 — not “fifteen minutes from now”. It matters when the step does not divide the range evenly: */7 fires at :00, :07 and so on to :56, then again at :00, so the gap across the hour boundary is four minutes rather than seven.

How the Cron Expression Generator works

Every field explained, the next eight run times worked out, and a warning for the rule that catches everybody: when both the day of month and the day of week are set, cron runs on either rather than on both, so a schedule people read as once a month fires sixty-three times a year.

Also known as: cron expression explained · crontab generator · cron schedule calculator · cron next run time · cron job generator

Frequently asked questions

Why does my cron job run on days I did not expect?

Almost certainly the day rule. When both the day-of-month and the day-of-week fields are restricted, cron fires when either matches, not when both do. So 0 0 1 * MON means the first of every month AND every Monday, which is 63 days a year rather than the one or two Mondays that land on a 1st. It is in the POSIX specification and in Vixie cron's manual, and it exists so that both the 1st and the 15th and every Monday can be expressed. When one of the two fields is an asterisk the rule does not apply.

How do I run a job on the first Monday of the month?

Cron cannot express it. The day fields are OR'd, so there is no way to write an intersection. The standard answer is to schedule it for every Monday and check the date inside the job itself: run it only when the day of the month is 7 or less, which is true exactly once a month for any given weekday.

What does */15 mean?

Every 15 minutes, counting from the start of the range, so minutes 0, 15, 30 and 45. The counting matters when the step does not divide the range evenly: */7 fires at 0, 7, 14 and so on to 56, then starts again at 0 in the next hour, so the gap across the hour boundary is four minutes rather than seven. A step is not a delay from when the job last ran.

What are the five fields in a cron expression?

Minute (0 to 59), hour (0 to 23), day of month (1 to 31), month (1 to 12 or JAN to DEC) and day of week (0 to 7 or SUN to SAT), in that order. Both 0 and 7 mean Sunday, which is a historical accommodation rather than an error. Some systems add a sixth field at the front for seconds — Quartz and several container schedulers do — so a six-field expression is not necessarily wrong, just not standard cron.

What timezone does cron use?

The system's, which on a server is very often UTC even when the people running it are not. That is how a job scheduled for a quiet 2am ends up running in the middle of the working day. The run times here are in your own browser's timezone; check what the scheduler is set to before relying on them, and prefer scheduling in UTC deliberately over discovering it accidentally.

What do @daily and @reboot mean?

Shorthands. @yearly is 0 0 1 1 *, @monthly is 0 0 1 * *, @weekly is 0 0 * * 0, @daily and @midnight are 0 0 * * *, and @hourly is 0 * * * *. @reboot is the odd one out: it runs once when cron starts rather than on any schedule, so it has no next run time and is not handled here.

Related calculators