ClockOrbit

Yearly

0 0 1 1 *

Run once a year, midnight on January 1st.

This preview is live: the table below shows the actual next run times for 0 0 1 1 * in your time zone, recomputed in your browser. Change the expression, dialect, or zone to experiment, then copy the result.

Next runs
valid
Upcoming runs
Fri, Jan 1 2027
00:00 UTC
in 55 days
Sat, Jan 1 2028
00:00 UTC
in 420 days
Mon, Jan 1 2029
00:00 UTC
in 786 days
Tue, Jan 1 2030
00:00 UTC
in 1151 days

What 0 0 1 1 * means

0 0 1 1 * is the canonical yearly job, midnight on the 1st of the 1st month, the value @yearly and @annually expand to. Both the day-of-month and month fields are pinned (1 and 1), so it fires exactly once per year at the calendar rollover.

Annual jobs do the work that recurs on the year boundary: resetting yearly counters, archiving the prior year, generating year-end reports, and flipping anything keyed to the calendar year. Because they run so rarely, a bug in a yearly job can lurk for twelve months before anyone notices.

Field-by-field breakdown

Unix cron has five fields. Here is what each one is doing in this expression:

FieldValueMeaning
Minute0minute = 0
Hour0hour = 0
Day of month1day-of-month = 1
Month1month = 1
Day of week*every day-of-week

Every year on January 1st in every scheduler

The same cadence written for the seven cron dialects you are most likely to meet. Copy the line for the system you target, the field count and day-of-week numbering differ between them.

SchedulerExpressionCopy
Unix / crontab0 0 1 1 *
GitHub Actions0 0 1 1 *
Kubernetes CronJob0 0 1 1 *
Vercel Cron0 0 1 1 *
Quartz0 0 0 1 1 ? *
Spring0 0 0 1 1 ?
AWS EventBridge0 0 1 1 ? *

Dialect note: @yearly and @annually both equal 0 0 1 1 * on Unix/Vercel. EventBridge needs the ? and year fields: 0 0 1 1 ? *.

When you would use 0 0 1 1 *

The gotcha worth knowing

Yearly jobs are the hardest to test because they run once. Always make them idempotent and add a manual "run now" path so you can verify them without waiting for January, and so you can re-run if the one annual fire fails.

People also search for

cron every year0 0 1 1 * meaningcrontab yearlycron annually january 1

0 0 1 1 * FAQ

What does the cron expression 0 0 1 1 * mean?

0 0 1 1 * means: Run once a year, midnight on January 1st. 0 0 1 1 * is the canonical yearly job, midnight on the 1st of the 1st month, the value @yearly and @annually expand to. Both the day-of-month and month fields are pinned (1 and 1), so it fires exactly once per year at the calendar rollover.

How do I write "every year on january 1st" in GitHub Actions?

Use 0 0 1 1 * in the schedule's cron field. Yearly jobs are the hardest to test because they run once. Always make them idempotent and add a manual "run now" path so you can verify them without waiting for January, and so you can re-run if the one annual fire fails.

How do I write "every year on january 1st" for AWS EventBridge?

EventBridge uses six fields with a required year and a ? placeholder in one day field: 0 0 1 1 ? *. Wrap it as cron(0 0 1 1 ? *) in the console or CloudFormation.

What is the Quartz equivalent of 0 0 1 1 *?

Quartz is seconds-first with a trailing year, so the equivalent is 0 0 0 1 1 ? *. Remember Quartz numbers Sunday as 1, the opposite of Unix.

Related cron patterns

More cron tools

Browse the full set of cron pattern pages, or jump to the interactive tools: the cron expression builder for designing a schedule from scratch, the cron cheat sheet for a side-by-side reference, the cron timezone translator for moving a schedule between zones and dialects, and the GitHub Actions cron picker for DST-stable CI schedules.