Developer Tools

Cron: Every 30 minutes

The cron expression for "Every 30 minutes" is */30 * * * *: 17,520 runs in 2026, shown here field by field and in five schedulers.

Runs in your browser. Your files and text never leave your device - nothing is uploaded.

Every 30 minutes

Next 8 run times

  • Fri, Oct 16, 2026, 11:30 PM
  • Sat, Oct 17, 2026, 12:00 AM
  • Sat, Oct 17, 2026, 12:30 AM
  • Sat, Oct 17, 2026, 01:00 AM
  • Sat, Oct 17, 2026, 01:30 AM
  • Sat, Oct 17, 2026, 02:00 AM
  • Sat, Oct 17, 2026, 02:30 AM
  • Sat, Oct 17, 2026, 03:00 AM

Standard 5-field cron syntax: minute, hour, day of month, month, day of week. Next run times are computed in your browser's local timezone.

What is the cron expression for every 30 minutes?

*/30 * * * * runs a job every 30 minutes, on the hour and at half past: minutes 0 and 30 of every hour. That is 48 runs a day and 17,520 in 2026. Writing 0,30 * * * * gives exactly the same schedule, while 30 * * * * alone would run only once an hour.

*/30 * * * * field by field

FieldAllowedValueSelects
Minute0-59*/30minutes 0 and 30, 2 times an hour
Hour0-23*every hour of the day (0-23)
Day of month1-31*any date
Month1-12 or JAN-DEC*every month
Day of week0-6 or SUN-SAT (0 = Sunday; many crons also accept 7)*any weekday

With both day fields left as *, every calendar date qualifies, so only the minute and hour decide when it fires.

How often */30 * * * * runs in 2026

  • Runs on each matching day: 48.
  • Matching days in 2026: 365 of 365.
  • Total runs in 2026: 17,520.
  • First run of the year: Thu, 1 Jan 2026, 00:00 UTC. Last: Thu, 31 Dec 2026, 23:30 UTC.

These counts use UTC, which has no daylight saving. The run list in the generator shows the next runs in your browser's own time zone instead.

The same schedule in other schedulers

SchedulerWrite it asWatch out for
crontab (Linux, macOS)*/30 * * * * /usr/local/bin/refresh-cache.shAdd it with crontab -e. In /etc/crontab a user name goes between the time fields and the command.
Kubernetes CronJobschedule: "*/30 * * * *"Valid; under the default concurrencyPolicy: Allow, a run lasting past 30 minutes overlaps the next one.
GitHub Actions- cron: '*/30 * * * *'Allowed; both runs each hour are in UTC unless a timezone key sits next to the cron line.
AWS EventBridgecron(0/30 * * * ? *)rate(30 minutes) works too, but is not tied to :00 and :30.
Quartz0 0/30 * * * ?Fires at :00:00 and :30:00 of every hour.

Time zones and daylight saving

Half-hour marks line up in nearly every zone, but a UTC schedule lands at quarter past and quarter to the local hour in Nepal (UTC+5:45) and on the Chatham Islands (UTC+12:45). On a local-time server, daylight saving gives 46 runs on the spring-forward day and 50 on the autumn day. If the job feeds a dashboard that expects exactly 48 points a day, schedule it in UTC.

Common mistakes with */30 * * * *

  • 30 * * * * runs once an hour at half past, not every 30 minutes.
  • Reaching for */90 to mean every 90 minutes. The minute field stops at 59, so a step cannot span hours; a 90-minute cycle needs two lines, 0 0-21/3 * * * and 30 1-22/3 * * *.
  • Long runs: if one execution can take more than 30 minutes, two copies overlap. Guard with flock -n or Kubernetes concurrencyPolicy: Forbid.

Frequently asked questions

Other common schedules

Reviewed by Raja Jahangir · Last reviewed: October 7, 2026