Cron every hour explained
0 * * * *Every hour, every day.
Next runs · UTC
- —
- —
- —
- —
- —
Calendar
September 2026 · UTC
0 runs
About this tool
0 * * * *. The minute field is 0 (top of the hour), the hour is * (every hour), and the remaining fields are wildcards. The job fires 24 times per day, once per hour at minute 00.Why 0 * * * * and not * * * * *?
The minute field is what determines the cadence here. Wildcarding the minute (* * * * *) gives you every minute - 60 firings per hour. Pinning the minute to 0 gives you exactly one firing per hour, at xx:00.
The hour wildcard * says “every hour”. Combined with minute 0, the full schedule is “every hour, at minute 0”.
Every hour on different platforms
Linux crontab
0 * * * * /path/to/script.sh
# Or with the @hourly alias:
@hourly /path/to/script.shVercel cron jobs
{
"crons": [
{ "path": "/api/cron/hourly", "schedule": "0 * * * *" }
]
}AWS EventBridge
cron(0 * * * ? *)
# or:
rate(1 hour)Quartz (Java)
Trigger trigger = newTrigger()
.withSchedule(cronSchedule("0 0 * * * ?"))
.build();Kubernetes CronJob
spec:
schedule: "0 * * * *"
concurrencyPolicy: ForbidVariations on every hour
30 * * * *- every hour at xx:30.0,30 * * * *- every half hour (twice an hour).0 */2 * * *- every 2 hours at the top of the hour.0 9-17 * * 1-5- hourly during business hours on weekdays.0 0,12 * * *- at midnight and noon every day (twice daily).*/15 * * * *- every 15 minutes (4x as frequent).0 0 * * *- every day at midnight (24x less frequent).
Hourly cron pitfalls
- Daylight saving - at the spring-forward hour (typically 02:00 → 03:00), the 02:00 firing is skipped. At the fall-back hour, the 02:00 firing happens twice. Pin to UTC if your job must fire exactly 24 times a day.
- Top-of-the-hour load spike - every hourly cron in your crontab fires at the same instant. Spread them out: some at
0, some at15, some at30, etc. Or use the JenkinsHmodifier for deterministic hashing. - Long-running hourly jobs - if the work takes more than 60 minutes, you need a lock or a concurrency-aware scheduler. Otherwise the next firing starts before the previous finishes.
Examples
- 0 18 * * *Every day at 18:00
- 0 */5 * * *Every 5 hours
- 0 18 * * 1-5Weekdays at 18:00
- 0 0 1 * *Once a month, on the 1st at midnight
Cheatsheet
Full cheatsheet| Field | Req. | Range | Wildcards |
|---|---|---|---|
| minute | yes | 0-59 | , - * / |
| hour | yes | 0-23 | , - * / |
| day of month | yes | 1-31 | , - * / |
| month | yes | 1-12 or JAN-DEC | , - * / |
| day of week | yes | 0-6 or names; some dialects use 0-7 or 1-7 — see Dialects | , - * / |
Frequently asked questions
Syntax
What is the cron expression for every hour?
0 * * * *. The minute field is 0 (top of the hour), the hour field is * (every hour), and the rest are wildcards. The job fires once an hour at minute 00 - 24 times per day. Expression: 0 * * * *
Is 0 * * * * the same as */60 * * * *?
Almost. Both fire once per hour at minute 0. But */60 is technically invalid in some parsers because the step value can't equal the field's range size. Stick with 0 * * * * for portability.
Timing
How do I run every hour but not at the top of the hour?
Pick the minute you want and pin it: 30 * * * * fires at every xx:30. 15 * * * * fires at xx:15. The minute field accepts a single literal. To fire every hour at multiple minutes (xx:00 and xx:30), use a list: 0,30 * * * *. Expression: 30 * * * *
How do I run every 2 hours, every 3 hours, etc?
Step in the hour field: 0 */2 * * * for every 2 hours, 0 */3 * * * for every 3, 0 */6 * * * for every 6. The minute pins it to the top of the hour. Expression: 0 */2 * * *
How do I run every hour during business hours?
0 9-17 * * 1-5 - every hour from 09:00 through 17:00 on weekdays. Nine runs per weekday. For tighter cadence within business hours use the minute field too: */15 9-17 * * 1-5 for every 15 minutes during the same window. Expression: 0 9-17 * * 1-5
Is hourly cron the same as every 60 elapsed minutes?
No. 0 * * * * targets each wall-clock hour at minute zero. A fixed 60-minute interval normally starts from creation or completion time and need not align to the clock.
How many times does hourly cron run per day?
It normally runs 24 times per day. A DST-observing local day can contain 23 or 25 hourly wall-clock slots.
Timezones and DST
How does DST affect an hourly cron?
Local spring-forward days can skip one hourly slot, and fall-back days can repeat one. UTC produces 24 aligned hourly slots per UTC day.
Platforms
What is every hour in Spring cron?
Use 0 0 * * * *. Spring's first field is seconds and its second is minutes, so both are zero for the top of every hour. Expression: 0 0 * * * *
What is every hour in AWS EventBridge?
Use cron(0 * * * ? *) for clock-aligned hours or rate(1 hour) for an elapsed interval anchored to rule creation.
Can Vercel run an hourly cron?
Vercel supports 0 * * * * on plans that allow sub-daily schedules. Hobby is limited to once per day, and Vercel schedules use UTC.
Debugging
Why offset an hourly cron from minute zero?
Minute zero is a common load spike because many hourly jobs start together. Choosing 7 * * * * or another offset spreads database, network, and compute demand. Expression: 7 * * * *
What if an hourly job takes more than an hour?
The next tick may overlap the active run. Use a lock, queue, or scheduler concurrency policy, and decide whether delayed windows should be skipped or processed later.
Will cron replay an hourly tick missed during downtime?
Traditional cron will not. If every hour's data matters, store a processing watermark and catch up missing windows after restart.
Crontap
Can Crontap run a job every hour?
Yes. You can schedule an HTTP job on Crontap with 0 * * * *, optionally offsetting the minute to avoid top-of-hour load. Expression: 0 * * * *
Write the cron here. Run it on Crontap.
Point Crontap at any URL. Pick any cron. Done.
WordPress, Shopify, Railway, Cloud Run, Vercel, HubSpot, Ghost, your own box. If it answers HTTP, Crontap can drive it on a clock you can read, in the timezone that actually matters, and page you when something breaks.
1.9k+ teams · Free forever tier · No credit card