Every 15 Minutes
*/15 * * * * 0 */15 * * * ? */15 * * * * */15 * * * ? * 0 */15 * * * * */15 * * * * Runs every 15 minutes — at :00, :15, :30, :45 of every hour, every day. This is also the every-quarter-hour schedule; the two names describe the same expression.
Use in your stack
# Run every 15 minutes
*/15 * * * * /usr/local/bin/aggregate.sh
{ "cron": "0 */15 * * * ?", "timezone": "UTC" }
apiVersion: batch/v1
kind: CronJob
metadata:
name: aggregate
spec:
schedule: "*/15 * * * *"
jobTemplate:
spec:
template:
spec:
containers:
- name: aggregate
image: my-image:latest
restartPolicy: OnFailure
cron(*/15 * * * ? *)
@Scheduled(cron = "0 */15 * * * *")
public void every15Minutes() { /* ... */ }
on:
schedule:
- cron: '*/15 * * * *'
Next runs
Pick a timezone to see when this expression fires next.
- 012026-08-19T14:30:00.000Z
- 022026-08-19T14:45:00.000Z
- 032026-08-19T15:00:00.000Z
- 042026-08-19T15:15:00.000Z
- 052026-08-19T15:30:00.000Z
- 062026-08-19T15:45:00.000Z
- 072026-08-19T16:00:00.000Z
- 082026-08-19T16:15:00.000Z
- 092026-08-19T16:30:00.000Z
- 102026-08-19T16:45:00.000Z
Variations
Common use cases
- Generating periodic summary reports.
- Rebuilding lightweight caches or precomputed views.
- Aggregating metrics into a time-series store on a quarter-hour boundary.
- Resyncing data from a slower external system.
Gotchas
- Aligns to clock quarter-hours, not to when you added the job.
- "Every quarter hour" and "every 15 minutes" are the same schedule — `*/15 * * * *` covers both. The quarter-hour framing is just the clock-face name for it, and it holds because the firings land on :00, :15, :30 and :45 rather than 15 minutes after whenever the job was installed.
- To run on the quarter-hour beat but *offset* from it — :05, :20, :35, :50 — use `5-59/15 * * * *`. A bare `*/15` can't be shifted; see [cron offset](/guides/cron-offset).
- AWS EventBridge: `*/15 * * * ? *` (6 fields, ? placeholder).
- Quartz: `0 */15 * * * ?` — seconds at the front.
*/15 * * * * runs on the clock’s natural quarter-hour beat. It’s one of the most predictable cron expressions and aligns well with dashboards, reports, and audit windows that humans think about in 15-minute increments.
If you came here looking for “every quarter hour,” this is it — the two phrasings describe the same expression, and the quarter-hour name is accurate because the firings land on the clock’s quarter marks rather than 15 minutes after installation.
That predictability has one cost worth knowing about: */15 anchors at minute 0, so your job shares :00 with every */5, */10, */30 and hourly job on the same host. If the top of the hour is congested, 5-59/15 * * * * keeps the identical four-times-an-hour cadence at :05, :20, :35 and :50. See cron offset for the general technique.
Frequently asked questions
What does `*/15 * * * *` mean?
Will the job always fire on the quarter-hour?
How is this different from `0,15,30,45 * * * *`?
What is the cron expression for every quarter hour?
How do I run every 15 minutes but offset from the quarter hour?
What's the Quartz equivalent?
More minutes schedules
Other patterns on the same cadence — or browse every schedule.