Cron Job Every 5 Minutes: Expressions, Traps and Limits
Sagar Tayde · · 6 min read
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
- Every-N-minutes expressions
- What */5 actually means
- The step values that give uneven gaps
- When a 5-minute job takes 7 minutes
- Can cron run every 30 seconds?
- Each platform’s minimum interval
- FAQ
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 |

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:
*/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:
* * * * * /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 support@getvoroa.com.