Skip to main content

Cron every 15 minutes explained

*/15 * * * *

Every 15 minutes, every hour, every day.

Next runs · UTC

Calendar

September 2026 · UTC

0 runs

About this tool

The cron expression for every 15 minutes is */15 * * * *. The minute step */15 resolves to 0, 15, 30 and 45 - the four quarter-hour marks. The job fires 96 times per day, four times an hour.
It's the sweet-spot cadence for most polling jobs: infrequent enough to keep cost and log-noise down, frequent enough for “close to real-time” status checks. Heavier than every 5 minutes is rarely needed; lighter than every hour is rarely useful for monitoring.

Why */15 resolves to four runs an hour

The step operator / in cron means “every Nth value starting from the first valid value”. For the minute field (range 0-59), */15 generates 0, 15, 30, 45. The fifth iteration would be 60, which is out of range, so the cadence resets at the next hour's 0.

That gives you four firings per hour - 4 × 24 = 96 firings per day. Multiply by your platform's per-invocation cost and you have a quick budget estimate.

Every 15 minutes on different platforms

Linux crontab

crontab
*/15 * * * * /path/to/script.sh

Vercel cron jobs

json
{
  "crons": [
    { "path": "/api/cron/poll", "schedule": "*/15 * * * *" }
  ]
}

AWS EventBridge

crontab
cron(*/15 * * * ? *)
# or:
rate(15 minutes)

Kubernetes CronJob

yaml
spec:
  schedule: "*/15 * * * *"
  concurrencyPolicy: Forbid

Spring `@Scheduled`

java
@Scheduled(cron = "0 */15 * * * *", zone = "UTC")
public void pollEverything() { ... }

Spring's cron is 6-field (seconds first), so we add the 0 seconds.

Variations on every 15 minutes

  • */15 9-17 * * 1-5 - every 15 minutes during business hours on weekdays.
  • 5-59/15 * * * * - every 15 minutes offset by 5 (xx:05, xx:20, xx:35, xx:50).
  • */15 0-2,4-23 * * * - every 15 minutes except during 03:00 (see the “except at hour” FAQ).
  • */15 * * * 0,6 - every 15 minutes on weekends only.
  • */5 * * * * - every 5 minutes (3x as frequent).
  • 0 * * * * - every hour (4x less frequent).

When to choose every 15 minutes

Every 15 minutes hits a useful tradeoff: 4 firings per hour is enough to feel responsive without flooding your logs or your upstream API. Use it for:

  • Status checks against external services with rate limits.
  • Cache warming jobs on a steady cadence.
  • Queue drainers with a small backlog window.
  • Cross-region replication catch-up.
  • Heartbeat reporting that needs < 30 minute granularity.

When you need per-minute responsiveness, switch to every 5 minutes or every minute. When per-hour is fine, switch to every hour and save 24x the invocations.

Examples

  • 0 18 * * *
    Every day at 18:00
  • 0 */5 * * *
    Every 5 hours
  • 0 18 * * 1-5
    Weekdays at 18:00
  • 0 0 1 * *
    Once a month, on the 1st at midnight

Cheatsheet

Full cheatsheet
FieldReq.RangeWildcards
minuteyes0-59, - * /
houryes0-23, - * /
day of monthyes1-31, - * /
monthyes1-12 or JAN-DEC, - * /
day of weekyes0-6 or names; some dialects use 0-7 or 1-7 — see Dialects, - * /

Frequently asked questions

Syntax

What is the cron expression for every 15 minutes?

*/15 * * * *. The minute field's step */15 expands to 0, 15, 30 and 45 - four times an hour, 96 times per day. The other fields are wildcards so it fires every hour, every day. Expression: */15 * * * *

Open in editor
Is 0,15,30,45 * * * * the same as */15 * * * *?

Yes - both expand to the same set of minutes. The list form is more explicit; the step form is shorter. Use whichever your team prefers; most schedulers normalise them to the same internal representation. Expression: 0,15,30,45 * * * *

Open in editor
How do I offset an every-15-minutes cron by five minutes?

Use 5-59/15 * * * *. It runs at minute 05, 20, 35, and 50, reducing contention with jobs scheduled on quarter-hour boundaries. Expression: 5-59/15 * * * *

Open in editor

Timing

Does */15 * * * * run at the same time as 'every quarter hour'?

Yes. The four positions (0, 15, 30, 45) are exactly the quarter-hour marks. So */15 * * * * is the canonical 'every quarter hour' cron expression.

How do I run every 15 minutes only during business hours on weekdays?

*/15 9-17 * * 1-5. The hour range 9-17 covers 09:00 through 17:59; the day-of-week range 1-5 is Monday through Friday. The job fires 36 times per weekday (4 times an hour × 9 hours). Expression: */15 9-17 * * 1-5

Open in editor
When exactly does */15 * * * * run?

It runs at minute 00, 15, 30, and 45 of every hour. The cadence is aligned to the clock, not to the job's deployment or completion time. Expression: */15 * * * *

Open in editor
How many times per day does every 15 minutes run?

It normally runs 96 times per day: four times per hour across 24 hours. Local DST transition days can have fewer or more wall-clock occurrences.

Timezones and DST

How does DST affect an every-15-minutes cron?

In a local timezone, spring-forward removes quarter-hour slots and fall-back repeats them. UTC keeps the cadence at 96 wall-clock slots per 24-hour UTC day.

Platforms

Do all platforms support every-15-minutes cron?

Yes - */15 * * * * is supported on every standard cron implementation. Vercel's free Hobby plan caps at once per day; Pro and Enterprise allow tighter schedules. AWS EventBridge accepts cron(*/15 * * * ? *). Kubernetes CronJob, node-cron, Quartz and robfig/cron all handle it natively.

How does every 15 minutes look in node-cron?

Use cron.schedule('*/15 * * * *', callback). This is the portable five-field form; node-cron's optional seconds field is unnecessary for this cadence.

How does every 15 minutes look in Spring @Scheduled?

Use 0 */15 * * * *. Spring requires a leading seconds field, so 0 means fire at second zero of each aligned quarter hour. Expression: 0 */15 * * * *

Open in editor
Can GitHub Actions run every 15 minutes?

Yes. Use */15 * * * *; it is above GitHub Actions' five-minute minimum. Scheduled workflows are UTC by default unless an IANA timezone is configured.

Debugging

What if an every-15-minutes job takes longer than 15 minutes?

The next tick may overlap the prior run. Use a lock, idempotency, or platform concurrency controls such as Kubernetes concurrencyPolicy: Forbid.

Does cron replay missed 15-minute runs after downtime?

Usually not. Traditional cron evaluates the current minute and does not backfill missed ticks; durable schedulers may offer separate misfire behavior.

Crontap

Can Crontap run a job every 15 minutes?

Yes. You can schedule an HTTP job on Crontap with */15 * * * *, then use endpoint-side idempotency if duplicate delivery would be harmful. Expression: */15 * * * *

Open in editor

Write the cron here. Run it on Crontap.

Point Crontap at any URL. Pick any cron. Done.

WordPress, Shopify, Railway, Cloud Run, Vercel, HubSpot, Ghost, your own box. If it answers HTTP, Crontap can drive it on a clock you can read, in the timezone that actually matters, and page you when something breaks.

1.9k+ teams · Free forever tier · No credit card