Skip to content

Reading and writing cron schedules

The five cron fields, common expression patterns, and the timezone and overlap issues that make scheduled jobs misfire. Local tools available on wowTools.

A standard cron expression has five fields: minute, hour, day of month, month, and day of week. Each accepts a value, a list, a range, a step, or an asterisk meaning every value. That small grammar produces schedules that are compact to write and surprisingly easy to misread.

Patterns worth recognising

*/15 * * * * runs every fifteen minutes. 0 3 * * * runs at three in the morning. 0 9 * * 1-5 runs on weekday mornings. The awkward case is day-of-month combined with day-of-week, where many implementations treat the two as an OR rather than an AND.

Timezones decide when it really runs

Cron interprets wall-clock time, so the schedule depends on the timezone of the machine or scheduler configuration. Running in UTC removes daylight-saving ambiguity but shifts the local hour twice a year; pinning a local zone keeps the hour and inherits the transitions.

Overlap and idempotency

Nothing in cron prevents a run from starting while the previous one is still going. Long jobs need a lock, and every job should be safe to run twice, because a backward daylight-saving transition repeats an hour.

Read the expression before you deploy

Translate any unfamiliar schedule into plain language with Cron Explainer, check instants with Timestamp Converter, and weigh clock-based against elapsed-time scheduling in Cron vs Interval Scheduling.

Try related tools

Keep exploring