Hourly
0 * * * *
Run once an hour, at the top of the hour.
This preview is live: the table below shows the actual next run times for 0 * * * * in your time zone, recomputed in your browser. Change the expression, dialect, or zone to experiment, then copy the result.
What 0 * * * * means
0 * * * * fires at minute zero of every hour, the canonical hourly job. The single 0 in the minute field is what makes it hourly; a beginner mistake is to write * * * * * and wonder why it runs every minute instead.
Hourly is the workhorse cadence of back-office automation: it is long enough that almost any job finishes well within the window, and frequent enough to keep reports, caches, and syncs usefully current. Many schedulers accept @hourly as an alias for exactly this expression.
Field-by-field breakdown
Unix cron has five fields. Here is what each one is doing in this expression:
| Field | Value | Meaning |
|---|---|---|
| Minute | 0 | minute = 0 |
| Hour | * | every hour |
| Day of month | * | every day-of-month |
| Month | * | every month |
| Day of week | * | every day-of-week |
Every hour in every scheduler
The same cadence written for the seven cron dialects you are most likely to meet. Copy the line for the system you target, the field count and day-of-week numbering differ between them.
| Scheduler | Expression | Copy |
|---|---|---|
| Unix / crontab | 0 * * * * | |
| GitHub Actions | 0 * * * * | |
| Kubernetes CronJob | 0 * * * * | |
| Vercel Cron | 0 * * * * | |
| Quartz | 0 0 * * * * * | |
| Spring | 0 0 * * * * | |
| AWS EventBridge | 0 * * * * * |
When you would use 0 * * * *
- Hourly rollups, reports, and analytics aggregations.
- Pulling a feed or RSS source that updates a few times a day.
- Rotating logs or cleaning temp files.
The gotcha worth knowing
@hourly is a friendly alias for 0 * * * *, but GitHub Actions and pre-1.25 Kubernetes do not understand aliases, write the explicit 0 * * * * to stay portable.
People also search for
0 * * * * FAQ
What does the cron expression 0 * * * * mean?
0 * * * * means: Run once an hour, at the top of the hour. 0 * * * * fires at minute zero of every hour, the canonical hourly job. The single 0 in the minute field is what makes it hourly; a beginner mistake is to write * * * * * and wonder why it runs every minute instead.
How do I write "every hour" in GitHub Actions?
Use 0 * * * * in the schedule's cron field. @hourly is a friendly alias for 0 * * * *, but GitHub Actions and pre-1.25 Kubernetes do not understand aliases, write the explicit 0 * * * * to stay portable.
How do I write "every hour" for AWS EventBridge?
EventBridge uses six fields with a required year and a ? placeholder in one day field: 0 * * * * *. Wrap it as cron(0 * * * * *) in the console or CloudFormation.
What is the Quartz equivalent of 0 * * * *?
Quartz is seconds-first with a trailing year, so the equivalent is 0 0 * * * * *. Remember Quartz numbers Sunday as 1, the opposite of Unix.
Related cron patterns
More cron tools
Browse the full set of cron pattern pages, or jump to the interactive tools: the cron expression builder for designing a schedule from scratch, the cron cheat sheet for a side-by-side reference, the cron timezone translator for moving a schedule between zones and dialects, and the GitHub Actions cron picker for DST-stable CI schedules.