/ cron expressions / first-of-month
// cron expression reference

Cron Expression First of Every Month0 0 1 * *

0 0 1 * *

Plain English: At midnight on the 1st of every month — 12 times per year.

Try it in the Builder →

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

FieldValueMeaning
Minute0At minute zero
Hour0At midnight
Day of month1On 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.

2026-04-01 00:00 2026-05-01 00:00 2026-06-01 00:00 2026-07-01 00:00 2026-08-01 00:00 2026-09-01 00:00 2026-10-01 00:00 2026-11-01 00:00 2026-12-01 00:00 2027-01-01 00:00

Platform Examples

Linux / Unix crontab
0 0 1 * * /path/to/script.sh
# or:
@monthly /path/to/script.sh
GitHub Actions
on:
  schedule:
    - cron: '0 0 1 * *'  # 1st of month, midnight UTC
AWS EventBridge
cron(0 0 1 * ? *)
Kubernetes CronJob
spec:
  schedule: "0 0 1 * *"
node-cron (Node.js)
cron.schedule('0 0 1 * *', () => { ... });
APScheduler (Python)
scheduler.add_job(fn, 'cron', day=1, hour=0, minute=0)

Related Cron Expressions

FAQ

What is @monthly in cron?
@monthly is an alias for 0 0 1 * * — it runs at midnight on the 1st of every month.
How do I run a cron job on the last day of every month?
The last day varies (28–31). A common trick: 0 0 28-31 * * [ $(date +%d) -eq $(cal | awk 'NF{last=$NF} END{print last}') ] && /path/to/script.sh. Alternatively, use a scheduler that supports L (like Quartz: 0 0 0 L * ?).
How do I run a job on the 15th and last day of each month?
For the 15th: 0 0 15 * *. Combine with the last-day trick above, or use two separate cron lines.

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 →