Quick answer
The cron expression for every 5 minutes is */5 * * * *. The */5 in the minute field means every fifth minute starting from 0, so the job runs at :00, :05, :10 and so on through :55, which is 12 times an hour and 288 times a day. The four asterisks leave the hour, day of month, month and day of week unrestricted.
- Live next runs
- Any time zone
- Field-by-field breakdown
- Seven platform snippets
- Daylight saving aware
How to use this schedule
- 1Copy
*/5 * * * *with the Copy expression button. - 2Check Next runs in your time zone to confirm it fires when you expect, including around daylight saving changes.
- 3Pick your platform under Use it on your platform and copy the ready-made crontab line, workflow, manifest or timer.
- 4Need a different time or day? Click Customize to open it in the cron expression generator and change any field.
What does */5 * * * * mean?
The first field is the minute. */5 is a step: take every value the field allows (0–59) and keep every fifth one, starting with the first. That gives 0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55. It is shorthand for writing that list out in full, and 0-59/5 means exactly the same thing.
The schedule is tied to the clock, not to when you saved it. If you install the job at 10:03, the first run is at 10:05, then 10:10. Cron never counts "five minutes since the last run", so the gap only stays exactly five minutes because 5 divides 60 evenly.
To keep the same rhythm but move it off the busiest minutes, shift the start of the step: 2-59/5 runs at :02, :07, :12 … :57.
When should a job run every 5 minutes?
Five minutes is the sweet spot for work that should feel near real time without hammering anything:
- Health checks and uptime pings for internal services
- Draining a retry queue or sending batched notifications
- Refreshing a cache, a sitemap or a materialized view
- Pulling new rows from a partner API that has no webhooks
Before you pick it, check two numbers: how long one run takes, and how many requests 288 runs a day make against any rate-limited API. If a run can take longer than five minutes, add a lock (see the pitfalls below) or choose every 10 minutes. If you only need fresh data during the working day, restrict the hour and weekday fields instead of running all night.
What does each field in */5 * * * * mean?
| Field | Value | Allowed | Meaning |
|---|---|---|---|
| Minute | */5 | 0–59 | every 5 minutes: :00, :05, :10 … :55 |
| Hour | * | 0–23 | every hour |
| Day of month | * | 1–31 | every day of the month |
| Month | * | 1–12, JAN–DEC | every month |
| Day of week | * | 0–7 (0 and 7 are Sunday), SUN–SAT | every day of the week |
Read together: At every fifth minute of every hour (:00, :05, :10 … :55), every day.
How do I adjust */5 * * * * to my own schedule?
Small edits to */5 * * * * cover most real-world needs:
| Expression | What it does |
|---|---|
2-59/5 * * * * | Every 5 minutes, offset to :02, :07 … :57 to avoid the top-of-the-hour rush |
*/5 9-17 * * 1-5 | Every 5 minutes from 09:00 to 17:55, Monday to Friday |
*/5 * * * 1-5 | Every 5 minutes, weekdays only |
*/5 0-5 * * * | Every 5 minutes overnight, from 00:00 to 05:55 |
*/10 * * * * | Every 10 minutes, half as often |
*/5 * * * * * | Every 5 seconds in 6-field syntax for Spring and node-cron (Quartz needs ? in a day field; crontab has no seconds) |
Need something else? Click Customize at the top of the page to open this schedule in the cron expression generator and change any field.
Related schedules: Every minute · Every 10 minutes · Every 15 minutes · Every hour
Browse all schedules in the cron schedule library.
How do I run */5 * * * * in crontab, GitHub Actions, Kubernetes and the cloud?
| Platform | Write it as | Time zone |
|---|---|---|
| Linux crontab | */5 * * * * | Server's time zone; CRON_TZ= in cronie |
| GitHub Actions | - cron: "*/5 * * * *" | UTC by default; add timezone: (IANA name) |
| Kubernetes CronJob | schedule: "*/5 * * * *" | Set timeZone: (1.27+) |
| Cloudflare Workers | */5 * * * * | UTC only; numbers weekdays from 1 = Sunday, so use names |
| Vercel Cron Jobs | */5 * * * * | UTC only; more than once a day needs Pro (Hobby: once a day) |
| AWS EventBridge Scheduler | cron(*/5 * * * ? *) | Takes a time zone; legacy scheduled rules are UTC only |
| systemd timer | OnCalendar=*-*-* *:0/5:00 | Add a zone after the time, e.g. Europe/London |
In a crontab (crontab -e), the full line looks like this:
*/5 * * * * /path/to/job.sh >> /var/log/job.log 2>&1The live panel at the top of the page builds complete, copy-ready files for each platform (workflow, CronJob manifest, wrangler.toml, vercel.json, AWS CLI and systemd units) and can shift the schedule to UTC for platforms that need it.
What can go wrong with */5 * * * *?
- Cron starts the next run even if the previous one is still going. Wrap the command in
flock -n /tmp/job.lock your-commandso a slow run is skipped instead of piling up. - On GitHub Actions, five minutes is the shortest schedule allowed, and busy periods can delay scheduled runs, so don't depend on exact timing there.
- Every
*/5job on the internet fires at :00, :05 and so on. If many of your servers call the same API, offset them with1-59/5,2-59/5and so on. - Cron emails any output to the crontab owner. At 288 runs a day that floods a mailbox, so redirect it:
your-command >> /var/log/job.log 2>&1. - In a zone with daylight saving time, a schedule with
*in the minute or hour field follows the wall clock: the spring-forward night loses an hour of runs and the fall-back night repeats one. Servers on UTC never see this.
Frequently asked questions
Last updated by the Playxoft engineering team.