/

Cron: Every 3 Hours

0 */3 * * * fires eight times a day — 00:00, 03:00, 06:00, and onward through 21:00. Since 3 evenly divides 24, the interval is perfectly consistent around the clock, making it a clean choice for moderate-frequency jobs that don't need to run every hour or two.

0 */3 * * *

Examples & Variations

0 */3 * * *

Every 3 hours, all day

Try it

0 6-21/3 * * *

Every 3 hours, 6 AM–9 PM only

Try it

0 0,3,6,9,12,15,18,21 * * *

Same schedule, written as an explicit list

Try it

Common Mistakes

  • Writing an uneven step (like */5 in the hour field) expecting the same clean behavior — 5 doesn't divide 24, so it would produce an inconsistent, shrinking cycle the same way */45 does in minutes.
  • Not accounting for eight daily invocations when estimating API usage or costs — three-hour polling adds up faster than it sounds over a month.
  • Assuming this interval is 'business hours friendly' by default — it runs overnight too unless you explicitly restrict the hour range.

Best Practices

  • Good default for periodic reports, moderate-cost external API polling, or refreshing data that doesn't change minute-to-minute.
  • Use the explicit list form (0,3,6,9,...) if you want the schedule to be immediately readable without mental math, at the cost of a longer expression.
  • Pair with monitoring if a missed run matters — at only 8 runs a day, a single silent failure represents a meaningful gap in coverage.

Frequently Asked Questions

How many times a day does every 3 hours run?
Eight times — 24 hours divided by a 3-hour step gives exactly 8 evenly-spaced runs, starting at midnight.
Is 0 */3 * * * the same as 0 0,3,6,9,12,15,18,21 * * *?
Yes, functionally identical — the step syntax is shorthand for that exact explicit list.
How do I restrict every-3-hours to daytime only?
Add an hour range before the step: 0 6-21/3 * * * only fires between 6 AM and 9 PM, still spaced 3 hours apart within that window.