Cron example · Monthly and yearly

First day of every month in cron

Runs at 00:00 on the 1st of every month.

0 0 1 * * Open in the generator

Day-of-month 1 with wildcard month and weekday gives one run per month. @monthly is the alias. Monthly invoicing, quota resets and archive rotation typically live here.

Be careful when both day-of-month and day-of-week are set: standard cron runs when either matches. 0 0 1 * 1 fires on the 1st of every month and on every Monday, not only when the 1st is a Monday.

Field by field

ValueFieldMeaning
0Minute
0–59
at minute 0
0Hour
0–23
at 00:00
1Day of month
1–31
on day 1
*Month
1–12 or JAN–DEC
every month
*Day of week
0–7 or SUN–SAT (0 and 7 are Sunday)
every day of the week

Next run times

Computed in your browser from the current time, so you can check the schedule against a clock you trust.

Your timezone (local)

  1. Needs JavaScript.

UTC (GitHub Actions, Kubernetes default)

    Variations

    • 0 6 1 * *the 1st at 06:00 · try it
    • 0 0 1,15 * *the 1st and the 15th · see page
    • 0 0 1 1,4,7,10 *first day of each quarter · see page

    Where this expression works

    • Linux and macOS crontab: as written; times follow the system timezone.
    • Kubernetes CronJob: the same five fields; UTC unless spec.timeZone is set.
    • GitHub Actions: the same syntax in UTC, minimum interval five minutes, no @ shortcuts.
    • AWS EventBridge: a different six-field syntax; do not paste this expression unchanged.

    Full platform comparison · Cron tutorial

    FAQ

    How do I run on the first Monday of the month?

    Use 0 0 1-7 * 1 and let the script confirm the weekday, or rely on the OR rule being absent: in most crons, 1-7 in day-of-month with 1 in day-of-week matches days 1–7 or any Monday, so a script-side check is still needed.