DEVESSENTIALS

*/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.

In plain English

*/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 Builder

Field-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: next 5 runs

Example: if it is Monday, 5 Jan 2026, 09:07 UTC, the next runs of */10 * * * * (UTC) are:

  1. #1Mon, 5 Jan 2026, 09:10 UTC
  2. #2Mon, 5 Jan 2026, 09:20 UTC
  3. #3Mon, 5 Jan 2026, 09:30 UTC
  4. #4Mon, 5 Jan 2026, 09:40 UTC
  5. #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>&1

Standard 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.target

Normalises 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.sh

Related 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.