/

Cron: Twice Daily

"Twice daily" is less about a specific expression and more about intent — running something at two meaningful points in the day, like a morning and evening reminder, report, or sync. Unlike the raw */12 step (which defaults to midnight and noon), a twice-daily schedule is usually written as an explicit list of the two hours that actually matter.

0 8,20 * * *

Examples & Variations

0 8,20 * * *

8 AM and 8 PM

Try it

0 9,17 * * 1-5

9 AM and 5 PM, weekdays (start/end of workday)

Try it

0 6,18 * * *

6 AM and 6 PM

Try it

Common Mistakes

  • Reaching for */12 out of habit — it works, but silently defaults to midnight and noon, which is rarely when a human-facing 'twice daily' reminder should actually fire.
  • Picking two hours without considering timezone — a twice-daily schedule meant for users in a specific region needs its hours computed in that region's local time, not server time.
  • Assuming 'twice daily' always means evenly 12 hours apart — a workday-bounded pattern (like 9 AM and 5 PM) is a genuinely different, and very common, twice-daily shape.

Best Practices

  • Write the two hours explicitly (0 8,20 * * *) rather than via a step value — it's immediately readable and doesn't default to an arbitrary midnight/noon split.
  • For anything reaching real users, pick hours based on when they're actually likely to engage, not just an even 12-hour split.
  • If the two runs serve different purposes (like a morning summary and an evening wrap-up), consider whether they're really the same job on one schedule, or two separate cron entries with different logic.

Frequently Asked Questions

What's the difference between 'twice daily' and 0 */12 * * *?
They can produce the same result, but */12 defaults to midnight and noon specifically, while 'twice daily' usually implies you pick two meaningful hours explicitly, like 8 AM and 8 PM.
What's a common twice-daily pattern for business reports?
9 AM and 5 PM (0 9,17 * * 1-5) is common for workday start/end summaries, restricted to weekdays with a day-of-week range.
Can I run twice daily with different logic each time?
Not from a single cron entry — if the morning and evening runs need different behavior, either branch on the current hour inside your script, or use two separate crontab entries.