What Does */15 * * * * Mean in Cron?
*/15 * * * * runs a job every 15 minutes — at :00, :15, :30, and :45 of every hour, every day.
Breaking down the expression
A cron expression has five fields, left to right:
*/15 * * * *
│ │ │ │ │
│ │ │ │ └── day of week (0-6, Sun-Sat)
│ │ │ └──── month (1-12)
│ │ └────── day of month (1-31)
│ └──────── hour (0-23)
└───────────── minute (0-59)
Here only the minute field is constrained. The other four are * (any), so the rule applies every hour of every day.
How the / step syntax works
*/15 means "every value in the range that's divisible by the step." For minutes, that expands to 0,15,30,45. The two forms are exactly equivalent — */15 is just shorter.
The step doesn't have to divide evenly. */25 in the minute field fires at :00, :25, and :50 — then resets at the top of the next hour, so the last gap is only 10 minutes. If you need a strict "every N minutes" interval where N doesn't divide 60, cron can't express it in one line.
Common variations
*/5 * * * * # every 5 minutes
*/30 * * * * # every 30 minutes (:00 and :30)
0 */2 * * * # every 2 hours, on the hour
*/15 9-17 * * * # every 15 minutes, but only 9am-5pm
*/15 * * * 1-5 # every 15 minutes on weekdays
Note the third example: the minute field is 0, not */15. A common mistake is writing * */2 * * *, which runs every minute of every second hour — 60 runs instead of 1.
A note on the first run
Cron aligns steps to the top of the range, not to when you saved the crontab. If you install */15 * * * * at 10:07, the first run is at 10:15 — not 10:22.
Decode any expression instantly
Reading five fields by eye gets error-prone once ranges and steps mix. Paste any expression into the cron expression explainer to see a plain-English description and the next scheduled run times.
For more ready-made schedules, see common cron examples, or start from the basics with how to read a cron expression.
Got a config file to check?
Open the config toolkit →