Skip to content
DEV TOOLBOX · CRON DIALECT
>cronpreview

Build, validate, and preview cron expressions across Unix, AWS EventBridge, GitHub Actions, Vercel, Kubernetes, Quartz, and Spring — with timezone-correct next-run previews.

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? Email hello@cronpreview.com.

Try it

loading builder…

Related recipes

Read next