Generate GitHub Actions schedule cron expressions and complete workflow YAML. GitHub Actions uses standard 5-field cron syntax but always runs in UTC — there is no timezone override. Scheduled workflows may also run up to 15–30 minutes late on GitHub's shared runners.
30 3 * * *. Also note: scheduled workflows on public repos with no recent commits may be automatically disabled after 60 days of inactivity.0 9 * * 1-5name: scheduled-job
on:
schedule:
- cron: '0 9 * * 1-5'
workflow_dispatch: # Allow manual trigger
jobs:
run:
runs-on: ubuntu-latest
timeout-minutes: 10
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Run scheduled task
run: |
echo "Running at $(date -u)"
# Add your commands herename: Multi-Schedule Workflow
on:
schedule:
- cron: '0 9 * * 1-5' # Primary schedule
- cron: '0 0 * * 0' # Also every Sunday midnight
workflow_dispatch:
jobs:
scheduled-task:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: echo "Running scheduled task"Add a schedule: trigger to your workflow YAML with a cron: expression. Place the YAML file in .github/workflows/your-workflow.yml. The workflow runs automatically at the specified UTC times.
Most common reasons: (1) The repo has had no activity for 60 days — GitHub disabled it automatically. (2) The YAML is not in the default branch. (3) The cron syntax is wrong — use this tool to validate. (4) The workflow was manually disabled in the Actions tab.
No. GitHub enforces a minimum interval of 5 minutes (*/5 * * * *). More frequent expressions are throttled or may not fire at all.
Add workflow_dispatch: to your on: block alongside schedule:. This adds a "Run workflow" button in the GitHub Actions UI and lets you trigger it via the API or CLI.
Always UTC. There is no way to set a timezone for GitHub Actions scheduled workflows. Convert your target time to UTC before writing the cron expression.