Cron Expression: Every Year
The yearly expression is 0 0 1 1 * — midnight on January 1st. Paste it above to read it in English and preview the next runs. Below: how to pick a different date and the @yearly shortcut.
The expression
0 0 1 1 * runs a job once a year, at 00:00 on January 1st. Change the month and day-of-month to move it: 0 0 1 7 * runs on July 1st.
Field by field
In order: 0 minute, 0 hour, 1 day-of-month, 1 month (January), * weekday. Setting both a day and a month pins the job to one date each year.
Why the weekday stays *
Leave the fifth field as * for a yearly date job. If you set both day-of-month and day-of-week, cron treats them as an OR on most systems — the job would also fire on that weekday, which is rarely what you want for an annual task.
The @yearly shortcut
@yearly (and its alias @annually) expands to 0 0 1 1 * on schedulers that support it.
FAQ
What is the cron expression for once a year?
0 0 1 1 * runs a job once a year at midnight on January 1st. Change the month and day fields for a different date.
Is @yearly the same as 0 0 1 1 *?
Yes. @yearly and @annually both expand to 0 0 1 1 * — midnight on January 1st.
How do I run a job on a specific date every year?
Set the day-of-month and month fields and leave weekday as *. For June 15th use 0 0 15 6 *.