Cron expression for every hour

At minute 0 of every hour

0
minute
*
hour
*
day (month)
*
month
*
day (week)

At minute 0 of every hour

Try this expression in the interactive tool:

Open in cron explainer →

Next 10 scheduled runs

#1Thu, 16 Apr 2026, 01:00
#2Thu, 16 Apr 2026, 02:00
#3Thu, 16 Apr 2026, 03:00
#4Thu, 16 Apr 2026, 04:00
#5Thu, 16 Apr 2026, 05:00
#6Thu, 16 Apr 2026, 06:00
#7Thu, 16 Apr 2026, 07:00
#8Thu, 16 Apr 2026, 08:00
#9Thu, 16 Apr 2026, 09:00
#10Thu, 16 Apr 2026, 10:00

Common use cases

Running at the top of every hour is the most common hourly schedule. The leading 0 in the minute field means it fires at :00 — which matters for logs, reports, and any output that humans will read with an expectation of clean hourly timestamps.

Hourly jobs are a natural fit for tasks that need regular attention but aren't time-critical: shipping logs to a centralised service, generating hourly analytics snapshots, refreshing CDN caches, checking SSL certificate expiry, or syncing configuration from a central store.

Many external APIs have rate limits expressed in calls-per-hour. An hourly cron job that makes one well-structured API call per cycle is often the safest way to stay within limits while keeping data fresh.

Platform-specific syntax

crontab
0 * * * * /path/to/script.sh
AWS EventBridge
rate(1 hour)
GitHub Actions
schedule:
  - cron: '0 * * * *'
Kubernetes
schedule: "0 * * * *"

Technical breakdown

The expression 0 * * * * has five fields: minute=0, hour=*, day (month)=*, month=*, day (week)=*. At minute 0 of every hour.

Frequently asked questions

Why use 0 * * * * instead of @hourly?
They're equivalent on systems that support the @hourly macro (most Linux distributions). @hourly is more readable but isn't universally supported — AWS EventBridge, GitHub Actions, and Kubernetes don't recognise it. The five-field form 0 * * * * works everywhere.