Cron every 15 minutes: why */15 * * * * runs on the clock
By TechCompare · Updated · How we check
Use */15 * * * * for a job that should run every 15 minutes. It works cleanly because 15 divides 60, so the gaps between runs stay even from one hour to the next.
Calculator
Next runs of */15 * * * *
Example from Mon, Nov 9, 2026 at 8:00 AM.
- Mon, Nov 9, 2026 at 8:15 AM
- Mon, Nov 9, 2026 at 8:30 AM
- Mon, Nov 9, 2026 at 8:45 AM
- Mon, Nov 9, 2026 at 9:00 AM
- Mon, Nov 9, 2026 at 9:15 AM
To run a cron job every 15 minutes, use */15 * * * *. In plain words, that's a job every quarter hour, around the clock. It fires at minutes 0, 15, 30, 45 of each hour, which comes to 96 runs a day. The marks come from the clock, not from how long the last run took.
How this is calculated
Cron reads five fields, and this schedule only changes the first one. The minute field */15 is a step: it starts at the field's lowest value, 0, and counts up by 15 until the field runs out. The other four fields are all *, which matches every value, so the job runs in every hour, on every date, in every month and on every day of the week. Here's a full line that appends the date to a log on each run:
*/15 * * * * date +\%F >> /var/log/poll.log 2>&1The % needs care. Cron treats an unescaped percent sign as a line break, and crontab(5) says a % "will be changed into newline characters" unless a backslash escapes it. Everything after the first one goes to the command as standard input, so date +%F never reaches date whole. The backslash in \%F keeps the percent sign literal. A script file doesn't need the escape, since the rule only applies to the crontab line.
The step starts over at the top of each hour, and it's the first trap to know. */15 is safe because 15 divides 60, so every hour repeats the same marks. */45 is not a 45 minute interval. It matches minutes 0, 45, so the run at :45 is followed by the run at the top of the next hour 15 minutes later. crontab(5) says steps "are evaluated just within the field they are applied to", which explains it. For a true 45 minute interval, cron is the wrong tool, and cron vs systemd timers compares the two.
The schedule is also clock aligned, and it keeps no memory. If the server is down at the :15 mark, that run is lost, and nothing comes back to run it once the server is up. If a missed run matters, the job has to cope with that. Have it save the time of its last successful run, then handle everything since then on its next run.
Cron also reads the server's time zone by default, so the :00, :15, :30 and :45 marks are server time, which may not match your own clock. Cron time zone pitfalls covers how to set the zone and what daylight saving time does to it.
The 5 minute schedule, */5 * * * *, runs more often than this one, 288 times a day against 96. The 30 minute schedule, */30 * * * *, runs less often, at 48 times a day. A job that runs longer than 5 minutes overlaps itself on the 5 minute schedule, but this one gives it 15 minutes before the next start.
Verdict
Keep */15 * * * * for jobs that can wait up to a quarter hour, such as polling an API, refreshing a cache or syncing a mailbox. A change that lands just after a run waits almost 15 minutes for the next one, so check that wait first. If the wait has to be shorter, use a smaller step, like 10 or 5, instead of stretching this one. Skip it for anything that has to react in seconds.
More Cron scenarios
Related guides
Frequently asked questions
How do I run a cron job every 15 minutes?
*/15 * * * * in front of your command, such as */15 * * * * /path/to/job. The job then starts at minutes 0, 15, 30, 45 of every hour. Cron has no special string for a quarter hour, so the step expression is the usual way to write it.Why does */45 not run every 45 minutes?
*/45 matches minutes 0, 45, so the run at :45 is followed by a run 15 minutes later. If the job needs a true 45 minute gap, cron is the wrong tool for it.How many times a day does it run?
Why does my cron line with date +%F fail?
% as a line break and cuts the command short. In the crontab, put a backslash before the percent sign, as in date +\%F. A script file doesn't need it, because a plain % works there.Can I run it only at minutes 5, 20, 35 and 50?
5-59/15 in the minute field. It starts at minute 5, steps by 15, and stops at the end of the field, so it matches minutes 5, 20, 35, 50. That's 4 runs an hour, at different minutes than the plain step.Related tools
Unix Timestamp
Convert between Unix timestamps and human-readable dates.
Use toolCHMOD Configurator
Calculate Linux file permissions using checkboxes or octal numbers, then view the matching symbolic notation.
Use toolText Encoding Converter
Convert text to Base64, binary, hex, URL encoding and HTML entities, and back again.
Use tool