Cron expression
First day of the month
0 0 1 * *
Runs once a month, at 00:00 on the 1st.
Runs per month
≈ 1
Next run (UTC)
Sun 00:00
On CronEngine
Runs on the free plan
What each part means
| Minute | 0 | at minute 0 |
| Hour | 0 | at hour 0 |
| Day of month | 1 | on day 1 |
| Month | * | every month |
| Day of week | * | every day of the week |
Next runs
- 1 Sunday 1 November 2026 00:00 UTC
- 2 Tuesday 1 December 2026 00:00 UTC
- 3 Friday 1 January 2027 00:00 UTC
- 4 Monday 1 February 2027 00:00 UTC
- 5 Monday 1 March 2027 00:00 UTC
See these in your own timezone, or change the schedule →
Good to know
- The shortcut @monthly means the same. The 1st exists in every month, unlike the 29th, 30th or 31st.
- A job on the 31st is skipped in months with fewer days. For month-end work, use the last day of the month instead.
Typical uses: Monthly invoices, usage resets, monthly reports.
Copy and paste
0 0 1 * * /path/to/script.sh
on:
schedule:
- cron: '0 0 1 * *'
GitHub Actions reads this in UTC, and scheduled runs can start late when GitHub is busy. How to start it on time.
Schedule::command('your:command')->monthly();
Variations
| 0 9 1 * * | The 1st of every month at 09:00 |
| 0 9 15 * * | The 15th of every month at 09:00 |
| 0 23 L * * | The last day of every month at 23:00 → |
Questions
What is the cron expression for first day of the month?
0 0 1 * *. Runs once a month, at 00:00 on the 1st.
Can GitHub Actions run first day of the month?
Yes, with cron: '0 0 1 * *'. GitHub Actions reads this in UTC, and scheduled runs can start late when GitHub is busy.
More schedules: months
← All cron schedules · Cron cheat sheet · Cron expression generator