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.
- Calculating…
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
| Expression | Schedule |
|---|---|
@yearly | Shorthand 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.