crontool
Paste a schedule, read it in English, see the next runs.

Run a Cron Job on the First Day of Every Month

To run a job on the first day of each month, use 0 0 1 * * — it fires at midnight on the 1st. The 1 in the day-of-month field is what makes it monthly.

The expression

0 0 1 * * runs at 00:00 on day 1 of every month. Fields are minute(0) hour(0) day-of-month(1) month(*) day-of-week(*).

Change the time

For 6:30 AM on the 1st use 30 6 1 * *. For 9 PM use 0 21 1 * *.

Common mistake

Leaving the day as * (0 0 * * *) runs every day, not just the 1st. The day-of-month value is required for a monthly schedule.

Shortcut

The alias @monthly is identical to 0 0 1 * * on most cron implementations.

FAQ

What is the cron expression for the first day of the month?

0 0 1 * * runs at midnight on the 1st of every month. Change the first two fields to set a different time.

Is @monthly the same?

Yes. @monthly expands to 0 0 1 * * on Vixie cron, systemd and most schedulers.

How do I run at a specific time on the 1st?

Set minute and hour, e.g. 30 6 1 * * for 6:30 AM on the first of each month.