🛠️Dev Toolbox
← Back to Blog

The Ultimate Guide to Cron Expressions

cronschedulingdevops
2026-07-13

Cron expressions are the language of scheduled tasks. Five fields that control when something runs. Simple on the surface, but the edge cases will trip you up.

The five fields: minute (0-59), hour (0-23), day of month (1-31), month (1-12), day of week (0-7, 0 and 7 = Sunday). In that order. Every time I forget the order, I reach for a reference.

Special characters:

  • * = every. * * * * * runs every minute.
  • ,/- = list/range/step. 0 9-17 * * 1-5 = every hour, 9 AM to 5 PM, weekdays.
  • / = step. */15 * * * * = every 15 minutes.
  • L = last (day of week or month). 0 0 L * * = midnight on the last day of every month.
  • # = nth occurrence. 0 0 * * 1#2 = second Monday of every month.

Common pitfalls:

  • 0 0 1 * * runs on the 1st of every month, at midnight. That's what you'd expect.
  • 0 0 * * 0 runs every Sunday at midnight. Also what you'd expect.
  • 0 0 1 * 0 runs on the 1st OR on Sunday -- whichever comes first. This is usually NOT what you want.

Special strings:

  • @yearly = 0 0 1 1 * (midnight on Jan 1)
  • @monthly = 0 0 1 * * (midnight on the 1st)
  • @weekly = 0 0 * * 0 (midnight on Sunday)
  • @daily = 0 0 * * * (midnight every day)
  • @hourly = 0 * * * * (every hour on the hour)

Use our cron parser to write and test expressions with human-readable descriptions. Never guess whether your expression is right again.