Cron every week explained
0 0 * * 0At 00:00, only on Sunday.
Next runs · UTC
- —
- —
- —
- —
- —
Calendar
September 2026 · UTC
0 runs
About this tool
0 0 * * 0 - at midnight every Sunday. The day-of-week field 0 is Sunday in standard cron (Quartz uses 1=Sunday - be careful when copying expressions across dialects). To shift the day, change the last field; to shift the time, change the minute and hour.Picking a weekday
The day-of-week field accepts a number, a name, a list, or a range. The mapping (standard Unix cron):
0or7= Sunday (SUN)1= Monday (MON)2= Tuesday (TUE)3= Wednesday (WED)4= Thursday (THU)5= Friday (FRI)6= Saturday (SAT)
Quartz uses different numbering: 1=Sunday, 2=Monday, …, 7=Saturday. If you're moving an expression between Unix cron and Quartz, double-check the day-of-week value.
Every week on different platforms
Linux crontab
0 0 * * 0 /path/to/weekly.sh
# Or with the @weekly alias (Sunday midnight):
@weekly /path/to/weekly.sh
# Or as Monday morning:
0 9 * * MON /path/to/monday-job.shVercel cron jobs
{
"crons": [
{ "path": "/api/cron/weekly", "schedule": "0 9 * * 1" }
]
}AWS EventBridge
cron(0 9 ? * MON *)
# AWS uses 6 fields: minute hour dom month dow year. ? required in dom or dow.Quartz (Java)
// Note: Quartz day-of-week is 1-7, 1=Sunday. Monday is 2.
Trigger trigger = newTrigger()
.withSchedule(cronSchedule("0 0 9 ? * 2"))
.build();
// Or with name alias:
cronSchedule("0 0 9 ? * MON")Variations on every week
0 9 * * 1- every Monday at 09:00.0 17 * * 5- every Friday at 17:00.0 9 * * 1-5- every weekday at 09:00 (5x as frequent).0 0 * * 1,4- twice a week, Monday and Thursday - see the bi-weekly FAQ.0 9 * * 1,3,5- every Monday, Wednesday and Friday at 09:00.0 0 * * 0,6- every weekend (both days) at midnight.0 0 * * *- every day (7x as frequent).0 0 1 * *- every month (~4x less frequent).
Weekly cron pitfalls
- 0 vs 7 confusion - both mean Sunday in Unix cron. Quartz uses 1=Sunday. Always verify the firing day on the calendar before shipping.
- Bi-weekly is not native - cron has no “every other week”. Schedule weekly and gate the actual work on `date +%V` (ISO week number) modulo 2 - or use a job runner with interval semantics.
- First-occurrence-of-week - Quartz supports
2#1for the first Monday of the month. Standard cron has no equivalent. - Year boundary - week numbers reset at the year boundary. If your weekly job needs continuity across December/January, drive it from a date counter rather than ISO week.
Examples
- 0 18 * * *Every day at 18:00
- 0 */5 * * *Every 5 hours
- 0 18 * * 1-5Weekdays at 18:00
- 0 0 1 * *Once a month, on the 1st at midnight
Cheatsheet
Full cheatsheet| Field | Req. | Range | Wildcards |
|---|---|---|---|
| minute | yes | 0-59 | , - * / |
| hour | yes | 0-23 | , - * / |
| day of month | yes | 1-31 | , - * / |
| month | yes | 1-12 or JAN-DEC | , - * / |
| day of week | yes | 0-6 or names; some dialects use 0-7 or 1-7 — see Dialects | , - * / |
Frequently asked questions
Syntax
What is the cron expression for every week?
0 0 * * 0 runs every Sunday at midnight in Vixie cron. Vixie also accepts 7 for Sunday; other dialects use different weekday numbering, so verify the target scheduler. Expression: 0 0 * * 0
Is there a @weekly cron alias?
Yes. Many Vixie-derived implementations accept @weekly as a shortcut for 0 0 * * 0, Sunday at midnight. Vercel, AWS, and Quartz require explicit cron expressions.
Timing
Is every week the same as every 7 days?
No. 0 0 * * 0 fires every Sunday - exactly once per calendar week, regardless of when it last fired. A 0 0 */7 * * cron would fire on day-of-month 1, 8, 15, 22, 29 - and reset at the month boundary, which is rarely what 'every 7 days' actually means.
How do I run a weekly job during business hours, e.g. Monday at 9 AM?
0 9 * * 1 - at 09:00 every Monday. Use 1 for Monday in standard cron (or MON if your scheduler accepts aliases). For weekly on a specific weekday plus a backup the next day: 0 9 * * 1,2. Expression: 0 9 * * 1
Can cron run every other week?
Not with a portable cron expression alone. Schedule weekly and gate execution with stored state or a date-aware wrapper that preserves continuity across year boundaries.
Days and months
What numbers map to which weekdays?
In Vixie cron, 0 and 7 are Sunday, 1 is Monday, through 6 for Saturday. Other dialects differ; Quartz uses 1 for Sunday. Use weekday names when the target supports them.
Should weekly Sunday use 0 or 7?
Vixie cron accepts both 0 and 7 for Sunday. Other platforms differ, so SUN is often clearer when names are supported.
Timezones and DST
How does DST affect a weekly cron?
A weekly local time in a spring-forward gap may be skipped, while a fall-back time can repeat. UTC avoids local-clock ambiguity but shifts wall time seasonally.
Which timezone defines the weekly boundary?
The scheduler's configured timezone defines the weekday and clock time. Set it explicitly when a Sunday or Monday boundary has business meaning.
Platforms
What number means Sunday in Quartz cron?
Quartz uses 1 for Sunday, unlike Vixie cron's 0 or 7. A Sunday-midnight Quartz expression is 0 0 0 ? * 1. Expression: 0 0 0 ? * 1
What is weekly on Monday in AWS EventBridge?
Use cron(0 9 ? * MON *) for Monday at 09:00. AWS requires a year field and ? in day of month when day of week is selected.
What is weekly on Monday in Spring cron?
Use 0 0 9 * * MON. Spring requires a leading seconds field, so this fires at second 0, minute 0, hour 9 each Monday. Expression: 0 0 9 * * MON
Debugging
Can weekly cron jobs overlap?
Yes, if a run lasts into the next scheduled week or duplicate delivery occurs. Use locking and a week-based idempotency key.
Will cron replay a weekly run missed during downtime?
Traditional cron will not. Detect the missing week from persisted state or use a scheduler with durable misfire handling.
Crontap
Can Crontap run a weekly job?
Yes. You can schedule an HTTP job on Crontap with 0 0 * * 0, choosing the timezone that defines Sunday midnight. Expression: 0 0 * * 0
Write the cron here. Run it on Crontap.
Point Crontap at any URL. Pick any cron. Done.
WordPress, Shopify, Railway, Cloud Run, Vercel, HubSpot, Ghost, your own box. If it answers HTTP, Crontap can drive it on a clock you can read, in the timezone that actually matters, and page you when something breaks.
1.9k+ teams · Free forever tier · No credit card