⏰ Cron Expression Tester
Paste a crontab line to check it is valid, read what it means in plain English, and see exactly when it will fire next. Times are shown in your own timezone — remember that servers usually run cron in UTC.
minute hour day-of-month month day-of-week.
Shortcuts @hourly @daily @weekly @monthly @yearly also work.
How the five fields are read
The tester expands each field into the set of values it matches, then walks forward day by day - up to five years - collecting the first ten times every field matches at once.
*/15 9-17 * * 1-5
| | | | +- day of week 0-7 (0 and 7 both Sunday), or sun-sat
| | | +----- month 1-12, or jan-dec
| | +-------- day of month 1-31
| +------------- hour 0-23
+------------------- minute 0-59
That example fires at :00, :15, :30 and :45 from 09:00 through 17:45 on weekdays -
36 runs a day, because 9-17 includes hour 17. Steps count from the start
of the range, so 5-59/15 means 5, 20, 35 and 50, not 15, 30, 45.
What it accepts, and what it does not
- Five fields only. A six-field expression with seconds - Quartz or
Spring style - is rejected with a message saying so, as are Quartz extras such as
L,Wand#. - Shortcuts
@hourly,@daily,@midnight,@weekly,@monthly,@yearlyand@annuallyexpand to their five-field form.@reboothas no schedule, so it is not supported.
Frequently asked questions
What does */15 mean in a cron expression?
Every 15th value of that field, starting at its lowest. In the minute field it is
:00, :15, :30 and :45. In the hour field */15 gives 0 and 15 only,
because the field stops at 23.
Why does my job run more often than the crontab looks?
Because setting both day-of-month and day-of-week is an OR, not an AND.
0 0 13 * 5 runs on the 13th and on every Friday. The tester flags this
whenever both fields are restricted; leave one as * to avoid it.
Does cron run in UTC or local time?
In whatever timezone the machine's cron daemon is set to, which for cloud instances and Docker images is nearly always UTC. Daylight saving is the other trap: a job at 02:30 local can be skipped or repeated on the changeover night.