Cron Expression Reader
Read a cron expression field by field and see the next times it will run.
Next run
2026-10-09 13:15 UTC
Every 15 minutes, between 09:00 and 17:59, from Monday to Friday.
- Expression
- */15 9-17 * * 1-5
- How often
- 36 times on a day it runs
Field by field
| Minute | 0, 15, 30, 45 |
|---|---|
| Hour | 9–17 |
| Day of month | Every |
| Month | Every |
| Day of week | Mon–Fri |
Next runs
- Fri 2026-10-09 13:15
- Fri 2026-10-09 13:30
- Fri 2026-10-09 13:45
- Fri 2026-10-09 14:00
- Fri 2026-10-09 14:15
- Fri 2026-10-09 14:30
Paste a cron expression to see what each field means and the next few times it will actually fire. Times are shown in the zone you pick, because cron runs in the machine's zone and not in yours.
How it works
The five fields are minute, hour, day of month, month and day of week. Each accepts a value, a list, a range, a step, or `*` for every value. Month and weekday names work as well as numbers, and the `@daily` family of shorthands expands to the expression it stands for.
The run times are found by walking forward a day at a time, testing the date against the day fields, and then reading the hours and minutes from the parsed lists. The search covers four years, which is long enough to catch a leap day in any position; an expression with no match in that window is reported as one that never runs.
Sunday is 0, and 7 is accepted as a second spelling of it — every crontab has allowed both.
Examples
| Case | Input | Result |
|---|---|---|
| Every quarter of an hour, office hours only | */15 9-17 * * 1-5 | Every 15 minutes, between 09:00 and 17:59, from Monday to Friday. |
Frequently asked questions
Why does my day-of-month and day-of-week schedule run more often than expected?
Because cron treats them as "or", not "and". When both are restricted, a day matching either one is enough: `0 0 1 * 1` fires on the first of every month *and* on every Monday. The page flags that case, because it is the single most common cron surprise.
Which time zone does cron use?
The one the machine is set to, which is often UTC on a server and rarely the one you are sitting in. Pick the zone here to match the machine, not yourself. Note also that on the mornings clocks change, a daily job can be skipped or run twice depending on the implementation.
What does `0 0 30 2 *` do?
Nothing, ever. It is a valid expression — February has no thirtieth. The tool says so rather than showing an empty list.
Are seconds supported?
No. Standard cron has five fields and no seconds field. Some schedulers add a sixth at the front; those are a different syntax and this tool would misread them, so it refuses anything that is not five fields.
Good to know
- Five-field crontab syntax only. Schedulers that add a seconds field or non-standard characters such as `L`, `W` or `#` are not supported, and are refused rather than misread.
- Run times are computed from the calendar. What a given cron daemon does across a daylight saving change is implementation specific and is not modelled here.