Cron schedule · Updated

Cron every 30 minutes: the */30 * * * * expression and its variants

The cron expression for every 30 minutes, what each field means, half-past and working-hours variants, Quartz and Jenkins forms, and platform limits to know.

To run a cron job every 30 minutes, use:

*/30 * * * *

It fires at minute 0 and minute 30 of every hour: 48 times a day. 0,30 * * * * is exactly the same schedule. In a crontab:

*/30 * * * * /usr/local/bin/backup-db.sh >> /var/log/backup-db.log 2>&1

What each field means

FieldValueMeaning
Minute*/30minute 0 and minute 30
Hour*every hour
Day of month*every day
Month*every month
Day of week*every day of the week

Variants

ScheduleExpression
At :15 and :4515,45 * * * *
Every 30 minutes from 9:00 to 17:30*/30 9-17 * * *
Every 30 minutes on weekdays, business hours*/30 9-17 * * 1-5
Every 30 minutes overnight, 22:00 to 05:30*/30 22-23,0-5 * * *
Jenkins, spreadH/30 * * * *
Quartz (seconds first)0 0/30 * * * ?
Spring @Scheduled0 */30 * * * *
AWS EventBridgerate(30 minutes) or cron(0/30 * * * ? *)

Platform notes

  • Linux crontab: local server time; cron mails any output to the crontab owner unless you redirect it or set MAILTO="".
  • GitHub Actions: allowed. Use 15,45 * * * * rather than 0,30 to avoid the start of the hour, when scheduled runs are most often delayed. UTC unless you set timezone. See GitHub Actions cron.
  • Kubernetes CronJob: schedule: "*/30 * * * *". startingDeadlineSeconds decides whether a run missed during an outage still starts late or is skipped.
  • Cloudflare Cron Triggers: */30 * * * * is one of Cloudflare's own examples, in UTC.
  • Vercel: Pro or Enterprise only; on Hobby this exact expression fails the deployment.
  • Jenkins: H/30 * * * * keeps two runs an hour at a per-job offset. See Jenkins cron.

Common mistakes

  • *`30 * * `* runs once an hour, at half past.
  • *`0 /30 * * `* runs once a day at 00:00, because a step of 30 in the hour field (0 to 23) only ever lands on 0.
  • Expecting UTC from a Linux server set to local time, or the reverse in the cloud.

Running an AI agent every 30 minutes

A good pace for an agent that watches something live, such as an incident channel summary that keeps a running update while an incident is open. The scheduled skills page shows how to put any Claude Code or Codex skill on this schedule.

Questions

Is */30 the same as 0,30?

Yes. In the minute field both mean minutes 0 and 30. Some people prefer 0,30 because it is obvious at a glance.

How do I run every 30 minutes at :15 and :45?

Use 15,45 * * * *, or 15-59/30 * * * *. The step counts from the first value of the range.

Why does Vercel reject */30 * * * *?

Hobby projects can only run cron jobs once a day, and Vercel's docs use */30 * * * * as the example that fails deployment. Every 30 minutes needs Pro or Enterprise (as of October 2026).

Can I use */45 for every 45 minutes?

Not reliably. */45 runs at minute 0 and 45, so the gaps are 45 and 15 minutes. Cron steps reset every hour; for a true 45-minute interval, use a scheduler that supports fixed rates.

More cron schedules

All cron schedules

Know when your agents need you

Briefkin puts your Claude Code, Codex and Cursor sessions on one board: working, needs you, done or failed. Telegram pings you when one is waiting on you, and scheduled skills post their reports next to them.

Free during the open beta. No card.