Cron Expression Builder
Write it, read it back in plain English, and see when it actually fires.
At the top of every hour.
Next runs — UTC
- Fri, 31 Jul 2026, 00:00
- Fri, 31 Jul 2026, 01:00
- Fri, 31 Jul 2026, 02:00
- Fri, 31 Jul 2026, 03:00
- Fri, 31 Jul 2026, 04:00
Five fields. Runs in the server's local timezone.
Cron uses the server’s timezone, which is often not yours. Check before you trust a time.
Fields
- minute0–59
- hour0–23
- dom1–31
- month1–12
- dow0–7
Cron every hour
0 * * * *
0 * * * * fires at the top of every hour. The shortcut @hourly means exactly this and is easier to read, but not every system accepts shortcuts — GitHub Actions rejects them outright, so the explicit form is the portable one.
Frequently asked questions
- What is the difference between 0 * * * * and @hourly?
- Nothing, where both are supported: @hourly expands to 0 * * * *. Kubernetes CronJob accepts it, GitHub Actions does not, and Quartz and AWS EventBridge have no shortcuts at all.
- How do I run every 2 hours instead?
- Put the step in the hour field: 0 */2 * * * fires at 00:00, 02:00, 04:00 and so on.
- Why does my hourly job run at :00 rather than an hour after I added it?
- Cron schedules against the clock, not against when the entry was created. The minute field is what decides the offset within the hour.