ShareYourGroupShareYourGroupCron Helper

Cron expression for every 30 minutes

Every 30 minutes.

Five fields for Linux, GitHub Actions and Kubernetes (minute hour day month weekday). Six or seven for Quartz. Nothing you type leaves your device.

What it means and when to use it

Half-hourly runs fit tasks that are worth doing often but not constantly: updating exchange rates, refreshing a sitemap, polling an API with a daily quota, or sending a reminder summary. Two runs an hour is 48 a day.

Watch out for this

Step values never carry over from one hour to the next. */30 means minute 0 and minute 30 of every hour, which happens to be exactly 30 minutes apart. But */45 does not mean every 45 minutes: it means minutes 0 and 45 of every hour, so the gaps are 45 minutes and then 15 minutes. If your interval does not divide 60 evenly, see the page on cron step values for the workaround.

What each field says

FieldWrittenMeans
Minute*/300, 30
Hour*every hour
Day of month*every day of the month
Month*every month
Day of week*every day of the week

An example of the next runs

If it were Friday 13 November 2026 at 10:20 UTC, the next six runs would be these. Times are shown in UTC and in India time (UTC+5:30).

UTCIndia time
Fri 13 Nov, 10:30Fri 13 Nov, 16:00
Fri 13 Nov, 11:00Fri 13 Nov, 16:30
Fri 13 Nov, 11:30Fri 13 Nov, 17:00
Fri 13 Nov, 12:00Fri 13 Nov, 17:30
Fri 13 Nov, 12:30Fri 13 Nov, 18:00
Fri 13 Nov, 13:00Fri 13 Nov, 18:30

The same schedule in other places

Quartz

Quartz has a seconds field in front, uses ? in one day field, and counts Sunday as 1:

0 */30 * * * ?

GitHub Actions

Scheduled workflows run in UTC unless you add a time zone. In the workflow file:

on:
  schedule:
    - cron: '*/30 * * * *'

Kubernetes CronJob

In a CronJob manifest the schedule goes in spec.schedule. Without spec.timeZone, it is read in the time zone of the cluster's controller:

spec:
  schedule: "*/30 * * * *"
  timeZone: "Etc/UTC"

A crontab line to copy

The command is made up. Replace it with your own and use full paths:

*/30 * * * * /usr/bin/python3 /home/me/rates/update.py >> /home/me/rates/log.txt 2>&1

Questions

Is */30 the same as 0,30?

Yes. Both mean minute 0 and minute 30.

This is an independent guide and tool. It is not connected with crontab.guru, Quartz, GitHub, Kubernetes, Spring or the Linux projects named here. Product names belong to their owners.