Cron Expression for Once a Year

Midnight on 1 January, 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

These times are in your browser's local time zone. Cron itself uses the server's zone, which on most cloud hosts is UTC. If the difference matters here, see time zones & DST.

When to use this schedule

This runs at midnight on 1 January, which suits annual resets, yearly archival, and licence or certificate rollovers. @yearly and @annually are both accepted shorthands.

What to watch out for

By the time a once-a-year job fires, it has almost certainly bit-rotted. In a year the host may have been rebuilt, the credentials rotated and the script's dependencies changed. 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. At this frequency you cannot set the job up and forget about it.

The crontab line

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

Send the output to a log you will read. By default cron mails it, and on a host with no mail transport that mail is silently dropped. 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

If this page doesn't cover the schedule you need, 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 has sixty schedules in one place, and the guides cover crontab syntax, time zones, troubleshooting and production practices.