cronuru
Pattern

Every 2 Hours

0 */2 * * *
0 0 */2 * * ?
0 */2 * * *
0 */2 * * ? *
0 0 */2 * * *
0 */2 * * *

Runs every 2 hours at the top of the hour — 00:00, 02:00, 04:00, …, 22:00. 12 invocations per day.

Use in your stack

# Run every 2 hours
0 */2 * * * /usr/local/bin/sync.sh
{ "cron": "0 0 */2 * * ?", "timezone": "UTC" }
apiVersion: batch/v1
kind: CronJob
metadata:
  name: sync
spec:
  schedule: "0 */2 * * *"
  jobTemplate:
    spec:
      template:
        spec:
          containers:
          - name: sync
            image: my-image:latest
          restartPolicy: OnFailure
cron(0 */2 * * ? *)
@Scheduled(cron = "0 0 */2 * * *")
public void every2Hours() { /* ... */ }
on:
  schedule:
    - cron: '0 */2 * * *'

Next runs

Pick a timezone to see when this expression fires next.

Next 10 runs
  1. 012026-07-03T18:00:00.000Z
  2. 022026-07-03T20:00:00.000Z
  3. 032026-07-03T22:00:00.000Z
  4. 042026-07-04T00:00:00.000Z
  5. 052026-07-04T02:00:00.000Z
  6. 062026-07-04T04:00:00.000Z
  7. 072026-07-04T06:00:00.000Z
  8. 082026-07-04T08:00:00.000Z
  9. 092026-07-04T10:00:00.000Z
  10. 102026-07-04T12:00:00.000Z

Variations

0 * * * *

Every hour

0 */3 * * *

Every 3 hours

0 */6 * * *

Every 6 hours

0 */12 * * *

Every 12 hours

Common use cases

  • Periodic data syncs between systems where 2-hour lag is fine.
  • Cache rebuilds for moderately stale data.
  • Sending periodic digest notifications to operators.
  • Retrying failed background jobs on a slow cadence.

Gotchas

  • `*/2` in the hour field starts from 0, so it always fires on even hours. To fire on odd hours (01:00, 03:00, …) use `0 1-23/2 * * *`.
  • AWS EventBridge needs the 6-field form: `0 */2 * * ? *`.
  • Quartz needs seconds + ?: `0 0 */2 * * ?`.

0 */2 * * * fires twelve times a day, on even hours. A common middle-ground schedule for syncs and rebuilds that don’t need hourly freshness but shouldn’t go a quarter-day between runs.

Frequently asked questions

What does `0 */2 * * *` mean?
Minute `0` and hour `*/2` mean "at minute 0 of every 2nd hour starting from 0." So the job fires at 00:00, 02:00, 04:00, 06:00, 08:00, 10:00, 12:00, 14:00, 16:00, 18:00, 20:00, and 22:00 — 12 invocations per day.
How do I run every 2 hours starting from 01:00 instead of 00:00?
Use `0 1-23/2 * * *` — the range `1-23` limits the hour field, then `/2` steps through it by 2. This fires at 01:00, 03:00, 05:00, …, 23:00. The `*/2` shorthand always starts from the field's minimum (0 for hours).
Is `0 */2 * * *` the same as `0 0,2,4,6,8,10,12,14,16,18,20,22 * * *`?
Yes — functionally identical. The `*/2` is shorthand for the explicit list. Use whichever your team finds more readable in the surrounding code.

Browse all cron patterns

Every schedule Cronuru documents, with its expression and code snippets for six dialects.