Cron expression
Every 30 minutes
*/30 * * * *
Runs twice an hour, on the hour and at half past, 48 times a day.
Runs per month
≈ 1,440
Next run (UTC)
Thu 14:30
On CronEngine
Runs on the free plan
What each part means
| Minute | */30 | every 30 minutes |
| 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 14:30 UTC
- 2 Thursday 22 October 2026 15:00 UTC
- 3 Thursday 22 October 2026 15:30 UTC
- 4 Thursday 22 October 2026 16:00 UTC
- 5 Thursday 22 October 2026 16:30 UTC
See these in your own timezone, or change the schedule →
Good to know
- */30 and 0,30 mean exactly the same here. For quarter past and quarter to, use 15,45 instead.
- A common choice for reports and syncs that do not need to be fresh to the minute.
Typical uses: Pulling analytics, syncing a CRM, rotating logs on a busy server.
Copy and paste
*/30 * * * * /path/to/script.sh
on:
schedule:
- cron: '*/30 * * * *'
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')->everyThirtyMinutes();
Variations
| 15,45 * * * * | Twice an hour, at quarter past and quarter to |
| 0 * * * * | Every hour, on the hour → |
Questions
What is the cron expression for every 30 minutes?
*/30 * * * *. Runs twice an hour, on the hour and at half past, 48 times a day.
Can GitHub Actions run every 30 minutes?
Yes, with cron: '*/30 * * * *'. GitHub Actions reads this in UTC, and scheduled runs can start late when GitHub is busy.
More schedules: minutes
← All cron schedules · Cron cheat sheet · Cron expression generator