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 crontab
17 3 * * 1-5Quartz
0 17 3 ? * MON-FRISpring @Scheduled
0 17 3 ? * MON-FRIAWS EventBridge
cron(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.shThings 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 writecron: '*/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_dispatchso 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.