Developer Tools

Cron: Every hour

The cron expression for "Every hour" is 0 * * * *: 8,760 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 hour

Next 8 run times

  • Sat, Oct 17, 2026, 12:00 AM
  • Sat, Oct 17, 2026, 01:00 AM
  • Sat, Oct 17, 2026, 02:00 AM
  • Sat, Oct 17, 2026, 03:00 AM
  • Sat, Oct 17, 2026, 04:00 AM
  • Sat, Oct 17, 2026, 05:00 AM
  • Sat, Oct 17, 2026, 06:00 AM
  • Sat, Oct 17, 2026, 07: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 hour?

0 * * * * runs a job once an hour, at minute 0: 00:00, 01:00, 02:00 and so on, 24 times a day and 8,760 times in 2026. Most cron daemons also accept @hourly for exactly this schedule. The leading 0 matters, since * * * * * would run every minute instead.

0 * * * * field by field

FieldAllowedValueSelects
Minute0-590minute 0, on the 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 0 * * * * runs in 2026

  • Runs on each matching day: 24.
  • Matching days in 2026: 365 of 365.
  • Total runs in 2026: 8,760.
  • First run of the year: Thu, 1 Jan 2026, 00:00 UTC. Last: Thu, 31 Dec 2026, 23:00 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)0 * * * * /usr/local/bin/rotate-logs.shAdd it with crontab -e. In /etc/crontab a user name goes between the time fields and the command.
Kubernetes CronJobschedule: "0 * * * *"Valid, and Kubernetes also accepts @hourly.
GitHub Actions- cron: '0 * * * *'Allowed, but the start of the hour is when Actions is busiest; a later minute such as 17 * * * * is less likely to be delayed.
AWS EventBridgecron(0 * * * ? *)rate(1 hour) counts from when the schedule is created rather than from the top of the hour.
Quartz0 0 * * * ?Fires at second 0 of minute 0, every hour.

Time zones and daylight saving

An hourly job is where daylight saving shows most clearly on a local-time server: the spring-forward day has 23 hours, so 23 runs, and the autumn day has 25. If downstream reports expect 24 rows per day, run the job in UTC. Zones with half-hour offsets, such as India at UTC+5:30, see a UTC-scheduled hourly job land at half past each local hour.

Common mistakes with 0 * * * *

  • * * * * * or * */1 * * * instead of 0 * * * *: both run every minute, because the minute field is still a wildcard.
  • Putting every hourly job on minute 0. That is when many systems fire at once; a fixed odd minute such as 17 * * * * spreads the load.
  • Assuming @hourly works everywhere. Vixie-style crons and Kubernetes accept it, but GitHub Actions, AWS EventBridge and Quartz need the explicit fields.

Frequently asked questions

Other common schedules

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