Cron Expression for Once a Year

Once a year — once a year
0 0 1 1 *

Cron reads this as: at 00:00, on day-of-month 1, in month January.

Next 5 runs

Computed in your browser's local time zone. Cron itself evaluates against the server's zone, which on most cloud hosts is UTC — see time zones & DST if that distinction matters here.

When to use this schedule

Midnight on 1 January. Annual resets, yearly archival, licence and certificate rollovers. @yearly and @annually are both accepted shorthands.

What to watch out for

A job that runs once a year is a job that has almost certainly bit-rotted by the time it fires. The host will have been rebuilt, the credentials rotated, the script's dependencies moved on. Treat the annual run as a scheduled reminder rather than a reliable mechanism: test it manually a week beforehand, and make sure someone is expecting it. Fire-and-forget is not a viable strategy at this frequency.

The crontab line

0 0 1 1 * /usr/local/bin/your-job.sh >> /var/log/your-job.log 2>&1

Redirect the output somewhere you will actually read it — by default cron mails it, and on a host with no mail transport that means it is discarded. See the crontab guide for the surrounding syntax.

Related schedules

Variations on once a year
ExpressionSchedule
@yearlyShorthand for the same schedule
0 0 31 12 *Year end instead of year start
0 0 1 1,4,7,10 *Quarterly instead

Build your own

Need something this page does not cover? Compose it field by field in the visual builder, or paste an expression you already have into the explainer for a per-field breakdown. The examples library collects sixty schedules in one place, and the guides cover crontab syntax, time zones, troubleshooting and production practices.