Cron: Every 20 Minutes
*/20 * * * * fires three times an hour — at :00, :20, and :40. Unlike step values such as */45 that don't evenly divide 60, 20 divides cleanly into 60, so this produces a genuinely consistent, rolling interval rather than an uneven alternating gap.
*/20 * * * *
Examples & Variations
Common Mistakes
- Assuming */20 needs the same 'does it divide evenly' caution as */45 — it doesn't. 20 is one of the clean divisors of 60 (along with 1, 2, 3, 4, 5, 6, 10, 12, 15, 30), so the interval is genuinely even.
- Using every-20-minutes for something that needs true real-time responsiveness — three checks an hour is a moderate polling cadence, not a substitute for a push-based or event-driven trigger.
- Not accounting for three-per-hour when estimating API rate limits or costs over a full day (72 runs) or month.
Best Practices
- A solid middle-ground interval when every 15 minutes feels too frequent and every 30 minutes feels too sparse — common for polling jobs with a moderate freshness requirement.
- Restrict to business hours (9-17) if the job supports a feature nobody needs monitored overnight, cutting the daily run count roughly in half.
- Pair with basic alerting if a missed run matters — a gap noticeably longer than 20 minutes between runs is easy to detect and usually indicates a stuck or failed job.
Frequently Asked Questions
- Does */20 * * * * really run every 20 minutes evenly?
- Yes — since 20 divides evenly into 60, the step value produces a genuinely consistent rolling interval: :00, :20, :40 every hour, with no drift or uneven gaps.
- How is */20 different from */45?
- 20 divides 60 evenly (three equal 20-minute slices), while 45 doesn't (60 ÷ 45 leaves a remainder), so */45 only fires at :00 and :45 — an uneven 45/15-minute alternating gap rather than a true rolling interval. */20 doesn't have this problem.
- What's a good use case for every 20 minutes?
- Moderate-frequency polling or sync jobs — checking a queue, refreshing a semi-live dashboard, or syncing external data — where every 15 minutes is unnecessarily frequent but every 30 minutes feels too stale.
Related Tools
Cron Parser
Translate cron expressions to plain English
Cron Cheat Sheet
Quick reference for cron syntax, special characters, and shortcuts
Cron Examples Library
Browse and search common cron expression examples
Cron: Every Other Day
Standard cron can't natively express 'every other day' across month boundaries. See the common day-of-month workaround, its limitations, and alternatives.
Cron: Every Quarter
The cron expression for every quarter is 0 0 1 1,4,7,10 *, firing at midnight on the 1st of January, April, July, and October.
Cron: First Monday (Nth Weekday) of the Month
Standard cron can't natively express 'first Monday of the month' — see why the common day-range trick is actually wrong, and the correct workaround.