Easy! Just use the following cron:
0 0 * * 1,4 commandThis sets the cron day of week to Monday (1) and Thursday (4). You can choose any values 0-7 (both 0 and 7 are Sunday).
Alternatively, you can use aliases:
0 0 * * MON,THU command“Twice a week” in cron is just a list in the day-of-week field. The big design choice is which two days. Mon/Thu (3-day-4-day gap) is common for backups; Tue/Fri is common for reports; Wed/Sat for maintenance windows.
“Bi-weekly” is harder. Cron has no native “every other Monday” — the day-of-week field repeats weekly. The portable workaround: schedule weekly and have the script exit early on odd/even-numbered weeks. 0 9 * * 1 [ $(($(date +%V) % 2)) -eq 0 ] && /path/to/script.sh runs every Monday at 09:00 but only on even ISO week numbers. Quartz supports # for “Nth weekday of the month” (2#1 = first Monday) but still doesn't express every-other-week directly.
For finer-grained recurrence (every 14 days regardless of weekday), use a job runner with interval semantics. See also the every week guide and Mon/Wed/Fri pattern.
Read the dedicated guide: Cron every week.
View future cron matches in a calendar
Showing next 1000 cron schedules
See this cron expression on the calendar → view example
Other answers and worked examples for the most confusing cron expressions.
Ready to schedule it?
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
Schedule
“every 5 minutes”
Next run
in 23s
Permalink: https://tool.crontap.com/help/cron-job-run-script-twice-a-week-or-bi-weekly