Cron expression for every 4 hours
At 0 minutes past every 4th hour, every day.
0 */4 * * *
What it means: At 0 minutes past every 4th hour, every day.
Field breakdown
| Field | Value | Matches |
|---|---|---|
| Minute | 0 | 0 |
| Hour | */4 | 0, 4, 8, 12, 16, 20 |
| Day of month | * | every value (1-31) |
| Month | * | every value (1-12) |
| Day of week | * | every value (0-6) |
Next five runs
Example fire times in UTC, counted forward from 2026-01-01 00:00 UTC. Open the parser to see the next runs from right now in your own time zone.
- 2026-01-01 04:00 (Thursday)
- 2026-01-01 08:00 (Thursday)
- 2026-01-01 12:00 (Thursday)
- 2026-01-01 16:00 (Thursday)
- 2026-01-01 20:00 (Thursday)
Where you can use it
Paste 0 */4 * * * into a Linux crontab line before the command, into the schedule field of a Kubernetes CronJob, into a GitHub Actions "schedule" trigger, or into any scheduler that accepts the classic five-field syntax. The expression itself is portable; what differs between systems is the time zone it is interpreted in and how failures are retried.
Every explanation on this page was generated by the same parser that powers the interactive tool, and the whole site runs in your browser - no expression you try is ever sent to a server.
Frequently asked questions
What is the cron expression for every 4 hours?
Use 0 */4 * * *. At 0 minutes past every 4th hour, every day. The five fields are minute, hour, day of month, month and day of week, in that order, and every one of them is spelled out in the breakdown table above.
Does this work in a Kubernetes CronJob?
Yes. Kubernetes CronJobs use standard five-field cron, so 0 */4 * * * can be pasted straight into the schedule field. The same expression works in a Linux crontab, in most CI schedulers and in cloud schedulers that accept the classic syntax.
Which time zone does the schedule use?
A cron daemon uses the system time zone of the machine it runs on, unless CRON_TZ or TZ is set in the crontab, or the scheduler exposes an explicit time-zone field as Kubernetes does. The example run times on this page are shown in UTC so they are unambiguous.
How do I test a change before deploying it?
Open the expression in the cron parser on this site: it lists the next run times from the current moment in your own time zone, so you can confirm the schedule fires when you expect before committing it.