GitHub Actions cron generator
Generate, explain and test GitHub Actions cron schedules. Copy the YAML schedule, preview UTC run times, and avoid the common timezone trap.
Generate, explain and test GitHub Actions cron schedules. Copy the YAML schedule, preview UTC run times, and avoid the common timezone trap.
The example above runs at 09:00 UTC Monday to Friday. It is a good fit for weekday report jobs, daily dependency checks, stale issue triage, or a build that should run before the team starts work. If your users or team are in the UK, remember that 09:00 UTC is 09:00 during GMT and 10:00 during BST. For anything customer-facing, put that conversion in the workflow name or a comment so the next person does not "fix" the schedule in the wrong direction.
on:
schedule:
- cron: "0 9 * * 1-5"
workflow_dispatch:
The biggest mistake is treating GitHub Actions cron like local server cron. It is not local time, it does not support every cron extension, and it should not be used as the only trigger for urgent production work. Keep scheduled workflow commands idempotent, because failed jobs may be rerun manually. If the task sends emails, invoices, deploys, or mutates data, add a guard in the workflow or application code so a delayed rerun does not double-send.
# Every weekday at 09:00 UTC 0 9 * * 1-5 # Nightly build at 02:30 UTC 30 2 * * * # First day of the month at 08:00 UTC 0 8 1 * *
Use the main builder to preview upcoming runs, commit the workflow with workflow_dispatch enabled, then run it once manually. Check that secrets, permissions, branch filters, and working directories behave the same way in the scheduled run as they do in a pull request or manual run. If the schedule controls a business process, add a short log line at the start and end of the workflow so failures are easier to diagnose later.
Does GitHub Actions cron use my local timezone? No. Scheduled workflows use UTC, so convert local business times before committing the workflow.
Can I run a workflow every minute? GitHub Actions scheduled workflows are not designed for minute-perfect polling. Use a more suitable scheduler if the timing is critical.
Should I keep workflow_dispatch? Yes for most maintenance jobs. It gives you a manual recovery path when a scheduled run fails or needs to be repeated.
Open the Cron Expression Builder to edit this schedule, explain a pasted expression, and preview upcoming run times.
Every 5 minutesEvery hourGitHub Actions guideCron not running?