The cron expression to run a job every 30 minutes is */30 * * * *. See the next run times in your timezone.
*/30minute*hour*day*month*weekdayIn Plain English
What your cron expression actually means.
Every 30 minutes, every hour, every day
Upcoming Executions
Preview the next 50 times this schedule will trigger.
About */30 * * * *
*/30 * * * * runs a job every 30 minutes, on the minute. Because 30 divides 60 evenly, the spacing stays consistent across every hour boundary.
Cron reads the five fields as minute hour day month weekday. For this schedule that breaks down as:
| Field | Position | Matches |
|---|---|---|
*/30 | minute | 0, 30 |
* | hour | every hour |
* | day of month | every day |
* | month | every month |
* | day of week | every day of the week |
New to cron? Read the syntax reference or the FAQ.
Use it in crontab or GitHub Actions
Both snippets are ready to paste. A crontab runs in the server's local timezone; GitHub Actions always evaluates schedules in UTC. For Kubernetes, AWS EventBridge, or Vercel, use the export menu in the calculator above.
crontab
# Every 30 minutes, every hour, every day */30 * * * * /path/to/command
GitHub Actions workflow
# Every 30 minutes, every hour, every day
# Note: GitHub Actions always runs schedules in UTC.
on:
schedule:
- cron: '*/30 * * * *'