Skip to content
Dialect

GitHub Actions

Build GitHub Actions workflow schedules with the 5-minute minimum, UTC-only constraint, and peak-load-delay awareness.

Last verified: 2026-05-15

Five fields, UTC only

GitHub Actions on.schedule uses standard 5-field Unix cron. There is no timezone field. All schedules are interpreted in UTC. A schedule of 0 9 * * * means "09:00 UTC every day" — which is 11:00 in Berlin (summer time) or 10:00 (winter time).

The 5-minute minimum

GitHub enforces a minimum interval of 5 minutes. */2 * * * * is silently rejected at run time — the schedule will exist but never fire. */5 works; */4 does not. cronpreview rejects this at validation time so you find out at edit time, not at production fail time.

Peak-load delays

GitHub Actions schedulers run as best-effort. During peak load (top of the hour is the worst), scheduled workflows can be delayed by 10+ minutes or skipped entirely. If your job must run at exactly 0 12 * * *, offset by a few minutes — 17 12 * * * sees much less contention.

workflow_dispatch as backup

Always add a workflow_dispatch trigger alongside schedule so you can manually fire the workflow when GitHub's scheduler skips a run. If you depend on this job for compliance or release-cadence reasons, also have an external monitor (Better Stack, Healthchecks.io) ping after each expected run.

Default branch only

Scheduled workflows only run on the default branch. A schedule trigger in a PR's workflow file does not start firing until the PR is merged to the default branch.

Found something inaccurate? Let us know via the contact form.

Try it

loading builder…

Related recipes

Read next