Cron expression
Every 2 hours
0 */2 * * *
Runs on the hour every two hours: 00:00, 02:00, 04:00 and so on until 22:00.
Runs per month
≈ 360
Next run (UTC)
Thu 16:00
On CronEngine
Runs on the free plan
What each part means
| Minute | 0 | at minute 0 |
| Hour | */2 | every 2 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 16:00 UTC
- 2 Thursday 22 October 2026 18:00 UTC
- 3 Thursday 22 October 2026 20:00 UTC
- 4 Thursday 22 October 2026 22:00 UTC
- 5 Friday 23 October 2026 00:00 UTC
See these in your own timezone, or change the schedule →
Good to know
- The step counts from midnight, so the runs fall on even hours. For odd hours, write 0 1-23/2 * * *.
- Twelve runs a day, always the same twelve times, which makes the run history easy to read.
Typical uses: Importing product feeds, refreshing sitemaps, syncing calendars.
Copy and paste
0 */2 * * * /path/to/script.sh
on:
schedule:
- cron: '0 */2 * * *'
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')->everyTwoHours();
Variations
| 0 1-23/2 * * * | Every 2 hours, on the odd hours |
| 0 */3 * * * | Every 3 hours → |
Questions
What is the cron expression for every 2 hours?
0 */2 * * *. Runs on the hour every two hours: 00:00, 02:00, 04:00 and so on until 22:00.
Can GitHub Actions run every 2 hours?
Yes, with cron: '0 */2 * * *'. 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