How 0 0 1 * * Works
0 0 1 * * fires at midnight on the first day of every month. 1 in the day-of-month field (field 3) targets the 1st. The wildcard in the month field means every month. The weekday field wildcard is ignored when a specific day-of-month is set.
Equivalent shorthand: @monthly (alias for 0 0 1 * * in most Unix implementations).
Common uses: monthly invoices, billing cycles, monthly reports, first-of-month database snapshots.
Field Breakdown
| Field | Value | Meaning |
|---|---|---|
| Minute | 0 | At minute zero |
| Hour | 0 | At midnight |
| Day of month | 1 | On the 1st |
| Month | * | Every month |
| Weekday | * | Any day (day-of-month takes priority) |
Next 10 Run Times
Approximate run times starting from the current date. Open in the builder to see exact run times in your timezone.
Platform Examples
0 0 1 * * /path/to/script.sh
# or:
@monthly /path/to/script.sh
on:
schedule:
- cron: '0 0 1 * *' # 1st of month, midnight UTC
cron(0 0 1 * ? *)
spec:
schedule: "0 0 1 * *"
cron.schedule('0 0 1 * *', () => { ... });
scheduler.add_job(fn, 'cron', day=1, hour=0, minute=0)
Related Cron Expressions
FAQ
Build or explain any cron expression
Use the free visual builder — paste an expression for a plain-English explanation, or click your way to a schedule. See the next 10 run times. No login.
Open CronBuilder →