CronTools

Cron pattern

Cron Expression for the First Day of Each Month

0 0 1 * * is the monthly schedule that runs at midnight on the 1st of every month. The third field is the star of the show — here is how it works.

0 0 1 * *

This schedule fires on the pattern shown above; see the field-by-field breakdown below.

Next 5 run times

Computed in your browser, in your local timezone.

  1. your local time
  2. your local time
  3. your local time
  4. your local time
  5. your local time

Reading 0 0 1 * *

The five cron fields are minute, hour, day of month, month, day of week. In 0 0 1 * *:

The day-of-month field accepts 1–31. Putting 1 there pins the job to the first calendar day of every month — January 1, February 1, March 1 and so on — always at 12:00 AM in the system's local timezone. Cron simply skips nonexistent days (there is no February 30), so an expression like 0 0 31 * * would fire only in months that have 31 days.

Where monthly jobs show up

The first of the month is the default boundary for billing and reporting: invoice generation, subscription renewals, statement runs, tax reconciliation and monthly KPI rollups all slot naturally into 0 0 1 * *. It is also the idiomatic schedule for customer lifecycle jobs — resetting monthly usage counters, expiring unused seats, and closing the books on the previous period.

The dom/dow OR quirk

A subtlety worth knowing: if you also set the day-of-week field, most cron daemons treat the two date fields with OR semantics — the job runs when either matches. In 0 0 1 * * the day-of-week field is *, so the job runs purely on the 1st. The moment you write something like 0 0 1 * 1, most daemons would fire on the 1st and on every Monday, which is rarely intended.

For other recurring boundaries, compare the daily reset 0 0 * * *, the weekly Monday schedule, and the range syntax used by weekdays-only. A full field-by-field reference, including month names like JANDEC, lives in the complete cron guide.

Understanding the syntax of 0 0 1 * *

In plain English, this schedule at 12:00 am, on day 1 of the month. Here is each of the five fields and what it controls:

Field Value Meaning
Minute 0 at minute 0
Hour 0 at 12:00 AM
Day of month 1 on day 1 of the month
Month * every month
Day of week * every day of the week

The expression has five space-separated fields: minute hour day-of-month month day-of-week. Any field set to * means “every”.

Explore more cron patterns

Fine-tune your schedule with a related pattern, or start from scratch in the builder.