Cron expression
Every 3 hours
0 */3 * * *
Runs eight times a day: at 00:00, 03:00, 06:00, 09:00, 12:00, 15:00, 18:00 and 21:00.
Runs per month
≈ 240
Next run (UTC)
Thu 15:00
On CronEngine
Runs on the free plan
What each part means
| Minute | 0 | at minute 0 |
| Hour | */3 | every 3 hours |
| 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 18:00 UTC
- 3 Thursday 22 October 2026 21:00 UTC
- 4 Friday 23 October 2026 00:00 UTC
- 5 Friday 23 October 2026 03:00 UTC
See these in your own timezone, or change the schedule →
Good to know
- 3 divides 24 evenly, so the gaps are always three hours, including across midnight.
- Steps that do not divide 24, such as */5 in the hour field, leave a shorter gap at midnight: 20:00 and then 00:00.
Typical uses: Pricing updates, backing up a busy database, pulling data from a slow API.
Copy and paste
0 */3 * * * /path/to/script.sh
on:
schedule:
- cron: '0 */3 * * *'
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')->everyThreeHours();
Variations
| 30 */3 * * * | Every 3 hours, at half past |
| 0 */6 * * * | Every 6 hours → |
Questions
What is the cron expression for every 3 hours?
0 */3 * * *. Runs eight times a day: at 00:00, 03:00, 06:00, 09:00, 12:00, 15:00, 18:00 and 21:00.
Can GitHub Actions run every 3 hours?
Yes, with cron: '0 */3 * * *'. 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