Skip to content
cronhelp.me
Guide · Foot-guns

Step larger than the field

Short answer
A step bigger than the field spans no second value, so it just means the starting point. */90 in minutes is not every 90 minutes — cron cannot cross into the next hour.
Wrong"every 90 minutes"
*/90 * * * *
Rightexpress multi-hour intervals in the hour field
0 */3 * * *

A step like */15 means "every 15th value, counting from the start of the field". The catch is that counting never leaves the field. The minute field runs 0–59, so */90 starts at 0, tries to add 90, runs off the end of the range, and stops — leaving a single value, minute 0. It does not mean "every 90 minutes", because cron has no way to carry from minutes into the next hour.

This is flagged as an error rather than a warning because the expression almost certainly does not do what its author believed, and the true behaviour (fire once, at minute 0) is rarely the intent. A step of 0 is likewise invalid — you cannot select "every 0th value".

Each field has its own ceiling: 60 values for minutes and seconds, 24 for hours, 31 for day-of-month, 12 for months, 7 for day-of-week. A step at or above that ceiling collapses to the field's starting value, and a step above it is meaningless.

Intervals that span more than one field have to be expressed in the larger field. "Every 90 minutes" does not divide evenly into an hour and cannot be written as a single standard cron line at all — the closest clean options are 0 */2 * * * (every two hours) or two entries. "Every three hours" belongs in the hour field: 0 */3 * * * fires at 00:00, 03:00, 06:00 and so on. The rule of thumb: keep each step within its field's range, and push longer intervals up to the next field.

Watch the linter flag it live — the finding below appears the moment the expression is entered:

Cron expression5-field
Every 90 minutes
Lint
Errorstep-invalid
This job will NOT run every 90 minutes: the minute field starts over every hour, so '*/90' only ever lands on its first value and the job runs once per hour. Put an interval this long in a larger field instead.
Learn more →
Next runs
#
1
2
3
4
5
6
7
Copy as
All lint rulesSeverity: Error