Visualize Your GitHub Actions Cron Schedule
Table of Contents
GitHub Actions on: schedule workflows use standard 5-field cron syntax running in UTC. Paste your schedule expression into our free crontab visualizer to see the next 20 UTC run times on a calendar — and instantly convert them to your local timezone.
This guide covers common GitHub Actions scheduling mistakes, the 5-minute minimum interval, inactive repository behavior, and how to debug a schedule that isn't firing.
GitHub Actions on:schedule Syntax
Schedule a workflow by adding on: schedule to your YAML:
on:
schedule:
- cron: '0 9 * * 1-5' # 9 AM UTC, Monday-Friday
Key constraints specific to GitHub Actions:
- UTC only. There is no timezone field. All times are UTC. If you want 9 AM EST, write
14for the hour (UTC-5 in winter) or13in summer (UTC-4 during EDT). - Minimum 5-minute interval. GitHub won't run scheduled workflows more frequently than every 5 minutes.
- No H syntax. Unlike Jenkins, GitHub Actions uses standard cron without hash-based randomization.
- Inactive repo disable. GitHub disables scheduled workflows on repositories with no recent commits (typically 60 days). You must re-enable them manually or commit something.
How to Visualize Your GitHub Actions Schedule
Copy your cron value from the YAML and paste it (without quotes) into the crontab visualizer. The tool shows:
- Next 20 run times displayed in your local browser timezone
- Calendar view showing which dates and times are affected
- Plain English description of the schedule
The visualizer uses your browser's local timezone, which means you can see exactly what UTC times correspond to your local hours. For example, 0 14 * * 1-5 (2 PM UTC, weekdays) will display as 9 AM EST or 10 AM EDT depending on the current date.
Common schedule examples for GitHub Actions:
| Goal | UTC Expression |
|---|---|
| Daily at midnight UTC | 0 0 * * * |
| Daily at 9 AM EST (UTC-5) | 0 14 * * * |
| Weekdays at 8 AM UTC | 0 8 * * 1-5 |
| Every 15 minutes | */15 * * * * |
| Weekly on Sunday midnight UTC | 0 0 * * 0 |
Why Your GitHub Actions Schedule Isn't Firing
Scheduled workflows that stop working are usually one of these issues:
1. Repository marked inactive. GitHub pauses schedules on repos with no commits for ~60 days. Solution: push a commit, or manually disable and re-enable the schedule in Settings → Actions → Scheduled workflows.
2. Workflow file not on the default branch. on: schedule only triggers from workflows on the repository's default branch (usually main or master). A schedule on a feature branch won't run.
3. GitHub Actions delays. GitHub notes that scheduled workflows may run up to 15 minutes late during high-demand periods. 0 9 * * * might not actually fire until 9:10 AM UTC.
4. Syntax error in the cron expression. An invalid expression silently fails. Validate with the visualizer before committing.
5. Multiple schedules in one workflow. You can have multiple cron entries under on: schedule — they all trigger the same workflow. This is intentional but can cause confusion if you added a test schedule and forgot to remove it.
Multiple Cron Schedules in a Single Workflow File
GitHub Actions supports multiple cron entries in one workflow:
on:
schedule:
- cron: '0 8 * * 1-5' # Weekday morning check
- cron: '0 2 * * 0' # Weekly Sunday maintenance
Both schedules trigger the same workflow. Use the github.event.schedule context to detect which schedule fired:
steps:
- name: Check which schedule triggered
run: |
if [ "${{ github.event.schedule }}" = "0 8 * * 1-5" ]; then
echo "Running weekday check"
else
echo "Running Sunday maintenance"
fi
Validate each cron expression separately in the visualizer to confirm both schedules are correct.
Try It Free — No Signup Required
Runs 100% in your browser. No account, no install, no limits.
Open Free Crontab VisualizerFrequently Asked Questions
What timezone does GitHub Actions use for cron schedules?
GitHub Actions uses UTC exclusively for all scheduled workflows. There is no way to specify a different timezone in the YAML. You must convert your desired local time to UTC manually. For example, 9 AM EST = 14:00 UTC in winter and 13:00 UTC in summer (during EDT).
Why did my GitHub Actions scheduled workflow suddenly stop running?
GitHub automatically disables scheduled workflows on repositories with no activity (commits, PRs, etc.) for approximately 60 days. To re-enable, push a commit to the repository, or go to Actions tab, find the disabled workflow, and click "Enable workflow." You can also check the workflow run history to see when the last scheduled run occurred.
Can I trigger a GitHub Actions scheduled workflow manually?
Yes. Add "workflow_dispatch:" to your on: triggers alongside schedule. This adds a "Run workflow" button in the GitHub Actions UI, letting you trigger the scheduled workflow on demand for testing. You can also trigger it via the GitHub API or the gh CLI with "gh workflow run

