Cron Expression for Every Monday

Every monday, once a week
0 0 * * 1

Cron reads this as: at 00:00, on day-of-week Monday.

Next 5 runs

These times are in your browser's local time zone. Cron itself uses the server's zone, which on most cloud hosts is UTC. If the difference matters here, see time zones & DST.

When to use this schedule

This runs at midnight at the start of Monday. It suits weekly resets such as clearing counters, rolling up last week's numbers or starting a new reporting period.

What to watch out for

"Midnight on Monday" means the boundary between Sunday and Monday, not the end of Monday. A job that summarises the previous week runs correctly here, but a job meant to summarise "this week" runs before the week has happened. Leave the day-of-month field as *. If both day fields are restricted, standard cron runs when either matches, which is almost never what anyone wants.

The crontab line

0 0 * * 1 /usr/local/bin/your-job.sh >> /var/log/your-job.log 2>&1

Send the output to a log you will read. By default cron mails it, and on a host with no mail transport that mail is silently dropped. See the crontab guide for the surrounding syntax.

Related schedules

Variations on every monday
ExpressionSchedule
0 0 * * MONSame schedule, using names
0 9 * * 1Monday at 09:00
0 0 * * 0Sunday instead

Build your own

If this page doesn't cover the schedule you need, compose it field by field in the visual builder, or paste an expression you already have into the explainer for a per-field breakdown. The examples library has sixty schedules in one place, and the guides cover crontab syntax, time zones, troubleshooting and production practices.