GitHub Actions cron schedule

Scheduled workflows use standard five-field cron, evaluated in UTC. Build the expression, set the preview zone to UTC to see exactly when GitHub fires it, and copy the YAML.

✓ Valid cron

At 03:17, on weekdays (Monday through Friday).

Next 10 runs

Calculating in your browser…

Times are computed in your browser for the selected zone and are informational. The server that runs the job uses its own zone (often UTC) and cron flavour, so verify there.

Same schedule in other dialects

Unix crontab17 3 * * 1-5
Quartz0 17 3 ? * MON-FRI
Spring @Scheduled0 17 3 ? * MON-FRI
AWS EventBridgecron(17 3 ? * MON-FRI *)

Describe it in words, get the expression

Uses AI (Unix dialect). The answer is checked by the same validator before you can apply it.

Workflow YAML

Fix the expression above to generate a working snippet.

on:
  schedule:
    - cron: '17 3 * * 1-5'   # UTC
  workflow_dispatch:       # lets you run it by hand

jobs:
  nightly:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - run: ./scripts/nightly.sh

Things that trip people up

  • UTC only. Convert your local time and remember daylight saving shifts it by an hour twice a year.
  • Quote the expression. * is special in YAML, so write cron: '*/15 * * * *'.
  • Default branch. The schedule is read from the workflow file on the default branch; editing it on a feature branch does nothing.
  • Delays. Runs can start minutes late under load. Avoid minute 0 if timing matters.
  • Add workflow_dispatch so you can trigger the job by hand while testing.

Questions

What time zone does GitHub Actions cron use?
Schedules are evaluated in UTC. To run at 09:00 in New York (UTC−5 in winter, UTC−4 in summer) you schedule 14:00 or 13:00 UTC, and adjust when daylight saving changes, or run hourly and check the local time inside the job.
Why did my scheduled workflow run late or not at all?
Scheduled runs are queued and can be delayed during periods of high load, especially at the top of the hour; some runs may be dropped. Scheduling at an odd minute such as 17 or 43 helps. Workflows only run from the default branch, and in public repositories schedules are disabled after 60 days without repository activity.
What is the shortest interval?
Every 5 minutes (*/5 * * * *). Shorter intervals are not honoured.
Can I use @daily in GitHub Actions?
No. Use the five-field form, for example 0 0 * * * for daily at midnight UTC.