Cron expression
Every day at midnight
0 0 * * *
Runs once a day, at 00:00.
Runs per month
≈ 30
Next run (UTC)
Fri 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 | * | every day of the month |
| Month | * | every month |
| Day of week | * | every day of the week |
Next runs
- 1 Friday 23 October 2026 00:00 UTC
- 2 Saturday 24 October 2026 00:00 UTC
- 3 Sunday 25 October 2026 00:00 UTC
- 4 Monday 26 October 2026 00:00 UTC
- 5 Tuesday 27 October 2026 00:00 UTC
See these in your own timezone, or change the schedule →
Good to know
- The shortcuts @daily and @midnight mean the same. Whose midnight depends on the scheduler: a server crontab uses the server timezone, GitHub Actions uses UTC.
- Midnight is when most nightly jobs start, so shared systems are busiest then. A few minutes later, 5 0 * * *, is often smoother.
Typical uses: Nightly backups, daily reports, closing the day in a billing system.
Copy and paste
0 0 * * * /path/to/script.sh
on:
schedule:
- cron: '0 0 * * *'
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')->daily();
Variations
| 5 0 * * * | Every day at 00:05 |
| 30 2 * * * | Every day at 02:30 |
| 0 9 * * * | Every day at 09:00 → |
Questions
What is the cron expression for every day at midnight?
0 0 * * *. Runs once a day, at 00:00.
Can GitHub Actions run every day at midnight?
Yes, with cron: '0 0 * * *'. GitHub Actions reads this in UTC, and scheduled runs can start late when GitHub is busy.
More schedules: days
← All cron schedules · Cron cheat sheet · Cron expression generator