Cron expression explainer
Paste a cron expression to read it in plain English, see what each field means, and list the next ten times it runs, in your time zone or in UTC. It reads standard five-field cron, six fields with seconds, and macros such as @daily.
The five fields
From left to right:
- Minute: 0–59
- Hour: 0–23
- Day of month: 1–31
- Month: 1–12, or JAN–DEC
- Day of week: 0–6, or SUN–SAT (7 is Sunday too)
A sixth field in front, as Spring and Quartz have it, holds the seconds.
Special characters
- * any value
- , a list: 1,15
- - a range: 1-5
- / a step: */15 is every 15th value, 5/15 every 15th from 5
- ? any value, in the day fields (as in Quartz)
And the macros @yearly (or @annually), @monthly, @weekly, @daily (or @midnight) and @hourly.
Day of month and day of week together
When both day fields are set, cron runs on the days that match either one: 0 0 1 * MON runs on the 1st of every month and on every Monday. When one of them is * (or starts with *, as */2 does), only days that match both count. The explainer follows the same rule.
Time zones
Cron runs by the clock of the machine it is on, which on servers and in CI is often UTC; GitHub Actions schedules, for example, always run in UTC. Switch the next runs between your time and UTC to see both. A time the clock skips when summer time starts doesn't run.
Questions
Are L, W and # supported?
Not yet. They come from Quartz (the last day, the nearest weekday, the nth weekday of the month), and the explainer says so rather than guess.
How do I run something every 5 minutes?
*/5 * * * *. Every 5 minutes during working hours on weekdays: */5 9-17 * * 1-5.
Is 0 Sunday or Monday?
0 is Sunday, and so is 7. Monday is 1.