Cron every quarter

0 0 1 */3 *

0 0 1 */3 * runs a job at 00:00 on the first day of each calendar quarter: January 1, April 1, July 1 and October 1. The day of month is 1, and */3 in the month field steps through the year three months at a time. 0 0 1 1,4,7,10 * is the same schedule written out.

When it fires

Checked on October 14, 2026, the next five runs are:

Jan 1 2027  Apr 1 2027  Jul 1 2027  Oct 1 2027  Jan 1 2028    (all at 00:00)

The step starts in January

Months are numbered 1 to 12, so */3 counts from 1 and picks 1, 4, 7 and 10. To run in the last month of each quarter instead, start the step at 3: 0 0 1 3-12/3 * runs on March 1, June 1, September 1 and December 1. For the quarter’s last day, where L is supported, 0 0 L 3,6,9,12 * runs on March 31, June 30, September 30 and December 31.

A fiscal year that starts in another month moves the start of the step. With quarters that begin in February, May, August and November, use 0 0 1 2-11/3 *; checked from October 14, its next run is November 1.

Three months between runs

A job that runs four times a year can break in between without anyone noticing, and then the next try is a quarter away. Have it report failures loudly, and run it by hand after changing anything it depends on. On a machine that may be off at midnight on the 1st, plain cron skips that quarter; a systemd timer with Persistent=true runs the missed job at the next boot.

The same schedule elsewhere

  • crontab: 0 0 1 */3 * /usr/local/bin/quarterly.sh. There’s no @quarterly: Vixie cron and cronie reject it.
  • GitHub Actions: cron: '0 0 1 */3 *', in UTC. In a public repository, GitHub disables scheduled workflows after 60 days without repository activity, which is shorter than a quarter.
  • Kubernetes CronJob: schedule: "0 0 1 */3 *".
  • AWS EventBridge: cron(0 0 1 1/3 ? *), or cron(0 0 1 JAN,APR,JUL,OCT ? *).
  • systemd timer: OnCalendar=quarterly, which means *-01,04,07,10-01 00:00:00.
  • Spring @Scheduled: 0 0 0 1 */3 *, or 0 0 0 1 1,4,7,10 *.

Try it in the Cron Builder

At 00:00, on day 1 of the month, every 3 months

Read as a crontab line, where Sunday is 0 or 7.

minutehourday of monthmonthday of week
001*/3*

Next runs

Working out the next runs from your clock…

Runs in your browser. Nothing you enter is sent anywhere.