Cron expression
Every hour
0 * * * *
Runs once an hour, exactly on the hour, 24 times a day.
Runs per month
≈ 720
Next run (UTC)
Thu 15:00
On CronEngine
Runs on the free plan
What each part means
| Minute | 0 | at minute 0 |
| Hour | * | every hour |
| Day of month | * | every day of the month |
| Month | * | every month |
| Day of week | * | every day of the week |
Next runs
- 1 Thursday 22 October 2026 15:00 UTC
- 2 Thursday 22 October 2026 16:00 UTC
- 3 Thursday 22 October 2026 17:00 UTC
- 4 Thursday 22 October 2026 18:00 UTC
- 5 Thursday 22 October 2026 19:00 UTC
See these in your own timezone, or change the schedule →
Good to know
- The 0 in the first field matters. * * * * * would run every minute; 0 * * * * runs only at minute 0.
- The shortcut @hourly means the same thing. To spread load, pick another minute: 17 * * * * runs at 17 past every hour.
Typical uses: Hourly reports, cleaning up expired sessions, sending digest notifications.
Copy and paste
0 * * * * /path/to/script.sh
on:
schedule:
- cron: '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')->hourly();
Variations
| 17 * * * * | Every hour, at 17 minutes past |
| 0 9-17 * * 1-5 | Every hour during office hours on weekdays → |
| 0 */2 * * * | Every 2 hours → |
Questions
What is the cron expression for every hour?
0 * * * *. Runs once an hour, exactly on the hour, 24 times a day.
Can GitHub Actions run every hour?
Yes, with cron: '0 * * * *'. GitHub Actions reads this in UTC, and scheduled runs can start late when GitHub is busy.
More schedules: hours
← All cron schedules · Cron cheat sheet · Cron expression generator