Cron expression for the first of every month
At 12:00 AM, on the 1st
0
minute
0
hour
1
day (month)
*
month
*
day (week)
At 12:00 AM, on the 1st
Try this expression in the interactive tool:
Open in cron explainer →Next 10 scheduled runs
#1Fri, 1 May 2026, 00:00
#2Mon, 1 Jun 2026, 00:00
#3Wed, 1 Jul 2026, 00:00
#4Sat, 1 Aug 2026, 00:00
#5Tue, 1 Sept 2026, 00:00
#6Thu, 1 Oct 2026, 00:00
#7Sun, 1 Nov 2026, 00:00
#8Tue, 1 Dec 2026, 00:00
#9Fri, 1 Jan 2027, 00:00
#10Mon, 1 Feb 2027, 00:00
Common use cases
The first of the month is the canonical trigger for any monthly business process. Billing cycle processing — generating invoices, charging subscriptions, calculating overages — is the most common application.
Monthly report generation is another staple: summarising the previous month's revenue, user growth, infrastructure costs, or API usage. SSL/TLS certificate renewal checks and data retention enforcement also commonly run on this schedule.
Platform-specific syntax
crontab
0 0 1 * * /path/to/script.shAWS EventBridge
cron(0 0 1 * ? *)GitHub Actions
schedule:
- cron: '0 0 1 * *' # 1st of month, midnight UTCKubernetes
schedule: "0 0 1 * *"Technical breakdown
The expression 0 0 1 * * has five fields: minute=0, hour=0, day (month)=1, month=*, day (week)=*. At 12:00 AM, on the 1st.
Frequently asked questions
How do I run on the last day of the month instead?
Standard cron doesn't have a "last day" keyword. Schedule the job daily and check in your script: [ "$(date -d tomorrow +\%d)" = "01" ] && run_job.