Regex and cron

Cron Expression for Every Sunday

At 00:00 every Sunday, once a week. Copy it, check the next runs in your time zone and grab a snippet for your platform.

  • Free foreverNo trial, no paywall, no usage limits.
  • No sign-upOpen the page and start. We never ask for an email to use a tool.
  • PrivateEverything runs in your browser. Your input is never uploaded or stored on our servers.
  • Works offlineOnce the page has loaded, the tool keeps working without a connection.

Cron expression

0 0 * * 0
Customize
0minuteMinute: at minute 0 (on the hour)0hourHour: at hour 0 (midnight)*day (month)Day of month: every day of the month*monthMonth: every month0day (week)Day of week: only on Sunday

At 00:00 every Sunday, once a week.

Time zone
Run times, the week view and the snippets use this zone. It starts as your device's zone.
Show times as 9:00 AM instead of 09:00.

Next runs

Each run in your selected time zone, with the same moment in UTC. Daylight saving changes follow cronie, the cron on most Linux servers.
Copy run times (ISO 8601)

Next 7 days

Each square is one hour of local time in your selected zone. Darker squares have more runs. Daylight saving changes are not drawn.

Use it on your platform

Copy-ready config for each scheduler. Dialects differ: some only run in UTC, some can't do seconds, Cloudflare and AWS number weekdays from 1 = Sunday. The snippet handles the conversion and says what changed.
A line for crontab -e on Linux or macOS (Vixie cron, cronie).on.schedule for a workflow, with the timezone field GitHub added in March 2026 (UTC when omitted).A CronJob manifest with the timeZone field (Kubernetes 1.27+).Cron Triggers in wrangler.toml for a Worker. Runs in UTC and numbers weekdays from 1 = Sunday.crons in vercel.json plus the route it calls. Runs in UTC.EventBridge Scheduler (any time zone, recommended by AWS) and a legacy EventBridge scheduled rule (UTC).A .timer unit with OnCalendar=, the systemd replacement for cron.
Runs as writtenRuns in your time zone
crontab -e
Copy crontab -eDownload my-job.crontab
# ┌───────────── minute (0–59)
# │ ┌─────────── hour (0–23)
# │ │ ┌───────── day of month (1–31)
# │ │ │ ┌─────── month (1–12)
# │ │ │ │ ┌───── day of week (0–6, Sunday = 0)
# │ │ │ │ │
# * * * * *  command
CRON_TZ=UTC
0 0 * * 0  /path/to/my-job.sh >> /var/log/my-job.log 2>&1
  • CRON_TZ=UTC is honored by cronie (Fedora, RHEL, Arch). Other cron daemons ignore it and use the server's time zone, so check timedatectl first.
  • Edit with crontab -e. Cron starts the next run even if the last one is still going; wrap the command in flock -n /tmp/my-job.lock to prevent overlaps.

Need scheduled jobs, queues and monitoring that never miss a run? Talk to our team

Quick answer

The cron expression for every Sunday is 0 0 * * 0. In the day-of-week field, 0 means Sunday, and Vixie cron and cronie also accept 7, so 0 0 * * 7 behaves the same on Linux. The first two fields set the time to 00:00, the start of Sunday, which is the night between Saturday and Sunday. For the end of Sunday, use 59 23 * * 0 or 0 0 * * 1.

  • Live next runs
  • Any time zone
  • Field-by-field breakdown
  • Seven platform snippets
  • Daylight saving aware

How to use this schedule

  1. 1Copy 0 0 * * 0 with the Copy expression button.
  2. 2Check Next runs in your time zone to confirm it fires when you expect, including around daylight saving changes.
  3. 3Pick your platform under Use it on your platform and copy the ready-made crontab line, workflow, manifest or timer.
  4. 4Need a different time or day? Click Customize to open it in the cron expression generator and change any field.

Should I write Sunday as 0 or 7?

Both work in crontab, because Vixie cron and cronie accept either number for Sunday, plus the name SUN. The real question is where else the expression will go:

  • 0 is accepted by practically every five-field cron parser, including GitHub Actions and Kubernetes. It's the portable choice for cron-style schedulers.
  • 7 exists so that ranges ending on Sunday can be written upward, like 5-7 for Friday to Sunday. Some libraries reject it.
  • SUN is the clearest to read, but tools that take numbers only, such as Vercel cron, reject it.
  • In Quartz, AWS EventBridge and Cloudflare Workers, Sunday is 1, so a copied 0 is rejected or means something else there.

If one expression has to work across cron-style schedulers, 0 is the answer; for Cloudflare, AWS and Quartz, write SUN. If it only ever lives in a Linux crontab, use whichever reads best to your team.

Which midnight is Sunday midnight?

People say "Sunday midnight" and mean two moments a full day apart. Cron is precise: 0 0 * * 0 means 00:00 on Sunday, the first minute of Sunday's date. To the people who are awake, that feels like late Saturday night.

What you meanExpressionFires at
The start of Sunday (Saturday night)0 0 * * 0Sunday 00:00
The last minute of Sunday59 23 * * 0Sunday 23:59
The end of Sunday, as Monday begins0 0 * * 1Monday 00:00

The difference matters for anything with a weekly deadline. A job that closes "the week ending Sunday" must run after Sunday is over, so it belongs on 0 0 * * 1, and it should still compute the period from the run date rather than trusting the clock to the second.

If the exact moment doesn't matter, choose the hour on purpose. Midnight sits just before the US and European clock changes, which happen between 01:00 and 04:00 local time on Sunday mornings, so it runs once even on those nights. A maintenance job is better at 0 4 * * 0 or later, after the changes, and a report people read on Sunday evening fits 0 18 * * 0.

What does each field in 0 0 * * 0 mean?

FieldValueAllowedMeaning
Minute00–59at minute 0 (on the hour)
Hour00–23at hour 0 (midnight)
Day of month*1–31every day of the month
Month*1–12, JAN–DECevery month
Day of week00–7 (0 and 7 are Sunday), SUN–SATonly on Sunday

Read together: At 00:00 every Sunday, once a week.

How do I adjust 0 0 * * 0 to my own schedule?

Small edits to 0 0 * * 0 cover most real-world needs:

ExpressionWhat it does
0 0 * * 7Same as 0 0 * * 0 in Vixie cron and cronie
59 23 * * 0The last minute of Sunday
0 0 * * 1Midnight at the end of Sunday, as Monday starts
0 4 * * 0Sundays at 4 AM, after the daylight saving changes
0 18 * * 0Sunday evening, ready for Monday
0 0 * * SUNThe same schedule written with the day name

Need something else? Click Customize at the top of the page to open this schedule in the cron expression generator and change any field.

Related schedules: Every week · Every Monday · Every weekend · Every day at midnight

Browse all schedules in the cron schedule library.

How do I run 0 0 * * 0 in crontab, GitHub Actions, Kubernetes and the cloud?

PlatformWrite it asTime zone
Linux crontab0 0 * * 0Server's time zone; CRON_TZ= in cronie
GitHub Actions- cron: "0 0 * * 0"UTC by default; add timezone: (IANA name)
Kubernetes CronJobschedule: "0 0 * * 0"Set timeZone: (1.27+)
Cloudflare Workers0 0 * * SUNUTC only; numbers weekdays from 1 = Sunday, so use names
Vercel Cron Jobs0 0 * * 0UTC only; Hobby runs it within the hour (±59 min)
AWS EventBridge Schedulercron(0 0 ? * SUN *)Takes a time zone; legacy scheduled rules are UTC only
systemd timerOnCalendar=Sun *-*-* 00:00:00Add a zone after the time, e.g. Europe/London

In a crontab (crontab -e), the full line looks like this:

0 0 * * 0  /path/to/job.sh >> /var/log/job.log 2>&1

The live panel at the top of the page builds complete, copy-ready files for each platform (workflow, CronJob manifest, wrangler.toml, vercel.json, AWS CLI and systemd units) and can shift the schedule to UTC for platforms that need it.

What can go wrong with 0 0 * * 0?

  • Daylight saving time changes in the US and Europe happen early on Sunday mornings, between 01:00 and 04:00 local time. Sunday jobs in that window can run at shifted times twice a year; 04:00 or later avoids it.
  • A weekly report scheduled at 0 0 * * 0 runs before any of Sunday's data exists. Move it to 0 0 * * 1 if your week ends on Sunday.
  • 7 for Sunday is a Vixie cron and cronie feature. Some parsers only accept 0–6, so use 0 in expressions you share.
  • In AWS EventBridge, Quartz and Cloudflare Workers, Sunday is 1. A 0 copied from crontab is rejected there.
  • Weekly jobs fail quietly. Add alerting, because the next run, and the next chance to notice, is a week away.
  • On UTC-only platforms (Cloudflare Workers, Vercel, legacy EventBridge rules), the local time this runs at moves by an hour when daylight saving time starts or ends. Use GitHub's timezone:, Kubernetes timeZone, EventBridge Scheduler or cronie's CRON_TZ to pin it to local time.

Frequently asked questions

Both, in Vixie cron and cronie. 0 is the portable choice because some parsers only accept 0 to 6. AWS EventBridge, Quartz and Cloudflare Workers use 1 for Sunday instead.
It runs at 00:00 on Sunday, the moment Saturday night turns into Sunday. To run at the end of Sunday, use 59 23 * * 0 or 0 0 * * 1.
59 23 * * 0. Minute 59, hour 23, and 0 for Sunday in the day-of-week field.
0 4 * * 0. Minute 0, hour 4, any day of the month, any month, and 0 for Sunday. It also runs after the US and European daylight saving changes, which happen earlier on Sunday mornings.
Standard cron has no every-other-week option. Run every Sunday and have the job exit on alternate weeks, for example by checking whether the ISO week number is even.

Last updated by the Playxoft engineering team.

From the engineers who built this tool

Need scheduled jobs that never miss a run?

Cron is the easy part. Retries, overlapping runs, time zones, queues and alerts when a job silently stops are where schedules break. We build background job systems you can trust, and we will review your setup for free.

More free tools

See all tools

Regex Tester

Test regex live with highlighted matches, plain-English explanations and code export.

Open tool

Cron Expression Generator

New

Build and explain cron schedules, see the next runs in any time zone, copy platform snippets.

Open tool

SQL Formatter

Beautify or minify SQL in 12 dialects, with keyword case, indent and line:column errors.

Open tool

cURL to Python Converter

New

Convert cURL commands into Python requests or httpx code with params, json, files and auth.

Open tool

cURL to Fetch Converter

New

Turn any cURL command into JavaScript fetch() code with headers, JSON, forms and auth.

Open tool

cURL to Axios Converter

New

Convert cURL commands into an Axios request config with params, data, auth and timeouts.

Open tool