Candid Tools

Cron on the first day of every month

The first day of the month in cron is 0 0 1 * * or @monthly (Unix), 0 0 0 1 * ? in Quartz and Spring; next runs are calculated in your browser.

Unix cron (crontab, GitHub Actions, Kubernetes)
  • 0 0 1 * *
Quartz and Spring (seconds first; valid in both)
  • 0 0 0 1 * ?
AWS EventBridge (minute first, year last)
  • cron(0 0 1 * ? *)

Read by our parser as: At 12:00 AM (midnight), on the 1st of the month. Open in the cron checker

Next 10 runs

Calculating in your browser...

  1. 1 
  2. 2 
  3. 3 

At a glance

Accepts
Nothing to enter - the schedule is preset on the page
Outputs
The expression in Unix, Quartz/Spring and AWS form, plus its next 10 run times
Where it runs
Entirely in your browser, on your device
What leaves your device
Nothing - what you type stays in this tab
Limits
Run times use your browser's timezone or UTC; real schedulers can start a run late
Account
Not required - there is no sign-up
Price
Free, with no watermark and no usage cap
Made by
Visrut

What it means

0 0 1 * * runs at 00:00 on day 1 of every month, the same as @monthly. It's the safe way to do anything monthly, because every month has a 1st (unlike the 29th, 30th or 31st).

When this is the right schedule

Use it when you're closing out the previous month: invoices, usage resets, monthly reports. Remember the job runs at the start of the new month, so it should look back.

When to pick something else

Look elsewhere when the 1st falling on a weekend is a problem (no one there to check the report). Quartz, Spring and AWS have 1W, the first weekday of the month.

Things to watch

First weekday of the month

0 0 9 1W * ? in Quartz or Spring runs at 9:00 on the weekday nearest the 1st, which is never in the previous month: if the 1st is a Saturday, it moves forward to Monday the 3rd. Unix cron has no W.

Don't add a day of week

0 0 1 * 1 in Unix cron doesn't mean "the 1st, if it's a Monday"; it means the 1st and also every Monday, because both day fields are set and cron treats that as OR.

Timezones and "the 1st"

At 00:00 UTC on the 1st it's still the last day of the previous month in the Americas. If the date matters to users in one region, set the schedule's timezone to theirs.

Frequently asked questions

What does 0 0 1 * * mean?

At midnight on the 1st day of every month.

Is @monthly the same as 0 0 1 * *?

Yes in crontab(5) and Kubernetes; in Spring it's 0 0 0 1 * *. GitHub Actions doesn't support @monthly.