Every N minutes
*/30 * * * *Run twice an hour — on the hour and the half hour.
This preview is live: the table below shows the actual next run times for */30 * * * * in your time zone, recomputed in your browser. Change the expression, dialect, or zone to experiment, then copy the result.
*/30 * * * * means*/30 * * * * fires on the hour and the half-hour, 48 times a day. It is the lightest sub-hourly cadence — frequent enough to keep data reasonably fresh, sparse enough that overlap is almost never a problem.
Half-hourly is the typical home for jobs that are mildly expensive: digest emails that batch the last 30 minutes of activity, partial reindexes, or syncs against APIs with tight rate limits. It is also a sensible default when you are not sure how often you need to run and want to start conservative.
Unix cron has five fields. Here is what each one is doing in this expression:
| Field | Value | Meaning |
|---|---|---|
| Minute | */30 | every 30 (step) across minute |
| Hour | * | every hour |
| Day of month | * | every day-of-month |
| Month | * | every month |
| Day of week | * | every day-of-week |
The same cadence written for the seven cron dialects you are most likely to meet. Copy the line for the system you target — the field count and day-of-week numbering differ between them.
| Scheduler | Expression | Copy |
|---|---|---|
| Unix / crontab | */30 * * * * | |
| GitHub Actions | */30 * * * * | |
| Kubernetes CronJob | */30 * * * * | |
| Vercel Cron | */30 * * * * | |
| Quartz | 0 */30 * * * * * | |
| Spring | 0 */30 * * * * | |
| AWS EventBridge | */30 * * * * * |
*/30 * * * **/30 and 0,30 * * * * are equivalent. People sometimes write 30 * * * * meaning "every 30 minutes" — but that fires only once an hour, at :30. Watch the field position.
*/30 * * * * means: Run twice an hour — on the hour and the half hour. */30 * * * * fires on the hour and the half-hour, 48 times a day. It is the lightest sub-hourly cadence — frequent enough to keep data reasonably fresh, sparse enough that overlap is almost never a problem.
Use */30 * * * * in the schedule's cron field. */30 and 0,30 * * * * are equivalent. People sometimes write 30 * * * * meaning "every 30 minutes" — but that fires only once an hour, at :30. Watch the field position.
EventBridge uses six fields with a required year and a ? placeholder in one day field: */30 * * * * *. Wrap it as cron(*/30 * * * * *) in the console or CloudFormation.
Quartz is seconds-first with a trailing year, so the equivalent is 0 */30 * * * * *. Remember Quartz numbers Sunday as 1, the opposite of Unix.
Browse the full set of cron pattern pages, or jump to the interactive tools: the cron expression builder for designing a schedule from scratch, the cron cheat sheet for a side-by-side reference, the cron timezone translator for moving a schedule between zones and dialects, and the GitHub Actions cron picker for DST-stable CI schedules.