GitHub Scheduler
Create reliable recurring GitHub Actions schedules with cron. Generate workflow YAML, validate your expression, and convert local times to GitHub's UTC schedule.
How GitHub Actions scheduling works
GitHub Actions uses a 5-field POSIX-style cron expression in the on.schedule trigger. Scheduled workflows run from the default branch and use UTC.
name: Scheduled Task
on:
schedule:
- cron: '0 9 * * 1-5'
workflow_dispatch:
jobs:
scheduled:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: echo "Scheduled task running"
GitHub Scheduler tools
- GitHub Actions Cron Generator — generate ready-to-copy workflow YAML.
- Cron Validator — check that your 5-field expression is valid.
- Cron Timezone Converter — convert a desired local time to UTC.
- Next Run Calculator — see upcoming execution times.
Common GitHub scheduler examples
| Schedule | Cron |
|---|---|
| Every 5 minutes | */5 * * * * |
| Every hour | 0 * * * * |
| Every day at midnight UTC | 0 0 * * * |
| Weekdays at 9 AM UTC | 0 9 * * 1-5 |
| Every Monday at 8 AM UTC | 0 8 * * 1 |
| First day of every month | 0 0 1 * * |
GitHub Actions cron uses UTC
If you want a workflow to run at a local time, convert that time to UTC before writing the schedule. Daylight-saving changes can affect fixed UTC schedules, so review the conversion when your target timezone changes offset.
For example, 9:00 AM IST is 03:30 UTC, so a weekday schedule can be 30 3 * * 1-5.
Why add workflow_dispatch?
Keep workflow_dispatch beside the schedule so you can manually run and debug a workflow without waiting for the next scheduled execution.
More GitHub Actions cron help
Read the full GitHub Actions cron examples guide for workflow templates, UTC examples, troubleshooting and scheduling patterns.