Cron Every Month

Running "every month" means running once per month — by convention on the 1st. The 1 in day-of-month with * in the month field fires on the 1st of every month at midnight.

Cron Expression
0 0 1 * *

Field Breakdown

FieldValueMeaning
Minute0At minute 0
Hour0At midnight (00:00)
Day of Month1The 1st of the month
Month*Every month (1-12)
Day of Week*Any day of the week

Variations

0 0 1 * *Midnight on the 1st of every month
@monthlyShorthand alias for 0 0 1 * *
0 0 15 * *Mid-month, on the 15th instead of the 1st

Common Use Cases

  • Monthly billing, invoicing, and statements
  • Recurring monthly reports
  • Monthly cleanup and counter resets

Tips & Best Practices

Most cron implementations accept the @monthly shorthand for 0 0 1 * *.

Pick any day-of-month (1-28 is safe for every month) to shift the run date.

Avoid day 29-31 for monthly jobs unless you want some months skipped.

Related Intervals