How to Read a Cron Expression
Learn what each of the five cron fields means, how stars, ranges, lists, and steps work, and how to read the schedule and next run times of any crontab line.
Quick Answer
A cron expression is a five-field pattern that says when a scheduled job runs. This cron
expression parser turns cron to english: it gives the cron schedule as plain text, counts how
often it fires, and shows the cron next run time. Paste a line like */15 * * * * and
you get the "cron expression explained" in a sentence, plus the next five runs.
It reads any line you inherit or write, and unlike a crontab generator it never sends your input
anywhere. Some people call this a cron translator or crontab parser.
What the Five Cron Fields Mean
To read what a cron expression means, take the fields left to right. What each of the five cron
fields means is fixed: minute (0 to 59), hour (0 to 23), day-of-month (1 to 31), month (1 to 12
or names like JAN), and day-of-week (0 to 6, where 0 and 7 are both Sunday). A star in a field
means every value it can take. So 30 9 * * 1 reads as minute 30, hour 9, any day, any
month, on Monday: it runs at 09:30 every Monday.
Each cron field accepts more than a single number. How a star, range, list, and step change a
cron field is the heart of the syntax. A range like 1-5 covers 1 through 5. A list
like 0,30 picks just those values. And cron step values, written with a slash such as
*/15, mean every 15th value from the minimum. The tool expands cron ranges and steps
into the exact set of values before working out the schedule. From that set it can also find the
next run time of a cron job, stepping forward from now until it hits the first matching minute.
Examples
Every 15 minutes. For example, */15 * * * * runs every 15 minutes,
which is 96 times a day.
A daily backup. For example, 0 3 * * * runs at 03:00 every day, a
common slot for an overnight job.
Weekdays only. For example, 0 9 * * 1-5 runs at 09:00 Monday
through Friday, using a range in the day-of-week field.
Star vs Value, Step vs Range
Two comparisons clear up most confusion. A star versus a specific value is the difference between
"every" and "exactly one": * in the hour field means all 24 hours, while 9
means only 09:00. A step value versus a plain range is subtler. A plain range like 0-30
in the minute field matches every minute from 0 to 30. Add a step, 0-30/10, and it
thins that range to 0, 10, 20, and 30. On its own, */10 applies the step across the
whole field. Reading these correctly is the difference between a job that runs once and one that
runs dozens of times.