CronTool
Cron expression editor & debugger

Cron every week — `0 0 * * 0` explained

The cron expression for every week is 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.
Weekly cron is the right cadence for: weekly digests, “new week” setup tasks, weekly billing rollups, log archiving, and anything that lives on a 7-day cycle. Most production crontabs have at least one weekly entry.

Examples

  • 018***
    Every day at 18:00
  • 0*/5***
    Every 5 hours
  • 018**1-5
    Weekdays at 18:00
  • 001**
    Once a month

Cheatsheet

FieldRequiredValues RangeWildcardsminuteYes0-59, - * / hourYes0-59, - * / day of monthYes1-31, - * / L W monthYes1-12, - * /day of weekYes0-7, - * / L

Calendar

View future cron matches in a calendar

April 2026

Showing next 1000 cron schedules

Loading...

Picking a weekday

The day-of-week field accepts a number, a name, a list, or a range. The mapping (standard Unix cron):

  • 0 or 7 = 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.sh

Vercel 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#1 for 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.

Frequently asked questions

What is the cron expression for every week?

`0 0 * * 0`. Minute and hour are pinned to 00:00, day-of-month and month are wildcards, day-of-week is `0` (Sunday). The job fires every Sunday at midnight. Pick any other weekday (1=Monday, …, 6=Saturday, 7=Sunday) to shift the day.

What numbers map to which weekdays?

Both 0 and 7 mean Sunday. 1=Monday, 2=Tuesday, 3=Wednesday, 4=Thursday, 5=Friday, 6=Saturday. Most schedulers also accept name aliases (SUN, MON, TUE, …) — easier to read in commit history.

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.

Is there a `@weekly` cron alias?

Yes — most Unix cron implementations accept `@weekly` as a shortcut for `0 0 * * 0` (every Sunday at midnight). Not all schedulers support it (Vercel, AWS, Quartz expect explicit cron expressions), so prefer the explicit form for portability.

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`.

Ready to schedule it?

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.

Free forever tier ・ No credit card required

Your next schedule
GET/wp-cron.php?doing_wp_cron=1

Schedule

every 5 minutes

Next run

in 23s

Apihustle Logo

This tool is part of the Apihustle suite - a collection of tools to test, improve and get to know your API inside and out.

  • Clobbr logo

    Clobbr

    The app & CLI tool to test API endpoint speed.

    Visit
  • Crontap logo

    Crontap

    Schedule recurring API calls using cron syntax.

    Visit
  • CronTool logo

    CronTool

    Debug multiple cron expressions on a calendar.

    Visit

  • Page AI

    AI Website Generator that designs and writes clean code.

    Visit
  • Shipixen

    Generate customized boilerplates in minutes.

    Visit
  • Page UI

    Landing page UI components for React & Next.js

    Visit