Migrating production infrastructure? Get up to ₹10,000 in migration credits. Apply now
voroaBlog
Background Workers

Cron Job Every 5 Minutes: Expressions, Traps and Limits

· · 6 min read

Cron job every 5 minutes, the expressions, the uneven-gap trap and each platform's minimum interval

A cron job every 5 minutes is written */5 * * * *. That one line answers most searches, and the table below covers the other common intervals.

The rest of this guide covers what catches people out later. Some step values give uneven gaps, a slow job can overlap the next run, and several hosting platforms will not run a job that often at all.

On this page

Advertisement

Every-N-minutes expressions

Schedule Expression Runs per day
Every minute * * * * * 1,440
Every 2 minutes */2 * * * * 720
Every 5 minutes */5 * * * * 288
Every 10 minutes */10 * * * * 144
Every 15 minutes */15 * * * * 96
Every 30 minutes */30 * * * * or 0,30 * * * * 48
Every hour 0 * * * * 24
Every 5 minutes, office hours only */5 9-18 * * 1-5 120 on weekdays
Every 5 minutes, offset by 2 2-59/5 * * * * 288

The offset form is useful when many jobs share a server. Starting at minute 2 keeps your job away from the busy top of the hour.

What */5 actually means

*/5 in the minute field means “every minute divisible by 5”: 0, 5, 10 and so on up to 55. It is tied to the clock, not to when you saved the job.

So a job added at 10:03 first runs at 10:05, not 10:08. And it always runs at the same minutes past the hour, which makes logs easy to read.

The step values that give uneven gaps

Steps restart at the top of every hour. That is fine for numbers that divide 60 evenly: 2, 3, 4, 5, 6, 10, 12, 15, 20 and 30. For any other step, the last gap of the hour comes out shorter.

We generated the real run times for a day with the croniter library, which follows standard cron rules:

Expression First runs Gaps you actually get Runs per day
*/5 * * * * 00:05, 00:10, 00:15 always 5 min 288
*/7 * * * * 00:49, 00:56, 01:00, 01:07 7 min, then 4 min at each hour 216
*/25 * * * * 00:25, 00:50, 01:00, 01:25 25, 25, then 10 min 72
*/45 * * * * 00:45, 01:00, 01:45, 02:00 alternating 45 and 15 min 48
0 */5 * * * (hours) 05:00, 10:00, 15:00, 20:00, 00:00 5 h, then 4 h at midnight 5

Diagram: run times within one hour for */5, */7 and */45 - */5 runs evenly every 5 minutes, */7 leaves a 4-minute gap before the hour, */45 alternates 45 and 15 minutes

If you need “every 7 minutes” exactly, cron cannot express it. Run every minute and let the script skip until 7 minutes have passed since its last run, or use a scheduler with an interval trigger, such as APScheduler in Python.

When a 5-minute job takes 7 minutes

Cron starts each run on time, whether or not the last one has finished. A job that usually takes 2 minutes but once takes 7 will still be running when the next copy starts.

Two copies working on the same rows can send duplicate emails or corrupt a count. On a Linux server, flock stops the second copy from starting:

bash
*/5 * * * * flock -n /tmp/sync.lock /usr/local/bin/sync.sh

flock -n exits at once if the lock is held, so an overlapping run is skipped rather than queued. In application code, the same idea is a lock key in Redis or your database. Our Node.js cron tests measured three copies of a slow job running at once without one.

Can cron run every 30 seconds?

Standard cron’s smallest unit is one minute. To run every 30 seconds, add a second entry that sleeps first:

bash
* * * * * /usr/local/bin/task.sh
* * * * * sleep 30; /usr/local/bin/task.sh

If you need sub-minute timing regularly, a long-running process with an in-app scheduler or a queue is usually cleaner than stacking cron lines. Some libraries, such as node-cron, accept an optional seconds field.

Each platform’s minimum interval

Your cron expression is only half the story. Many hosts set a floor on how often a job may run, and some do not promise exact timing.

Platform Shortest interval Timing Timezone
Linux cron on your own server 1 minute On the minute Server’s timezone
GitHub Actions schedule 5 minutes Can be delayed at busy times, especially the top of the hour UTC by default
Vercel Cron Jobs, Hobby Once a day Anywhere within the hour (up to 59 minutes late) UTC
Vercel Cron Jobs, Pro 1 minute Per minute UTC
Heroku Scheduler 10 minutes Expected but not guaranteed; can rarely skip or run twice UTC
Voroa Cron Job or Scheduled Task 1 minute Usually on time; can run late or overlap; skipped while the service is stopped IST

Sources: the GitHub Actions schedule docs, the Vercel cron usage page and the Heroku Scheduler documentation, all checked on 7 November 2026. Vercel describes Cron Jobs as moving to a newer Schedules feature.

Two of these matter for India. On a UTC platform, */5 9-18 * * 1-5 means 2:30 pm to 12:25 am IST, not office hours. And on GitHub Actions, scheduled workflows in a public repository are turned off after 60 days with no activity.

Run a 5-minute job on Voroa

Voroa runs Cron Jobs and Scheduled Tasks on schedules down to every minute, and the presets include Every minute and Hourly. Schedules are in India Standard Time, so */5 9-18 * * 1-5 means 9 am to 6:55 pm IST on weekdays.

Runs happen inside a service that stays running, so a slow run can overlap the next one. Use a lock as shown above. Setup is in scheduling a task on Voroa, and long-running processes are covered on the background workers page. Not sure which type your code needs? See worker or cron job.

FAQ

How do I run a cron job every 5 minutes? Use */5 * * * *. It runs at minutes 0, 5, 10 and so on, every hour, 288 times a day.

Is */5 the same as “5 minutes after the last run”? No. It runs at clock minutes divisible by 5. A job added at 10:03 first runs at 10:05.

Why does my */7 job run 4 minutes apart sometimes? Steps restart every hour. After minute 56, the next run is minute 0, only 4 minutes later.

How do I stop a cron job from overlapping? On Linux, wrap the command in flock -n. In code, take a lock in Redis or your database before doing the work.

Can GitHub Actions run a cron every minute? No. The shortest interval is every 5 minutes, and runs can be delayed during busy periods.

What timezone does cron use? The server’s, which is usually UTC on cloud platforms. To run at 9 am IST on a UTC server, write the UTC time: 30 3 * * *. Or use a platform that schedules in IST.

Checked 7 November 2026. Found something out of date? Write to [email protected].

Advertisement