Cron syntax
┌───────── 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 also Sunday)
│ │ │ │ │
* * * * *| Symbol | Meaning | Example |
|---|---|---|
* | Every value | * * * * * every minute |
, | A list | 0 8,12,17 * * * at 08:00, 12:00 and 17:00 |
- | A range | 0 9 * * 1-5 weekdays at 09:00 |
/ | A step | */10 * * * * every 10 minutes |
@daily | Macro | Same as 0 0 * * *; also @hourly, @weekly, @monthly, @yearly |
Common schedules
*/15 * * * *: Every 15 minutes0 * * * *: Every hour, on the hour30 2 * * *: Every day at 02:300 9 * * 1-5: Weekdays at 09:000 0 1 * *: Midnight on the 1st of every month0 18 * * 5: Fridays at 18:000 0 * * 0: Midnight every Sunday0 */6 * * *: Every 6 hours
More examples and pitfalls in cron syntax explained.
Frequently asked questions
What do the five fields in a cron expression mean?
In order: minute (0–59), hour (0–23), day of the month (1–31), month (1–12 or JAN–DEC) and day of the week (0–6 or SUN–SAT, where both 0 and 7 mean Sunday). A * means every value.
What happens if I set both day of month and day of week?
In standard cron, if both fields are restricted (neither is *), the job runs when either one matches, not both. So "0 0 13 * 5" runs on every 13th and on every Friday, not only on Friday the 13th. This is the most common cron surprise.
Which time zone does cron use?
Classic cron uses the server’s local time zone. Many cloud schedulers, such as GitHub Actions and Cloudflare Cron Triggers, always use UTC. Check your platform, and switch this tool to UTC to preview those schedules.
Does this support seconds or the ? character?
No. This explainer follows the standard five-field Unix cron used by crontab, Kubernetes CronJobs, GitHub Actions and most cloud schedulers. Quartz and Spring use six or seven fields with seconds and ?, which are a different format.