Launch Workspace
Standard Cron · 5 fields · Quarter-Hourly

Cron Every 15 Minutes — */15 * * * *

Quarter-hourly schedule. Fires exactly 4 times per hour at fixed clock positions: :00, :15, :30, :45.

Dialect:
5 fields
Plain EnglishPeriodic (Interval)

Every 15 minutes

Runs every 15 minutes. Evaluated according to STANDARD cron specifications.

Popular Presets:

Understanding */15 * * * *

The */15 step expression in the minute field instructs cron to trigger "starting from minute 0, then every 15 minutes". Since 15 divides evenly into 60, the execution set is always {0, 15, 30, 45} — four fixed, predictable clock positions that repeat identically every hour of every day.

Every 15 minutes is a popular cadence for periodic sync tasks: pulling data from external APIs, refreshing Redis cache keys with a 15-minute TTL, generating intermediate analytics snapshots, processing queued email notifications, or running lightweight health aggregations. It balances freshness with resource consumption — 96 executions per day versus 1,440 for an every-minute job.

Restricting to business hours

To run every 15 minutes only during working hours, restrict the hour field: */15 9-17 * * 1-5. This fires at :00/:15/:30/:45 of each hour from 09:00 to 17:00, Monday through Friday. Note that the hour range is inclusive — the schedule fires at hour 17 as well (e.g. 17:00, 17:15, 17:30, 17:45). Adjust to 9-16 if you only want runs up to 4:45 PM.

Platform Examples for */15 * * * *

Ready-to-use snippets for all major platforms and schedulers.

Linux / Crontab5-field POSIX cron
# /etc/cron.d/my-schedule
MAILTO="admin@example.com"
SHELL=/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# Runs every 15 minutes
*/15 * * * * www-data /usr/local/bin/my-script.sh >> /var/log/my-script.log 2>&1
Kubernetesbatch/v1 CronJob manifest
apiVersion: batch/v1
kind: CronJob
metadata:
  name: my-scheduled-job
  labels:
    app: my-scheduled-job
spec:
  schedule: "*/15 * * * *"
  timeZone: "UTC"          # requires Kubernetes v1.27+
  concurrencyPolicy: Forbid
  successfulJobsHistoryLimit: 3
  failedJobsHistoryLimit: 1
  jobTemplate:
    spec:
      template:
        spec:
          containers:
          - name: job
            image: alpine:latest
            command:
            - /bin/sh
            - -c
            - echo "Job executed at $(date)"
          restartPolicy: OnFailure
GitHub Actionsworkflow schedule trigger (UTC only)
name: Scheduled Workflow

on:
  schedule:
    # Runs every 15 minutes — evaluated strictly in UTC
    - cron: "*/15 * * * *"
  workflow_dispatch: # allow manual trigger

jobs:
  run-job:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v4

      - name: Run task
        run: echo "Workflow triggered at $(date)"
Spring Boot@Scheduled — 6-field cron with seconds
@Component
public class ScheduledTask {

    private static final Logger log = LoggerFactory.getLogger(ScheduledTask.class);

    // Runs every 15 minutes
    // Spring uses 6-field cron: sec min hr dom mon dow
    @Scheduled(cron = "0 */15 * * * *", zone = "UTC")
    public void runTask() {
        log.info("Scheduled job started at: {}", LocalDateTime.now());
        // your business logic here
    }
}

Common Variations

Related expressions for similar scheduling needs.

ExpressionDescription
*/15 * * * *Every 15 minutes (all day)
*/15 9-17 * * 1-5Every 15 minutes during business hours (Mon–Fri 9–5)
0,15,30,45 * * * *Every 15 minutes — explicit list (identical to */15)
*/10 * * * *Every 10 minutes
*/20 * * * *Every 20 minutes (3 times per hour)
*/30 * * * *Every 30 minutes
0 * * * *Every hour on the hour

Frequently Asked Questions

Everything you need to know about Cron expressions, syntax rules, and platform nuances.

What is the cron expression for every 15 minutes?

The cron expression "*/15 * * * *" runs at minutes 0, 15, 30, and 45 of every hour — exactly 4 times per hour, 96 times per day. The */15 step means "every 15 minutes starting at 0".

Does */15 * * * * run at exactly :00, :15, :30, :45?

Yes. Because 15 divides evenly into 60, the step expression */15 always fires at the same fixed clock positions: minute 0, minute 15, minute 30, and minute 45. This alignment is guaranteed by how standard five-field Unix/Linux Cron evaluates step expressions — starting from the field minimum (0) and stepping up.

How do I run a cron job every 15 minutes in Linux?

Run "crontab -e" and add the line: "*/15 * * * * /path/to/script.sh". For system-wide jobs, create a file in /etc/cron.d/ with the format: "*/15 * * * * username /path/to/script.sh >> /var/log/script.log 2>&1".

How do I write "every 15 minutes" in Spring Boot?

Use the @Scheduled annotation with a 6-field Spring cron: @Scheduled(cron = "0 */15 * * * *"). The leading 0 is the seconds field — it fires at second :00 of minutes :00, :15, :30, and :45. Alternatively, use @Scheduled(fixedRate = 900000) for a time-based interval that starts after the previous execution completes.

How do I set a Kubernetes CronJob to run every 15 minutes?

Set spec.schedule: "*/15 * * * *" in your batch/v1 CronJob manifest. Add spec.concurrencyPolicy: Forbid to prevent overlapping runs if any single execution takes longer than 15 minutes. Kubernetes v1.27+ supports spec.timeZone for timezone-aware scheduling.

What is a "quarter-hourly" cron schedule?

Quarter-hourly means 4 times per hour. The expression "*/15 * * * *" is exactly quarter-hourly. It is commonly used for report generation, cache refresh, analytics aggregation, and external API polling where near-real-time data is desired without the overhead of continuous processing.