Cron Expression for Every 5 Minutes
The cron expression for every 5 minutes is */5 * * * *. It fires at minute 0, 5, 10 and so on through 55 of every hour — 12 runs an hour, 288 a day — lined up with the clock rather than with when you saved the crontab.
Every 5 minutes.
*/5 * * * *Standard 5-field crontab syntax. Day of month and day of week are OR'd when both are set.
What it does
The work is done by the step in the minute field. * on its own means every value from 0 to 59, and /5 keeps every fifth one, starting from the first. So */5 is shorthand for 0-59/5, which expands to 0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50 and 55. The other four fields are *, so no hour, day or month is excluded.
Five minutes is a common default for jobs that should feel current without running constantly: syncing records from a third-party API, sending queued notification emails in batches, refreshing a cached dashboard, or checking that a certificate or domain hasn't expired. It's frequent enough that a change is picked up quickly, and infrequent enough that a slow run rarely collides with the next one.
Rarely isn't never, though. If a run can take longer than five minutes — a large export, a flaky network call — the next run starts anyway and the two overlap. Wrap the command in flock -n /tmp/job.lock so a new run exits while the previous one still holds the lock, or set concurrencyPolicy: Forbid on a Kubernetes CronJob.
How */5 * * * * works, field by field
| FIELD | VALUE | MEANING |
|---|---|---|
| Minute | */5 | every 5 minutes (0, 5, 10 … 55) |
| Hour | * | every hour |
| Day of month | * | every day of the month |
| Month | * | every month |
| Day of week | * | every day of the week |
Put together, cron reads */5 * * * * as: “Every 5 minutes.”
To see further ahead, paste the expression into the cron calculator, which lists the next ten run times and counts how many times the schedule runs in a year.
Frequently asked questions
Does */5 run five minutes after I save the crontab?
No. Cron matches schedules against the wall clock, so */5 * * * * runs at :00, :05, :10 and so on regardless of when the job was installed. If you save it at 10:03, the first run is at 10:05.
How do I run every 5 minutes but offset from the top of the hour?
Give the step a starting value: 2-59/5 * * * * runs at :02, :07, :12 … :57. Offsetting like this spreads the load when many jobs on the same server would otherwise all start at :00.
Can GitHub Actions run a workflow every 5 minutes?
Five minutes is the shortest interval GitHub Actions accepts for a schedule trigger, and it evaluates the expression in UTC. Scheduled runs can also start late when GitHub is under heavy load, so don't rely on exact timing.