Run a Cron Job Every Monday

Cron expression to run a job every Monday at midnight. Uses day-of-week value 1 (Monday).

Cron Expression
0 0 * * 1
Every Monday at 12:00 AM

Field-by-Field Breakdown

FieldValueMeaning
Minute00
Hour00
Day of Month*every day of month
Month*every month
Day of Week1Monday

0 0 * * 1 is the cron for 'fresh week, fresh start' — it fires at midnight on Monday, the natural reset point for weekly aggregations, digests, and resource provisioning. It is the most common weekly schedule because most business calendars treat Monday as week-start, and most reporting tools assume the same.

When teams reach for this schedule

Weekly product digest or newsletter

Compiling the previous week's product activity (launches, blog posts, customer wins) into a Monday morning newsletter is a low-effort cadence with a high hit rate. Sending at midnight UTC means it lands in EU inboxes before the workday and US inboxes overnight.

Weekly metric and OKR rollup

Aggregating the last 7 days of metrics into a `weekly_metrics` table once at week start keeps OKR dashboards consistent — every read sees the same closed week without race conditions. Anchor the week using ISO week numbers so year boundaries don't break the rollup.

Recurring weekly maintenance jobs

Vacuum analyze, index rebuild, certificate rotation, and dependency updates all benefit from a low-traffic Monday morning slot. Pair with an alert that fires if the job doesn't complete in its expected window — silent failures of weekly jobs are easy to miss for 6 days.

What to watch for

  • Cron's day-of-week numbering is the most error-prone field. In standard cron, Sunday is both 0 and 7, Monday is 1, Saturday is 6. Some implementations (Quartz) use 1 for Sunday — read your scheduler's docs.
  • If you set both day-of-month and day-of-week, classic cron uses OR semantics, not AND. So 0 0 15 * 1 fires on the 15th OR on Mondays, not 'the Monday closest to the 15th.'
  • A Monday-midnight job is a Sunday-night job in most US timezones. Name it explicitly to avoid scheduling-vs-reading confusion.
  • Weekly jobs that fail silently waste a full week of data. Always set a heartbeat or a dead-man's-switch alert that fires if no successful run completes within ~26 hours of the scheduled tick.

Next 5 Scheduled Runs

Computed in UTC. Use the generator to compare UTC with your browser-local time.

  1. 1Mon, Jun 8, 2026, 12:00 AM
  2. 2Mon, Jun 15, 2026, 12:00 AM
  3. 3Mon, Jun 22, 2026, 12:00 AM
  4. 4Mon, Jun 29, 2026, 12:00 AM
  5. 5Mon, Jul 6, 2026, 12:00 AM

Schedule this with TrigRun

Deploy this cron schedule in seconds. Automatic retries, encrypted secrets, full execution history, and native MCP support for AI agents.

Start Scheduling — Free

0 0 * * 1

Frequently Asked Questions

What is the cron expression for every Monday?

0 0 * * 1 runs at midnight every Monday. In cron syntax, day-of-week 1 is Monday (0 and 7 are both Sunday).

Can I run it at a different time on Monday?

Yes. Change the hour and minute fields. For example, 0 9 * * 1 runs every Monday at 9 AM.

Why does my Monday cron sometimes fire on Sunday?

Almost always a timezone issue: 0 0 * * 1 UTC is Sunday evening in the Americas. The schedule is correctly 'Monday in UTC' but appears as Sunday in your local clock. Use a timezone-aware scheduler to fix this.