Skip to main content

Cron twice a week

0 0 * * 1,4

At 00:00, only on Monday and Thursday.

Next runs · UTC

Calendar

September 2026 · UTC

0 runs

About this tool

Run a cron twice a week with 0 0 * * 1,4. The day-of-week list selects Monday and Thursday. Common alternative pairings: 2,5 (Tue/Fri), 3,6 (Wed/Sat). For genuine bi-weekly (every 14 days), see the bi-weekly guide.

The cron expression for twice a week (Monday and Thursday)

0 0 * * 1,4

The day-of-week list 1,4 selects Monday (1) and Thursday (4) - three-day and four-day gaps. Pick any pair of weekdays that fits your schedule.

See the dedicated guide for the full breakdown: Cron every week.

Paste it into the editor above to see the next runs on a calendar.

When to run a job twice a week (Monday and Thursday)

  • Reports and notifications that should only go out twice a week (Monday and Thursday).
  • Maintenance windows and heavier batch jobs scheduled around when people are working.
  • Reminders and check-ins tied to a weekly rhythm rather than a calendar date.

Run this cron anywhere

0 0 * * 1,4 is five-field cron syntax. It works as is in:

AWS EventBridge and Quartz use six-field expressions with a ? in one of the day fields, so convert first:

  • AWS EventBridge - cron(minute hour day-of-month month ? year); see the AWS guide.
  • Quartz Scheduler - prepend a seconds field (0) and replace one day field with ?; see the Quartz guide.

Useful variations

  • 0 0 * * MON,THU - name-alias form (equivalent)
  • 0 9 * * 2,5 - Tuesday and Friday at 09:00
  • 0 0 * * 0,3 - Sunday and Wednesday at midnight

Gotchas when running twice a week (Monday and Thursday)

  • Timezone and daylight saving - DST handling is scheduler-specific: Vixie/cronie can skip or double local matches; GitHub advances nonexistent local times; EventBridge Scheduler skips spring and runs once in the fall overlap. UTC-only Vercel and Cloudflare schedules are unaffected.
  • Missed runs are not replayed - If the host or platform is unavailable at the scheduled minute, standard cron simply waits for the next match. Add a heartbeat or alert if a skipped run must be noticed.
  • Day-of-week and day-of-month are OR-ed - In Vixie-style cron, restricting both fields runs the job when either matches. Keep day-of-month as * when the weekday is the only restriction you want.
  • Sunday numbering varies by dialect - Vixie-style cron accepts 0 and 7 as Sunday. AWS EventBridge and Quartz use 1 for Sunday and 7 for Saturday; prefer weekday names when translating dialects.

Examples

  • 0 18 * * *
    Every day at 18:00
  • 0 */5 * * *
    Every 5 hours
  • 0 18 * * 1-5
    Weekdays at 18:00
  • 0 0 1 * *
    Once a month, on the 1st at midnight

Cheatsheet

Full cheatsheet
FieldReq.RangeWildcards
minuteyes0-59, - * /
houryes0-23, - * /
day of monthyes1-31, - * /
monthyes1-12 or JAN-DEC, - * /
day of weekyes0-6 or names; some dialects use 0-7 or 1-7 — see Dialects, - * /

Frequently asked questions

Syntax

What does 1,4 mean in 0 0 * * 1,4?

It is a day-of-week list selecting Monday and Thursday in Vixie cron. The job runs at midnight on each selected day.

Day-of-week values
Can I write the Monday-Thursday pair with names?

Yes. 0 0 * * MON,THU is equivalent and avoids numeric weekday differences across dialects. Expression: 0 0 * * MON,THU

Open in editor
Dialect matrix

Timing

Are Monday and Thursday runs evenly spaced?

No. Monday to Thursday is three days, while Thursday to the next Monday is four days; cron matches weekdays rather than a fixed interval.

Is twice a week the same as biweekly?

No. Twice a week means two runs each week; biweekly usually means one run every two weeks and requires a weekly trigger plus a wrapper.

Biweekly cron guide
Which weekday pair gives the most even gaps?

Any pair three days apart creates alternating three-day and four-day gaps. Monday-Thursday uses 1,4; Tuesday-Friday uses 2,5.

Day-of-week values

Days and months

How do I run twice a week on Tuesday and Friday?

Use 0 9 * * 2,5 for 09:00 on Tuesday and Friday. Change the list to choose another pair. Expression: 0 9 * * 2,5

Open in editor
Tuesday cron guide
Can I combine the weekly pair with a calendar date?

Yes, but Vixie treats the restricted fields as OR. 0 9 1 * 1,4 fires every Monday, every Thursday, and every first day of the month. Expression: 0 9 1 * 1,4

Open in editor
Day-field rules
Can the two weekly runs be on adjacent days?

Yes. 0 9 * * 1,2 runs Monday and Tuesday, followed by a five-day gap; use it only when that clustering is intentional. Expression: 0 9 * * 1,2

Open in editor

Platforms

What is the AWS form for Monday and Thursday at midnight?

Use cron(0 0 ? * MON,THU *). The bare six-field expression uses ? for day-of-month and includes the required year field.

AWS cron guide

Debugging

Why can't twice-weekly cron have perfectly equal gaps?

Seven days cannot be split into two equal whole-day gaps. Weekday pairs therefore alternate gap lengths, such as three and four days.

Crontap

Can Crontap call an endpoint twice a week?

Yes. Crontap can run 0 0 * * 1,4 in the selected IANA timezone and invoke an HTTP endpoint on Monday and Thursday.

Schedule API calls

General

What is the cron expression for twice a week (Monday and Thursday)?

0 0 * * 1,4. Paste this into Linux crontab, Vercel cron, node-cron, robfig/cron, or a Kubernetes CronJob to run a job twice a week (Monday and Thursday); AWS EventBridge and Quartz need the six-field form.

How can I verify this cron actually runs twice a week (Monday and Thursday)?

The editor above shows the next 30+ runs on a calendar in your local timezone, plus a plain-English description. If the calendar matches your intent, the cron is correct.

Does 0 0 * * 1,4 work on every platform?

Linux crontab, Vercel cron jobs, node-cron, robfig/cron, and Kubernetes CronJob accept the five-field form as is. AWS EventBridge and Quartz use six-field expressions with a ? in one of the day fields; see the AWS and Quartz guides for the conversion. Vercel's free Hobby plan caps the minimum frequency at once-per-day; the Pro plan removes that cap.

What happens if the previous run is still going when the next one fires?

Most schedulers will start the new run anyway, leading to overlap. To prevent this, wrap the command with flock -n /tmp/myjob.lock /path/to/script.sh on Linux, or set concurrencyPolicy: Forbid on Kubernetes CronJob. Vercel and EventBridge may overlap runs if the previous one is still executing; make the handler idempotent.

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