Cron expression for every quarter

0 0 1 */3 *

At 00:00, on the 1st of the month, every 3 months (January, April, July and October).

*/3 in the month field matches January, April, July and October. With day 1 and 00:00, the job runs at the start of each calendar quarter.

Try it and tweak it

Change any field below and the preview updates. Set the time zone to match your server.

✓ Valid cron

At 00:00, on the 1st of the month, every 3 months (January, April, July and October).

Next 10 runs

Calculating in your browser…

Times are computed in your browser for the selected zone and are informational. The server that runs the job uses its own zone (often UTC) and cron flavour, so verify there.

Same schedule in other dialects

Unix crontab0 0 1 */3 *
Quartz0 0 0 1 */3 ?
Spring @Scheduled0 0 0 1 */3 ?
AWS EventBridgecron(0 0 1 */3 ? *)

Add it to your crontab

  1. Open your crontab with crontab -e.
  2. Add one line: 0 0 1 */3 * /full/path/to/command >> /var/log/job.log 2>&1
  3. Save and exit. Cron reloads automatically; confirm with crontab -l.

Need the output silenced, a lock against overlapping runs or a system crontab user column? The generator’s full crontab line builder writes it for you. Already have a crontab? Paste it into the crontab parser to check every job.

Variations

0 0 1 1,4,7,10 *Same schedule as an explicit list
0 0 L 3,6,9,12 ?Last day of each quarter (Quartz/AWS)

In other schedulers

crontab line0 0 1 */3 * /path/to/command
Quartz0 0 0 1 */3 ?
Spring@Scheduled(cron = "0 0 0 1 */3 ?")
AWS EventBridgecron(0 0 1 */3 ? *)
GitHub Actions- cron: '0 0 1 */3 *' (UTC)
Kubernetesschedule: "0 0 1 */3 *"

Questions

What is the cron expression for every quarter?
0 0 1 */3 *. At 00:00, on the 1st of the month, every 3 months (January, April, July and October).
How do I write it in Quartz or Spring?
Add a seconds field and use "?" for the unused day field: 0 0 0 1 */3 ?. In Spring: @Scheduled(cron = "0 0 0 1 */3 ?").
What is the AWS EventBridge version?
cron(0 0 1 */3 ? *). AWS uses six fields with a year at the end and needs "?" in one of the day fields.
How do I set up a cron job to run every quarter?
Run crontab -e, add the line "0 0 1 */3 * /full/path/to/command >> /var/log/job.log 2>&1" and save. Use absolute paths, because cron runs with a minimal PATH. Check it with crontab -l.
What does the / in 0 0 1 */3 * mean?
The slash is a step value: */N means every Nth value counted from the start of the field (0 for minutes and hours, 1 for days and months), not from when the job was created.
Which time zone will it use?
The time zone of the machine or service running cron. GitHub Actions and Vercel use UTC; Kubernetes uses spec.timeZone if set. The preview above lets you pick a zone.