Once a Month (1st at Midnight) Cron Expression
0 0 1 * *Try it live
Valid
MINMinute
0HRHour
9DOMDay of Month
*MONMonth
*DOWDay of Week
1-5In plain English
At 09:00 AM, Monday through Friday
English → Cron
Try: "every 5 minutes", "every weekday at 9am", "every Monday at 3pm", "every month on the 1st"
Next 10 Executions
UTC- 1Mon, May 18, 09:00 AM UTCin 3d
- 2Tue, May 19, 09:00 AM UTCin 4d
- 3Wed, May 20, 09:00 AM UTCin 5d
- 4Thu, May 21, 09:00 AM UTCin 6d
- 5Fri, May 22, 09:00 AM UTCin 7d
- 6Mon, May 25, 09:00 AM UTCin 10d
- 7Tue, May 26, 09:00 AM UTCin 11d
- 8Wed, May 27, 09:00 AM UTCin 12d
- 9Thu, May 28, 09:00 AM UTCin 13d
- 10Fri, May 29, 09:00 AM UTCin 14d
crontab entrybash
# Add to crontab with: crontab -e
0 9 * * 1-5 /path/to/your/script.shWhen to use this schedule
- ▸ Monthly invoice generation sent to customers on the 1st
- ▸ Full database dumps at the start of each month for compliance archiving
- ▸ Renewing SSL certificates that are rotated monthly
- ▸ Aggregating the previous month's analytics for executive dashboards
Platform Syntax Comparison
The same "Once a Month (1st at Midnight)" schedule expressed in every major platform's cron syntax.
| Platform | Expression |
|---|---|
| Standard Linux/Unix | 0 0 1 * * |
| GitHub Actions | 0 0 1 * * |
| Google Cloud Scheduler | 0 0 1 * * |
| Kubernetes CronJob | @monthly |
| Azure Functions (NCRONTAB) | 0 0 0 1 * * |
| AWS EventBridge | 0 0 1 * ? * |
| Quartz Scheduler | 0 0 0 1 * ? |
| Spring @Scheduled | 0 0 0 1 * * |
| Jenkins | H H 1 * * |
| Apache Airflow | @monthly |
Frequently Asked Questions
Is @monthly the same as "0 0 1 * *"? ▾
Yes — @monthly is an alias for "0 0 1 * *" in standard cron, Kubernetes, and Airflow. It runs at midnight on the 1st of every month.
What if I want the job to run on the last day of every month? ▾
Standard cron has no "last day" feature. In Quartz, use "L" in the day-of-month field: "0 0 0 L * ?". In standard cron, a workaround is a script that checks the date at runtime.