Cron example · Monthly and yearly

Once a year in cron

Runs at 00:00 on 1 January.

0 0 1 1 * Open in the generator

Day 1 of month 1 at 00:00 runs once per year. @yearly and @annually are aliases in implementations that support shortcuts.

Annual jobs are easy to forget and hard to test. Log loudly when they run, and consider a monthly dry run that verifies the job would still succeed.

Field by field

ValueFieldMeaning
0Minute
0–59
at minute 0
0Hour
0–23
at 00:00
1Day of month
1–31
on day 1
1Month
1–12 or JAN–DEC
in January
*Day of week
0–7 or SUN–SAT (0 and 7 are Sunday)
every day of the week

Next run times

Computed in your browser from the current time, so you can check the schedule against a clock you trust.

Your timezone (local)

  1. Needs JavaScript.

UTC (GitHub Actions, Kubernetes default)

    Variations

    • 0 9 1 4 *every 1 April at 09:00 · try it
    • 0 0 1 */3 *every quarter · see page
    • 0 0 1 * *every month · see page

    Where this expression works

    • Linux and macOS crontab: as written; times follow the system timezone.
    • Kubernetes CronJob: the same five fields; UTC unless spec.timeZone is set.
    • GitHub Actions: the same syntax in UTC, minimum interval five minutes, no @ shortcuts.
    • AWS EventBridge: a different six-field syntax; do not paste this expression unchanged.

    Full platform comparison · Cron tutorial

    FAQ

    How do I test a yearly cron job without waiting a year?

    Run the command by hand with the same environment cron uses (env -i, a minimal PATH), or temporarily change the schedule to a minute in the near future and change it back.