Skip to main content

Cron Expression Generator & Explainer

Type or paste a cron expression to read it in plain English and see exactly when it will run next. Includes ready-to-paste snippets for a Kubernetes CronJob and a GitHub Actions schedule.

Free, no signup. Runs entirely in your browser; nothing you enter is sent anywhere.

0
Minute
9
Hour
*
Day (month)
*
Month
1-5
Day (week)
Presets

“At 09:00, Monday through Friday”

Next 5 runs

Calculating…

    cronjob.yaml
    apiVersion: batch/v1
    kind: CronJob
    metadata:
      name: my-job
    spec:
      schedule: "0 9 * * 1-5"
      timeZone: "Etc/UTC"
      concurrencyPolicy: Forbid
      jobTemplate:
        spec:
          template:
            spec:
              restartPolicy: OnFailure
              containers:
                - name: job
                  image: busybox:1.36
                  command: ["sh", "-c", "date"]
    .github/workflows/scheduled.yml
    on:
      schedule:
        - cron: "0 9 * * 1-5"  # always UTC

    How to read a cron expression

    A standard cron expression has five fields: minute hour day-of-month month day-of-week. Each field takes a single value (5), a list (1,15), a range (1-5), a step (*/15) or * for every value. Months and weekdays also accept names such as JAN and MON, and both 0 and 7 mean Sunday.

    The rule that trips people up: when both day-of-month and day-of-week are restricted, cron runs when either matches. 0 0 1 * 1 runs on the 1st of every month and every Monday, not only on Mondays that fall on the 1st. This tool follows that rule, so the next-run list shows what cron will really do.

    Time zones: where schedules go wrong

    GitHub Actions schedules always run in UTC, and scheduled workflows can start late when GitHub is busy, so don't rely on them for exact timing. Kubernetes CronJobs use the controller's time zone unless you set spec.timeZone; set it explicitly so a cluster migration doesn't silently move your 02:00 backup. If you're choosing between cron and systemd for a host, read systemd timers vs cron.

    Questions people ask

    What does */5 * * * * mean in cron?

    It runs every 5 minutes: at minute 0, 5, 10 and so on, every hour of every day. The */5 in the minute field means every fifth value starting from 0.

    How do I run a cron job every weekday at 9 a.m.?

    Use 0 9 * * 1-5. The 0 is the minute, 9 is the hour, and 1-5 in the day-of-week field means Monday through Friday. Check which time zone your scheduler uses: GitHub Actions uses UTC.

    What time zone do GitHub Actions cron schedules use?

    Always UTC. A schedule of 0 9 * * * runs at 09:00 UTC, which is a different local time in summer and winter for most of the world. Convert your intended local time to UTC when writing the expression.