Cron Job Every hour at 30 minutes past

Trigger a job every hour at 30 minutes past the hour. Use the cron string 30 * * * *, see the next 5 execution times, and copy Python, Node.js, Bash and n8n snippets.

Quick Answers

What does the "Every hour at 30 minutes past" cron expression mean?
This cron expression is "30 * * * *", which in plain English means: Trigger a job every hour at 30 minutes past the hour..
When will this cron expression run next?
With the expression "30 * * * *", the next execution times are Fri, Aug 14, 2026, 01:30:00 PM UTC, Fri, Aug 14, 2026, 02:30:00 PM UTC, Fri, Aug 14, 2026, 03:30:00 PM UTC.
How do I use this cron expression?
Copy the exact string into crontab, cron triggers, or any scheduler such as GitHub Actions, n8n or Docker. Pre-built code snippets for Python, Node.js, Bash, Docker, GitHub Actions and n8n are included on this page.
Explore the full Cron Cheat Sheet with all 50 schedules
Cron Expression
Copy this exact string into crontab, cron triggers, or schedulers.
30 * * * *

Human readable

Trigger a job every hour at 30 minutes past the hour.

Next 5 execution times

  1. 1Fri, Aug 14, 2026, 01:30:00 PM UTC
  2. 2Fri, Aug 14, 2026, 02:30:00 PM UTC
  3. 3Fri, Aug 14, 2026, 03:30:00 PM UTC
  4. 4Fri, Aug 14, 2026, 04:30:00 PM UTC
  5. 5Fri, Aug 14, 2026, 05:30:00 PM UTC
Python
from crontab import CronTab
from datetime import datetime

# Install: pip install python-crontab
cron = CronTab(user=True)
job = cron.new(command="/usr/bin/python3 /var/www/job_every-hour-at-30-minutes.py", comment="scheduled by crongen")
job.setall("30 * * * *")
cron.write()

print(f"Installed: 30 * * * * -> /usr/bin/python3 /var/www/job_every-hour-at-30-minutes.py")

About the "every hour at 30 minutes past" cron schedule

The "every hour at 30 minutes past" cron schedule uses the expression "30 * * * *". This schedule fires 24 times per day.

In plain English the cron string "30 * * * *" means: At 30 minutes past the hour.

This cadence is a common choice for hourly data ingestion, cache refresh or status aggregation jobs and steady background processing that keeps a small queue drained. The schedule is deliberately kept simple: copy the string into any cron-aware scheduler (crontab, Vercel Cron, GitHub Actions, n8n, Docker or Kubernetes CronJob) and the run will repeat automatically — steady, with no manual triggering.

Frequently asked questions