Cron expression translator

Paste a five-field cron expression and read it back in plain English.

In plain English
Standard five-field cron. When day-of-month and day-of-week are both set, either match triggers the job.
Minute
Hour
Day of month
Month
Day of week

How to read a cron expression

A standard cron expression is five fields separated by spaces, always in the same order: minute, hour, day of month, month, day of week. Each field says which values match, and the job runs whenever the current time matches all of them (with one famous exception covered below). A star means every value, so the expression is really a set of filters applied to the clock.

minute (0-59)   hour (0-23)   day-of-month (1-31)   month (1-12)   day-of-week (0-7)

Within a field you can write a single value (5), a list (1,15), a range (9-17), a step (*/10 for every 10th value, or 0-20/2 for every 2nd value between 0 and 20), and in the month and day-of-week fields, three-letter names such as AUG and FRI. Both 0 and 7 mean Sunday. Paste any of it above and the translator turns it into a sentence, entirely in your browser, so scheduling rules from private systems are never uploaded anywhere.

Worked examples

*/5 * * * *
At every 5th minute. The classic health-check schedule.
0 9 * * MON-FRI
At 09:00 on every day-of-week from Monday through Friday.
23 0-20/2 * * *
At minute 23 past every 2nd hour from 0 through 20.

The third example shows why translators exist: it is a perfectly reasonable schedule (twenty-three minutes past midnight, 2am, 4am and so on up to 8pm) that very few people can read at a glance. The shortcuts @hourly, @daily, @weekly, @monthly and @yearly are also understood, and each expands to its five-field equivalent.

The trap: day-of-month OR day-of-week

When both the day-of-month and day-of-week fields are restricted, standard cron treats them as alternatives, not as a combined condition. The expression 0 0 1 * 1 fires at midnight on the 1st of every month and also at midnight every Monday, which is almost never what the author intended. If you want something like the first Monday of the month, cron alone cannot express it: schedule the job for every Monday and let the script check the date, or run on days 1 to 7 and test the weekday. The translator words these expressions with an explicit and, and the note under the result reminds you that either match triggers the job.

Practical cron habits

Cron runs on the server's clock, which is usually UTC, so a 9am job on a UTC server greets UK users at 10am for half the year once British Summer Time starts. Jobs scheduled between 1am and 2am can also run twice or not at all on clock-change nights on machines set to local time, which is a good reason to keep servers on UTC. Two more habits pay off quickly: avoid scheduling everything on the hour, since minute 0 is when every machine in the company wakes up at once (pick minute 7 or 23 instead), and keep a comment next to each crontab line saying what the job does in words. This page writes that comment for you: paste the expression, copy the sentence. Note that some systems extend the format, so Quartz uses six or seven fields with seconds first, and those expressions will not parse here.

Frequently asked questions

What do the five fields mean?

In order: minute (0 to 59), hour (0 to 23), day of month (1 to 31), month (1 to 12), and day of week (0 to 7, where both 0 and 7 mean Sunday). A star in a field means every value. The translator labels each field for you so you can see which is which.

What does */5 mean?

It is a step: every fifth value. In the minute field, */5 means minutes 0, 5, 10 and so on, so the job runs every 5 minutes. Steps can also apply to a range, so 0-20/2 in the hour field means every 2nd hour from 0 through 20.

What happens when both day-of-month and day-of-week are set?

In standard cron they are combined with OR, not AND. The expression 0 0 1 * 1 runs at midnight on the 1st of the month and also every Monday, which surprises almost everyone. If you want the first Monday of the month you need extra logic in the job itself.

Can I use names instead of numbers?

Yes. Months can be written as three-letter names such as JAN or aug, and days of the week as SUN through SAT, in either case. Names work as single values and in ranges and lists, so MON-FRI is a valid day-of-week field.

Which time zone does cron use?

Whatever the machine running the cron daemon is set to, which on servers is usually UTC. A schedule of 0 9 * * * fires at 09:00 server time, not your local time, so a UK job on a UTC server drifts by an hour when British Summer Time starts. Check the server clock before trusting a schedule.

Related tools