crontab.space/cron / @yearly

@yearly

At 12:00 AM, on day 1 of the month, only in January
next: Fri, Jan 1, 12:00 AM UTC

At a glance

meansat 12:00 am, on day 1 of the month, only in january
frequencyoccasional
next runFri, Jan 1, 12:00 AM UTC
syntaxstandard 5-field cron

See it on a calendar

UTC · no schedule to chart
No schedule to chart — fix the expression above to see runs.
less
more

Next runs

Fri, Jan 1, 12:00 AM UTC
Sat, Jan 1, 12:00 AM UTC
Mon, Jan 1, 12:00 AM UTC
Tue, Jan 1, 12:00 AM UTC
Wed, Jan 1, 12:00 AM UTC
Thu, Jan 1, 12:00 AM UTC

Use it in

# /etc/crontab
@yearly  user  /usr/local/bin/your-script.sh
Snippets are templates — replace placeholders with your script and paths.
Going to production? Cron won’t tell you when it fails.
Standard cron silently skips runs when the machine is off, the script crashes, or the network drops. Get an alert the moment a scheduled run misses its window.
Monitor with cronradar

Field by field

min
@yearly
@yearly
minute · hour · day of month · month · day of week

What does @yearly mean?

The cron expression @yearly runs at 12:00 am, on day 1 of the month, only in january. Cron expressions have five fields — minute, hour, day of month, month, and day of week — separated by spaces. Each field controls one piece of the schedule.

When you’d use this

This schedule is a common fit for jobs that need to run on this schedule. Paste it into your crontab, a node-cron call, a Kubernetes CronJob manifest, or a GitHub Actions workflow — the snippets above are ready to copy.

Gotchas

Cron runs in the system’s timezone unless you set TZ or schedule in UTC. Missed runs are not retroactively executed by standard cron — use anacron or systemd timers with Persistent=true if you need catch-up. Day-of-month and day-of-week combine with OR semantics in most cron implementations, which can be surprising.

FAQ

An asterisk matches every valid value for that field. In the minute field it means every minute; in the hour field, every hour, and so on. "* * * * *" runs every minute of every hour, every day.
Both. Standard cron accepts 0 and 7 as Sunday. Day-of-week runs Sunday=0, Monday=1, ..., Saturday=6, with 7 also recognized for Sunday in most implementations.
No. Standard cron only fires at the exact scheduled times — there is no catch-up. If you need missed-run recovery, look at anacron, systemd timers with Persistent=true, or a job scheduler like Quartz.
Quartz uses 6- or 7-field expressions with seconds and optional year, plus extras like "L" (last) and "#" (nth weekday). Standard Unix cron is 5 fields: minute, hour, day-of-month, month, day-of-week.
Cron runs in the timezone of the system or the configured TZ. During DST transitions, a missing hour is skipped and a repeated hour fires twice. Use UTC scheduling for predictable behavior across regions.
© 2026 CronTab.space · Free cron expression validator, crontab generator, and cron job builderCron tells you when a job should run — not whether it actually did. Built by the team at cronradar.com, which pings you when a scheduled run is missed or fails.