cron0 0 1,15 * *

Twice Monthly (1st and 15th)

At 00:00, on 1 and 15

Runs on the 1st and 15th of every month at midnight. Common for bi-weekly payroll and billing cycles.

Monthly2 per month runs/day

Want to customize this schedule or validate your own cron expression?

Try it live →

Field Breakdown

FieldValueMeaning
minute00
hour00
day1,151 and 15
month*every month
weekday*every day of week
0
minute
0
hour
1,15
day
*
month
*
weekday

Lint Analysis

Info

This time may fall within a DST transition gap for some timezones. Jobs could be skipped or run twice.

Common Use Cases

  • Bi-weekly payroll
  • Semi-monthly billing
  • Twice-monthly reports

Code Examples

Bash / crontab
# Run your script on schedule: 0 0 1,15 * *
0 0 1,15 * * /path/to/your/script.sh
Node.js (node-cron)
import cron from 'node-cron';

cron.schedule('0 0 1,15 * *', () => {
  console.log('Running scheduled task');
});
Python (APScheduler)
from apscheduler.schedulers.blocking import BlockingScheduler

scheduler = BlockingScheduler()

@scheduler.scheduled_job('cron', minute='0', hour='0', day='1,15')
def my_job():
    print('Running scheduled task')

scheduler.start()

GitHub Actions Workflow

Generate a ready-to-use .github/workflows/schedule.yml file. Customize the name and download directly.

GitHub Actions
# .github/workflows/schedule.yml
name: Twice Monthly (1st and 15th)

on:
  schedule:
    - cron: '0 0 1,15 * *'
  workflow_dispatch: # allow manual trigger

jobs:
  run:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout code
        uses: actions/checkout@v4

      - name: Run scheduled task
        run: |
          echo "Running on schedule: 0 0 1,15 * *"
          # Add your commands here

Save as .github/workflows/schedule.yml in your repository root

Cron Syntax Quick Reference

FieldAllowed ValuesSpecial Chars
minute0–59* , - /
hour0–23* , - /
day of month1–31* , - /
month1–12 or JAN–DEC* , - /
day of week0–7 or SUN–SAT* , - /

Special characters: *= any value  ,= list  -= range  / = step

Related Patterns — Monthly

Need to build your own cron expression from scratch?

Open the Cron Expression Builder →