0 0 1 * *
Open in the generator
Day-of-month 1 with wildcard month and weekday gives one run per month. @monthly is the alias. Monthly invoicing, quota resets and archive rotation typically live here.
Be careful when both day-of-month and day-of-week are set: standard cron runs when either matches. 0 0 1 * 1 fires on the 1st of every month and on every Monday, not only when the 1st is a Monday.
Field by field
| Value | Field | Meaning |
|---|---|---|
| 0 | Minute 0–59 | at minute 0 |
| 0 | Hour 0–23 | at 00:00 |
| 1 | Day of month 1–31 | on day 1 |
| * | Month 1–12 or JAN–DEC | every month |
| * | Day of week 0–7 or SUN–SAT (0 and 7 are Sunday) | every day of the week |
Next run times
Computed in your browser from the current time, so you can check the schedule against a clock you trust.
Your timezone (local)
- Needs JavaScript.
UTC (GitHub Actions, Kubernetes default)
Variations
0 6 1 * *the 1st at 06:00 · try it0 0 1,15 * *the 1st and the 15th · see page0 0 1 1,4,7,10 *first day of each quarter · see page
Where this expression works
- Linux and macOS crontab: as written; times follow the system timezone.
- Kubernetes CronJob: the same five fields; UTC unless
spec.timeZoneis set. - GitHub Actions: the same syntax in UTC, minimum interval five minutes, no
@shortcuts. - AWS EventBridge: a different six-field syntax; do not paste this expression unchanged.
Full platform comparison · Cron tutorial
FAQ
How do I run on the first Monday of the month?
Use 0 0 1-7 * 1 and let the script confirm the weekday, or rely on the OR rule being absent: in most crons, 1-7 in day-of-month with 1 in day-of-week matches days 1–7 or any Monday, so a script-side check is still needed.