Cron Explainer

Cron expression explainer

Type a cron schedule and read, in plain English, exactly when it runs — with every field broken out.

Five fields: minute hour day-of-month month day-of-week. Supports *, ranges (1-5), steps (*/15) and lists (1,3,5).

Make sense of cron

Cron's five-field syntax is compact but easy to misread, and a small mistake can mean a job runs every minute instead of once a day. Type an expression and this tool translates it into a clear sentence, then shows each field — minute, hour, day-of-month, month and day-of-week — separately so you can confirm your intent. It understands the common operators: * for "every," ranges like 1-5, steps like */15, and lists like 1,3,5.

The fields, in order

From left to right the fields are minute (0–59), hour (0–23), day of month (1–31), month (1–12) and day of week (0–6, where 0 is Sunday). A classic gotcha is setting both day-of-month and day-of-week, since in standard cron the job runs when either matches. When you're unsure, build the schedule one field at a time and read the description after each change until it says exactly what you mean.

Decoding an example

Take 30 8 * * 1-5. Reading the fields left to right: minute is 30, hour is 8, day-of-month is *, month is *, and day-of-week is 1-5. That translates to "at 08:30 every day, but only Monday through Friday" — a weekday-morning job. Swap the last field for * and it runs every day; change the minute to */30 and it fires at both :00 and :30 within the 8 o'clock hour. Each operator has one job: * means every value, - makes an inclusive range, , lists specific values (1,15), and / sets a step interval. Watch the day-of-week numbering too: 0 and 7 both mean Sunday in most implementations.

FAQ

What are the five cron fields?
In order: minute, hour, day of month, month, and day of week. An asterisk in a field means 'every' value of that field.
What does */15 mean in cron?
The /15 is a step: */15 in the minute field means every 15 minutes — at minutes 0, 15, 30 and 45 of every hour.
How do I run a cron job on weekdays only?
Put a range in the day-of-week field: 0 9 * * 1-5 runs at 09:00 Monday through Friday. Days of week are numbered 0 to 6 starting at Sunday, so 1-5 is Monday to Friday.
Why does setting both day-of-month and day-of-week run more often than expected?
In standard cron, when both the day-of-month and day-of-week fields are restricted, the job runs whenever either one matches — not only when both match. To require a specific weekday and date together, leave one of the two fields as an asterisk.

Related tools