⏰ Cron Expression Explainer

Build cron schedules visually, or paste any expression for a plain-English explanation and upcoming run times.

Plain-English Explanation

-

Next 5 Run Times (your local time)

Field Breakdown

Run times are computed in your browser local time. Across daylight-saving changes the wall-clock time is used, so verify against your server timezone before deploying.

How to Use This Calculator

This tool reads any standard 5-field cron expression and tells you what it actually does, in plain English, with the next five run times. You can also build a schedule with the visual dropdowns or start from a preset.

1

Paste or type a cron expression into the text field, for example */15 9-17 * * 1-5. The explanation updates as you type.

2

Prefer building visually? Use the five dropdowns for minute, hour, day of month, month, and day of week. Each change rebuilds the expression for you.

3

Start from a preset like Every 5 min, Hourly, Daily 9am, Weekdays 9am, Weekly Monday, or Monthly 1st, then tweak the fields.

4

Read the plain-English description, check the next five run times in your local time, and scan the field breakdown table to confirm every field does what you expect.

How Cron Expressions Work

minute (0-59) | hour (0-23) | day of month (1-31) | month (1-12) | day of week (0-7, 0 and 7 = Sunday) * = every value | , = list | - = range | / = step Example: */15 = every 15th value starting at the minimum

Each field accepts an asterisk (every value), a single number, a comma-separated list (1,15), a range (9-17), and a step (*/15 or 0-30/5). You can also use three-letter month and weekday names like jan, mar, mon, and fri; the parser converts them automatically. Hours use 24-hour time, so 9 AM is 9 and 9 PM is 21.

The trickiest rule is the day-of-month versus day-of-week interaction. When both fields are restricted (neither is an asterisk), cron uses OR logic: the job runs when either field matches. 0 9 15 * 1 fires on the 15th of every month and on every Monday, not only on Mondays that fall on the 15th. If either field is an asterisk, the other field alone decides.

Worked Example

Take */15 9-17 * * 1-5, a classic business-hours schedule. The minute field */15 means minutes 0, 15, 30, and 45. The hour field 9-17 means hours 9 through 17, which is 9:00 AM to 5:59 PM. Day of month and month are unrestricted, and the day-of-week field 1-5 means Monday through Friday. The plain-English result: "Every 15 minutes between 9:00 AM and 5:59 PM, Monday to Friday."

How many times does it run per weekday? Four runs per hour across nine hours (9 AM through 5 PM) gives 36 runs per day, or 180 runs in a five-day work week. If it is Thursday, 2026-10-15 at 09:02 local time, the next five runs are 09:15, 09:30, 09:45, 10:00, and 10:15 the same morning.

Common Schedules and Gotchas

Every 5 minutes*/5 * * * *
Hourly0 * * * *
Daily at 9 AM0 9 * * *
Weekdays at 9 AM0 9 * * 1-5
Weekly Monday 9 AM0 9 * * 1
Monthly on the 1st0 9 1 * *

Three mistakes cause most cron headaches. First, */5 versus 5: the step runs twelve times an hour, the single value runs once. Second, the day-of-month/day-of-week OR rule surprises people who expected AND logic. Third, servers often run on UTC while you think in local time, so a job you meant for 9 AM local fires at 4 AM. Always verify the server timezone, keep jobs a few minutes away from the top of the hour to dodge thundering-herd load, and test with a harmless echo before wiring up the real task.

Frequently Asked Questions

What do the five cron fields mean?

A standard cron expression has five fields in this 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). So "30 8 * * 1" means 8:30 AM every Monday. Each field can hold a single value, a list, a range, a step, or an asterisk meaning every possible value.

What is the difference between */5 and 5 in a cron field?

"5" means only when the field equals 5, so "5 * * * *" runs once per hour at five minutes past. "*/5" means every 5th value starting from the minimum, so "*/5 * * * *" runs at minutes 0, 5, 10, 15, and so on, twelve times per hour. The star-slash form is a step; the plain number is a single fixed value.

Day of month vs day of week: which one wins?

Neither wins, they combine with OR logic. If both fields are restricted (not asterisks), the job runs when EITHER field matches. "0 9 15 * 1" runs at 9 AM on the 15th of the month AND every Monday at 9 AM. If you want only Mondays that are also the 15th, standard cron cannot express that; you need to check the date inside your script.

What are the most common cron schedules?

The classics are: every minute ("* * * * *"), every 5 minutes ("*/5 * * * *"), hourly ("0 * * * *"), daily at a fixed time ("0 9 * * *"), weekdays only ("0 9 * * 1-5"), weekly ("0 9 * * 1"), monthly ("0 9 1 * *"), and yearly ("0 9 1 1 *"). This tool has one-click presets for all of these.

What timezone does my cron job run in?

System cron runs in the server timezone, which is often UTC on cloud servers and can surprise you. The run times this page shows are computed in your browser local time for planning purposes. Before deploying, check your server timezone with the "date" command and convert accordingly, and remember daylight-saving shifts can move wall-clock run times twice a year.