Skip to content

@weekly

Every Sunday at Midnight. @weekly fires every Sunday at 00:00 — the same as 0 0 * * 0. See the expansion, the Monday-midnight variant, weekend maintenance risks, and Quartz/AWS equivalents.

Where the @weekly macro is supported and its equivalents
DialectExpression
Unix cron / Cloudflare@weekly
Quartz / Spring0 0 ? * 1
AWS EventBridge0 0 ? * 1 *

Next 5 executions of @weekly (UTC)

Next 5 execution times in UTC for @weekly
#Execution time (UTC)
12026-11-08 00:00 UTC
22026-11-15 00:00 UTC
32026-11-22 00:00 UTC
42026-11-29 00:00 UTC
52026-12-06 00:00 UTC
Edit & simulate @weekly in your timezone

@weekly in production

What @weekly actually does

@weekly expands to 0 0 * * 0 — midnight, every Sunday. In the Unix day-of-week field both 0 and 7 mean Sunday, so 0 0 * * 7 is the same schedule spelled differently. systemd's OnCalendar=weekly fires at the same instant (Sunday 00:00), and Celery beat writes it as crontab(day_of_week=0).

Weekly cadence is the maintenance-window cadence: database VACUUM and OPTIMIZE runs, weekly full backups that the nightly incrementals roll up to, log archive rotation, and certificate renewal checks that need to succeed at least once between expirations. Sunday midnight is chosen because traffic bottoms out — but that also means failures land when nobody is watching.

Sunday midnight, and why you might move off it

Two practical arguments against the default slot. First, weekend coverage: a weekly job that fails at 00:00 Sunday may sit broken for 30+ hours before a human notices, which is exactly the window where success alerting earns its keep — a weekly schedule should always page on failure, not just log. Second, business alignment: for anything consumed Monday morning (reports, billing extracts, workspace resets), 0 0 * * 1 fires Monday 00:00 and guarantees freshness without a Sunday on-call. There is no @weekly variant for this; you write the explicit day.

Daylight-saving transitions barely touch 00:00 — most zones shift at 01:00–03:00 local — but a handful shift at midnight, where a Sunday-00:00 job can fire twice or skip once a year. If a twice-or-never edge matters (idempotency guards, exactly-once billing), run the daemon in UTC or schedule at 02:00. The timezone switcher in the simulator shows exactly what your users' zone does.

Common questions

What day of the week does @weekly run on?

Sunday at 00:00. The macro expands to 0 0 * * 0, where 0 (and equivalently 7) is Sunday in the Unix day-of-week field.

How do I run a job weekly on Monday instead?

There is no @monday macro — use 0 0 * * 1 for Monday at midnight, or 0 8 * * 1 for Monday at 08:00. Only the day-of-week digit changes.

Is @weekly the same as 0 0 * * 0?

Yes — identical run times and behavior. 0 0 * * 7 is also equivalent, since 7 is a second spelling of Sunday in Unix cron.

What is the Quartz or AWS EventBridge equivalent of @weekly?

Quartz: 0 0 ? * 1 — seconds first, '?' in day-of-month, and note that Quartz numbers Sunday as 1. AWS EventBridge: 0 0 ? * 1 * with the trailing year field. Neither platform accepts the macro itself.

All cron shortcut macros