GitHub Actions Schedule Checker

Validate your GitHub Actions schedule cron expression. All times are in UTC, exactly as GitHub runs them.

Important: GitHub Actions schedule events always run in UTC. Your local time may differ. All results below are shown in UTC.

    How GitHub Actions Schedule Works

    GitHub Actions uses standard POSIX cron syntax (5 fields: minute, hour, day-of-month, month, day-of-week) for its schedule trigger. Unlike most cron implementations, GitHub Actions always runs in UTC — you cannot configure a timezone. This is the most common source of scheduling mistakes: developers write 0 9 * * * thinking it means 9 AM local time, but it runs at 9:00 UTC regardless of their timezone.

    Cron Syntax Reference

    • * — Every value (every minute, every hour, etc.)
    • , — List of values: 1,3,5 = Monday, Wednesday, Friday
    • - — Range: 9-17 = 9 AM through 5 PM UTC
    • / — Step: */15 = every 15 units

    Supported Macros

    GitHub Actions also supports these shorthand macros in the cron field:

    • @yearly / @annually0 0 1 1 * (January 1st at midnight UTC)
    • @monthly0 0 1 * * (1st of every month at midnight UTC)
    • @weekly0 0 * * 0 (Every Sunday at midnight UTC)
    • @daily / @midnight0 0 * * * (Every day at midnight UTC)
    • @hourly0 * * * * (Every hour at minute 0)

    Common Pitfalls

    • UTC-only execution — There is no timezone setting. Convert your desired local time to UTC before writing the expression.
    • Minimum interval — GitHub recommends schedules no more frequent than every 5 minutes. More frequent schedules may be throttled or skipped entirely.
    • Delayed execution — Scheduled workflows may be delayed during periods of high load on GitHub Actions. They are not guaranteed to run at the exact specified time.
    • Inactive repositories — GitHub automatically disables scheduled workflows in repositories with no activity for 60 days. You must re-enable them manually.

    Example Workflow

    A typical .github/workflows/scheduled.yml file looks like this:

    on: schedule: - cron: '0 9 * * 1-5' jobs: my-job: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - run: echo "Running weekdays at 9:00 UTC"
    Pro Tip: You can define multiple cron entries under schedule to trigger the same workflow at different times. Each entry is evaluated independently.
    Disclaimer: This tool calculates ideal execution times based on the cron expression. Actual GitHub Actions run times may vary due to runner availability and platform load. Predictions are shown in UTC.