Crontab 1st and 15th of Month (0 0 1,15 * *)

Run a cron job on the 1st and 15th of every month at midnight. Commonly used for semi-monthly payroll and billing cycles.

Monthly0 0 1,15 * *

Detailed Explanation

Running a Cron Job Twice a Month

The expression 0 0 1,15 * * uses a comma-separated list in the day-of-month field to schedule a job on two specific days: the 1st and the 15th of every month at midnight.

Field Breakdown

Field Value Meaning
Minute 0 At minute 0
Hour 0 At midnight
Day of Month 1,15 On the 1st and 15th
Month * Every month
Day of Week * Any day of the week

Semi-Monthly Scheduling

Semi-monthly (twice per month) schedules are distinct from bi-weekly (every two weeks) schedules. Semi-monthly always falls on fixed calendar dates, while bi-weekly is every 14 days regardless of the date.

Common Semi-Monthly Patterns

# Payroll processing (1st and 15th at 6 AM)
0 6 1,15 * * /scripts/process-payroll.sh

# Billing cycle (1st and 15th)
0 0 1,15 * * /scripts/generate-invoices.sh

# Semi-monthly report
0 9 1,15 * * /scripts/send-report.sh

Multiple Days

You can list any number of specific days:

  • 0 0 1,10,20 * * — Three times a month
  • 0 0 5,15,25 * * — Every 10 days (approximately)

Use Case

Semi-monthly scheduling is standard for payroll processing, semi-monthly billing cycles, insurance premium calculations, rent payment reminders, mid-month and end-of-month data reconciliation, and compliance reporting.

Try It — Crontab Cheat Sheet

Open full tool