Developer Tools

Cron: Every 1st of the month

The cron expression for "Every 1st of the month" is 0 0 1 * *: 12 runs in 2026, shown here field by field and in five schedulers.

Runs in your browser. Your files and text never leave your device - nothing is uploaded.

At 12:00 AM, on day 1 of the month

Next 8 run times

  • Sun, Nov 1, 2026, 12:00 AM
  • Tue, Dec 1, 2026, 12:00 AM
  • Fri, Jan 1, 2027, 12:00 AM
  • Mon, Feb 1, 2027, 12:00 AM
  • Mon, Mar 1, 2027, 12:00 AM
  • Thu, Apr 1, 2027, 12:00 AM
  • Sat, May 1, 2027, 12:00 AM
  • Tue, Jun 1, 2027, 12:00 AM

Standard 5-field cron syntax: minute, hour, day of month, month, day of week. Next run times are computed in your browser's local timezone.

What is the cron expression for every 1st of the month?

0 0 1 * * runs a job at midnight (00:00) on the 1st of every month: minute 0, hour 0, day of month 1, any month and any weekday. It fires 12 times a year, the same as the @monthly shortcut on Vixie-style crons. For a later time on the 1st, change the hour.

0 0 1 * * field by field

FieldAllowedValueSelects
Minute0-590minute 0, on the hour
Hour0-230hour 0 only, midnight
Day of month1-311the 1st of the month only
Month1-12 or JAN-DEC*every month
Day of week0-6 or SUN-SAT (0 = Sunday; many crons also accept 7)*any weekday

Only the day-of-month field is restricted here, so the weekday is ignored. Put anything other than * in the day-of-week field and cron would run on dates matching either field, not both.

How often 0 0 1 * * runs in 2026

  • Runs on each matching day: 1.
  • Matching days in 2026: 12 of 365.
  • Total runs in 2026: 12.
  • First run of the year: Thu, 1 Jan 2026, 00:00 UTC. Last: Tue, 1 Dec 2026, 00:00 UTC.

These counts use UTC, which has no daylight saving. The run list in the generator shows the next runs in your browser's own time zone instead.

The same schedule in other schedulers

SchedulerWrite it asWatch out for
crontab (Linux, macOS)0 0 1 * * /usr/local/bin/monthly-invoices.shAdd it with crontab -e. In /etc/crontab a user name goes between the time fields and the command.
Kubernetes CronJobschedule: "0 0 1 * *"Valid; @monthly is equivalent.
GitHub Actions- cron: '0 0 1 * *'Runs at 00:00 UTC on the 1st, the previous evening in the Americas.
AWS EventBridgecron(0 0 1 * ? *)Day of week must be ? when a date is given.
Quartz0 0 0 1 * ?Use L in the day-of-month field instead of 1 for the last day of the month.

Time zones and daylight saving

The 1st of the month begins at different instants around the world. On a UTC scheduler, a first-of-the-month invoice run happens on the evening of the last day of the previous month in the Americas: 8 p.m. in New York during summer time. If billing depends on the local calendar date, pin the time zone (Kubernetes timeZone, GitHub Actions timezone, EventBridge Scheduler) rather than guessing an offset.

Common mistakes with 0 0 1 * *

  • Asking for the last day of the month. Standard cron cannot express it; use L in Quartz or EventBridge, or run 0 0 28-31 * * and exit unless [ "$(date -d tomorrow +\%d)" = 01 ] succeeds.
  • Adding a weekday: 0 0 1 * 1 runs on the 1st and on every Monday, 63 times in 2026, not on "the 1st if it is a Monday".
  • Moving the job to the 31st or 30th: 0 0 31 * * runs in only 7 months a year, and 0 0 30 * * skips February.

Frequently asked questions

Other common schedules

Reviewed by Raja Jahangir · Last reviewed: October 7, 2026