Cron Expression Builder

Cron Expression for Every Monday: 0 0 * * 1

The cron expression 0 0 * * 1 fires every Monday at midnight. Covers day of week numbering (Monday = 1), the MON alias, and the dom/dow OR-logic edge case.

100% client-side. Your data never leaves your browser.

Minute
Hour
Day of Month
Month
Day of Week

At 12:00 AM, only on Monday

Next 5 Executions
  • 1.Mon, Jun 15, 2026, 00:00
  • 2.Mon, Jun 22, 2026, 00:00
  • 3.Mon, Jun 29, 2026, 00:00
  • 4.Mon, Jul 6, 2026, 00:00
  • 5.Mon, Jul 13, 2026, 00:00
Quick Reference
*Any value
,List separator
-Range
/Step
1-5Range 1 through 5
*/15Every 15 units

Related Tools

The 0 0 * * 1 Expression

The cron expression 0 0 * * 1 fires at midnight every Monday. Fields: minute (0), hour (0), day of month (*), month (*), day of week (1). Monday is day 1 in POSIX cron. This numbering trips up developers coming from ISO 8601 or programming languages that number days differently. Check the table below before writing any weekly schedule.

Day of Week Numbering in POSIX Cron

The day of week field uses integer values 0 through 7:

NumberDay
0Sunday
1Monday
2Tuesday
3Wednesday
4Thursday
5Friday
6Saturday
7Sunday (alias for 0)

Sunday appears twice (as 0 and 7) to reduce off by one errors in range expressions. 1-7 would otherwise miss Sunday if 7 were not available. In practice you rarely need this edge, but it is good to know both values are valid.

Monday is always 1. This differs from ISO 8601 (which treats Monday as the start of the week but numbers it 1 as well) but conflicts with some programming languages and libraries that number days differently. When writing crontab expressions, always refer to this table, not your mental model from another tool.

The MON Alias

0 0 * * MON    # identical to 0 0 * * 1

Named day aliases (MON, TUE, WED, THU, FRI, SAT, SUN) work in most production cron implementations. They work in lists and ranges:

0 0 * * MON,WED     # Monday and Wednesday
0 0 * * MON-FRI     # Monday through Friday
0 9 * * MON,THU     # 9 AM on Monday and Thursday

If you are writing crontabs that will be copied across different systems or deployed by configuration management tools, numeric values are safer. Named aliases are a convenience, not a standard.

Use Cases for Weekly Monday Jobs

Monday as a trigger point maps naturally to how most teams structure their work week. Common real world uses:

Weekly reports

Generate and distribute weekly metrics, KPI summaries, or operational digests every Monday morning so they are ready before standup. A job at 0 6 * * 1 ensures the report is built and delivered before anyone opens their laptop.

Sprint start automation

For teams on two week sprint cycles where sprints start Monday, a Monday cron can reset counters, generate sprint planning templates, create tracking tickets, or sync data from project management tools into internal dashboards.

Backup rotation

A common backup strategy: daily incremental backups with weekly full backups taken on Monday. The Monday full backup marks the boundary of the previous week’s increments, making restoration windows predictable.

Newsletter sends

Automated email or Slack newsletter digests (new tool releases, engineering blog roundups, incident postmortems) are often scheduled Monday morning so recipients see them at the start of the week.

Cache warming

If you have caches that get stale over the weekend (user behavior models, recommendation engines, precomputed reports), a Monday prewarming job ensures the system is ready before traffic picks up.

Specifying a Particular Time on Monday

0 0 * * 1    # midnight Monday (start of Monday)
0 6 * * 1    # 6 AM Monday, job runs, finishes before standup
0 9 * * 1    # 9 AM Monday, morning trigger
0 17 * * 1   # 5 PM Monday, end of first business day of week
30 23 * * 1  # 11:30 PM Monday, late cleanup before Tuesday

For jobs that need to complete before a specific time, account for job duration. If your Monday 9 AM report takes 90 minutes to generate, schedule it at 6 or 7 AM instead.

Multiple Days Per Week

The day of week field accepts comma separated values for noncontiguous days:

0 0 * * 1,3,5    # Monday, Wednesday, Friday, every other weekday
0 0 * * 1,4      # Monday and Thursday, twice a week
0 9 * * 1,2,3,4,5  # equivalent to 0 9 * * 1-5 (weekdays), written as a list

For a job that should run on Monday and also on the first of every month, be aware of the dom/dow union behavior (see the next section).

The dom/dow Union Edge Case

If you specify a non-* value in both the day of month and day of week field, cron fires on the union of both constraints:

0 0 1 * 1    # fires on the 1st of every month AND every Monday

This is not “first Monday of the month.” That would require script logic. The expression above runs on the 1st regardless of day, and also runs every Monday regardless of date. If you only want Mondays, keep the day of month as *.

Other Day Numbers for Reference

For context when writing combined expressions:

0 0 * * 1    # every Monday
0 0 * * 2    # every Tuesday
0 0 * * 3    # every Wednesday
0 0 * * 4    # every Thursday
0 0 * * 5    # every Friday
0 0 * * 6    # every Saturday
0 0 * * 0    # every Sunday

The most common pairings for nondaily recurring jobs are Monday only (weekly), Monday+Thursday (twice a week), and Monday+Wednesday+Friday (three times a week).

Verifying the Schedule

from croniter import croniter
from datetime import datetime

cron = croniter("0 0 * * 1", datetime.now())
for _ in range(5):
    print(cron.get_next(datetime))

Each output should be a Monday at 00:00:00. Use the cron builder on this page to see the next 10 run times and confirm the schedule before deploying it.