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 →