ClockOrbit

Free tool

GitHub Actions cron picker

Build a GitHub Actions schedule, validate it against GitHub's UTC-only subset of Unix cron, and see the next runs in any timezone. Includes the two-cron pattern that keeps a 9am London job firing through both BST and GMT.

Pick a preset

Valid Unix 5-field cron. Safe to paste into a GitHub Actions workflow.

YAML to paste

on:
  schedule:
    - cron: '*/15 * * * *'
Inactive repos pause cron.If your repo has no commits or activity for 60 days, GitHub disables scheduled workflows until someone interacts with the repo again.
Heavy minutes lag.Schedules like 0 * * * * and */5 * * * * pile up in the same minute across many repos. GitHub adds jitter, but peak-hour lag of 5 to 20 minutes is normal.

Next 50 runs

#UTCUTCNotes
1Sun 2026-11-08 05:30 UTCSun 2026-11-08 05:30 ZSun
2Sun 2026-11-08 05:45 UTCSun 2026-11-08 05:45 ZSun
3Sun 2026-11-08 06:00 UTCSun 2026-11-08 06:00 ZSun
4Sun 2026-11-08 06:15 UTCSun 2026-11-08 06:15 ZSun
5Sun 2026-11-08 06:30 UTCSun 2026-11-08 06:30 ZSun
6Sun 2026-11-08 06:45 UTCSun 2026-11-08 06:45 ZSun
7Sun 2026-11-08 07:00 UTCSun 2026-11-08 07:00 ZSun
8Sun 2026-11-08 07:15 UTCSun 2026-11-08 07:15 ZSun
9Sun 2026-11-08 07:30 UTCSun 2026-11-08 07:30 ZSun
10Sun 2026-11-08 07:45 UTCSun 2026-11-08 07:45 ZSun
11Sun 2026-11-08 08:00 UTCSun 2026-11-08 08:00 ZSun
12Sun 2026-11-08 08:15 UTCSun 2026-11-08 08:15 ZSun
13Sun 2026-11-08 08:30 UTCSun 2026-11-08 08:30 ZSun
14Sun 2026-11-08 08:45 UTCSun 2026-11-08 08:45 ZSun
15Sun 2026-11-08 09:00 UTCSun 2026-11-08 09:00 ZSun
16Sun 2026-11-08 09:15 UTCSun 2026-11-08 09:15 ZSun
17Sun 2026-11-08 09:30 UTCSun 2026-11-08 09:30 ZSun
18Sun 2026-11-08 09:45 UTCSun 2026-11-08 09:45 ZSun
19Sun 2026-11-08 10:00 UTCSun 2026-11-08 10:00 ZSun
20Sun 2026-11-08 10:15 UTCSun 2026-11-08 10:15 ZSun
21Sun 2026-11-08 10:30 UTCSun 2026-11-08 10:30 ZSun
22Sun 2026-11-08 10:45 UTCSun 2026-11-08 10:45 ZSun
23Sun 2026-11-08 11:00 UTCSun 2026-11-08 11:00 ZSun
24Sun 2026-11-08 11:15 UTCSun 2026-11-08 11:15 ZSun
25Sun 2026-11-08 11:30 UTCSun 2026-11-08 11:30 ZSun
26Sun 2026-11-08 11:45 UTCSun 2026-11-08 11:45 ZSun
27Sun 2026-11-08 12:00 UTCSun 2026-11-08 12:00 ZSun
28Sun 2026-11-08 12:15 UTCSun 2026-11-08 12:15 ZSun
29Sun 2026-11-08 12:30 UTCSun 2026-11-08 12:30 ZSun
30Sun 2026-11-08 12:45 UTCSun 2026-11-08 12:45 ZSun
31Sun 2026-11-08 13:00 UTCSun 2026-11-08 13:00 ZSun
32Sun 2026-11-08 13:15 UTCSun 2026-11-08 13:15 ZSun
33Sun 2026-11-08 13:30 UTCSun 2026-11-08 13:30 ZSun
34Sun 2026-11-08 13:45 UTCSun 2026-11-08 13:45 ZSun
35Sun 2026-11-08 14:00 UTCSun 2026-11-08 14:00 ZSun
36Sun 2026-11-08 14:15 UTCSun 2026-11-08 14:15 ZSun
37Sun 2026-11-08 14:30 UTCSun 2026-11-08 14:30 ZSun
38Sun 2026-11-08 14:45 UTCSun 2026-11-08 14:45 ZSun
39Sun 2026-11-08 15:00 UTCSun 2026-11-08 15:00 ZSun
40Sun 2026-11-08 15:15 UTCSun 2026-11-08 15:15 ZSun
41Sun 2026-11-08 15:30 UTCSun 2026-11-08 15:30 ZSun
42Sun 2026-11-08 15:45 UTCSun 2026-11-08 15:45 ZSun
43Sun 2026-11-08 16:00 UTCSun 2026-11-08 16:00 ZSun
44Sun 2026-11-08 16:15 UTCSun 2026-11-08 16:15 ZSun
45Sun 2026-11-08 16:30 UTCSun 2026-11-08 16:30 ZSun
46Sun 2026-11-08 16:45 UTCSun 2026-11-08 16:45 ZSun
47Sun 2026-11-08 17:00 UTCSun 2026-11-08 17:00 ZSun
48Sun 2026-11-08 17:15 UTCSun 2026-11-08 17:15 ZSun
49Sun 2026-11-08 17:30 UTCSun 2026-11-08 17:30 ZSun
50Sun 2026-11-08 17:45 UTCSun 2026-11-08 17:45 ZSun

Why GitHub Actions cron is harder than it looks

On paper, GitHub Actions uses the same 5-field Unix cron you have used for years. In practice, three quirks turn a five-second config change into an outage. First, theon.schedule.cron trigger has no timezone: field. Every expression runs in UTC, full stop, which is the single biggest reason teams in London ship "every weekday at 9am" workflows that fire at 10am for half the year.

Second, GitHub silently raises any cadence under 5 minutes to */5. Write*/1 * * * * and you will not get an error, you will get a schedule that runs twelve times an hour instead of sixty. The picker above flags this for you.

Third, scheduled workflows pause themselves on inactive repos. After 60 days with no commits, no PRs, no manual interaction, GitHub disables the schedule until somebody does something. If you run a nightly mirror or a weekly digest off a repo that nobody touches, the job goes dark and you do not get an email. The cure is to land a noop commit (or trigger a manual run) every couple of months.

The two-cron pattern for non-UTC schedules

Because GitHub Actions has no timezone field, every "9am London" workflow needs to shift its UTC hour twice a year. The fix is two cron lines and a comment, not one cron and a hope.

London during GMT (winter) is UTC+0, so 9am London is 9am UTC. London during BST (summer) is UTC+1, so 9am London is 8am UTC. Split your schedule by month: one cron covers the winter months at 0 9, the other covers the summer months at0 8. The picker above generates the snippet for you with the right comments.

There is a small honesty tax. DST switches on the last Sunday of March and the last Sunday of October, not on month boundaries. For the two or three weekdays between the month boundary and the actual DST switch, your job will fire an hour off. If precise wall-clock timing matters, run the workflow through a self-hosted runner withTZ=Europe/London set, or use the time zone converter to double-check the days that straddle the cliff.

What heavy minutes do to your job lag

Every workflow on GitHub that schedules 0 * * * * wakes up at the same instant. So does every */5 * * * *, every 0 0 * * *, every round number. GitHub adds jitter to spread the load, but during peak hours the five-to-twenty minute lag is real and undocumented.

If your job needs to start promptly, do not pick the round minute. 3 * * * * runs once an hour at minute 3 and lands almost on time, because almost nobody else picked it. 0 * * * * shares its slot with everyone in the world who took the obvious answer.

GitHub Actions Cron Picker: BST/GMT Split | ClockOrbit