*/10 * * * * — What does this cron expression mean?
*/10 * * * * fires six times an hour on the 10-minute marks. It works cleanly because 10 divides 60 evenly. That is worth understanding, because the same pattern with a step that does not divide 60, such as */7 or */25, silently produces uneven gaps.
*/10 * * * *
Run the job every 10 minutes: at minute 0, 10, 20, 30, 40 and 50 of every hour.
Frequency: 6 runs per hour, 144 per day. cronstrue reads it as “Every 10 minutes”.
Open */10 * * * * in the Cron BuilderField-by-field breakdown
*/10
Minute
0–59
*
Hour
0–23
*
Day of month
1–31
*
Month
1–12
*
Day of week
0–6
- Minute*/10 — every 10th minute starting at 0: 0, 10, 20, 30, 40, 50.
- Hour* — every hour.
- Day of month* — every day of the month.
- Month* — every month.
- Day of week* — every day of the week.
Next run times
Example: if it is Monday, 5 Jan 2026, 09:07 UTC, the next runs of */10 * * * * (UTC) are:
- #1Mon, 5 Jan 2026, 09:10 UTC
- #2Mon, 5 Jan 2026, 09:20 UTC
- #3Mon, 5 Jan 2026, 09:30 UTC
- #4Mon, 5 Jan 2026, 09:40 UTC
- #5Mon, 5 Jan 2026, 09:50 UTC
Live times from your current clock replace this example once the page loads. Cron uses the scheduler's timezone; most cloud servers, GitHub Actions and AWS EventBridge rules use UTC.
*/10 * * * * in Quartz, AWS, GitHub Actions, Kubernetes and systemd
Crontab (Linux / macOS)
*/10 * * * * /usr/local/bin/job.sh >> /var/log/job.log 2>&1Standard 5-field syntax used by Vixie cron, cronie, busybox crond and most libraries (node-cron, APScheduler, robfig/cron).
Quartz (6 and 7 fields)
0 0/10 * * * ?
0 0/10 * * * ? *
# Spring @Scheduled
@Scheduled(cron = "0 */10 * * * *")Quartz uses 0/10 for “start at 0, every 10”. You can shift the start with 5/10 (minutes 5, 15, 25 …).
AWS EventBridge
cron(0/10 * * * ? *)
# interval alternative
rate(10 minutes)Both are valid. Use the cron form when you need runs on the :x0 marks, and the rate form when you only need a 10-minute interval.
GitHub Actions
on:
schedule:
# Every 10 minutes, evaluated in UTC
- cron: '*/10 * * * *'Valid, but treat GitHub's schedule as best-effort: runs can arrive several minutes late, so two consecutive runs may be anywhere from about 5 to 20 minutes apart.
Kubernetes CronJob
apiVersion: batch/v1
kind: CronJob
metadata:
name: every-10-minutes
spec:
schedule: "*/10 * * * *"
timeZone: "Etc/UTC"
concurrencyPolicy: Forbid
startingDeadlineSeconds: 180
jobTemplate:
spec:
template:
spec:
restartPolicy: OnFailure
containers:
- name: job
image: alpine:3.20
command: ["/bin/sh", "-c", "echo running"]Forbid plus a 3-minute deadline keeps at most one Job running and drops runs that could not start in time.
systemd timer
# /etc/systemd/system/myjob.timer
[Unit]
Description=Every 10 minutes
[Timer]
OnCalendar=*:0/10
Persistent=true
[Install]
WantedBy=timers.targetNormalises to *-*-* *:00/10:00. Add RandomizedDelaySec=60 on many hosts to avoid all of them firing in the same second.
When to use every 10 minutes
- Syncing data from a SaaS API whose quota is roughly 150 calls per day.
- Rebuilding a small RSS feed, status page or leaderboard.
- Expiring reservations or carts that are held for 10–30 minutes.
- Collecting disk usage or certificate expiry metrics on hosts without an agent.
Common pitfalls with */10 * * * *
Steps that do not divide 60 reset every hour
The step restarts at minute 0 of each hour. */10 is fine, but */7 runs at 0, 7, 14 … 49, 56 and then 0 again, so there is a 4-minute gap at the top of each hour. If you need an exact interval that does not divide 60, use rate() on AWS, OnUnitActiveSec in systemd or an in-process scheduler.
# Uneven: 0,7,14,21,28,35,42,49,56 → gap of 4 min at :56→:00
*/7 * * * *
# Even: always 10 minutes apart
*/10 * * * **/10 is not the same as 10
10 * * * * runs once an hour at minute 10, and * 10 * * * runs every minute between 10:00 and 10:59. Read each field position carefully: the first is minutes, the second is hours.
Offset away from :00 when the job hits a shared resource
5-59/10 keeps the same frequency on the :05, :15, :25 … marks, away from the hourly and quarter-hour jobs that pile up on :00 and :30.
5-59/10 * * * * /usr/local/bin/sync-feed.shRelated cron expressions
Need a different schedule? Paste */10 * * * * into the Cron Builder and edit it, browse all cron expressions, read the cron syntax guide or copy from the cron examples list.
Frequently Asked Questions
What does */10 * * * * mean in cron?▾
Every 10 minutes. The minute field */10 expands to 0, 10, 20, 30, 40, 50 and every other field is *, so the job runs 6 times an hour and 144 times a day.
How do I run a cron job every 10 minutes starting at minute 5?▾
Use 5-59/10 * * * *. That runs at minutes 5, 15, 25, 35, 45 and 55. In Quartz the same schedule is 0 5/10 * * * ?.
What is the difference between */10 and 0/10?▾
In Quartz, Spring and AWS they mean the same thing: start at 0 and step by 10. Classic crontab only documents steps on * or on a range, so 0/10 is rejected or misread by some cron daemons. In a crontab, write */10 or 0-59/10.