Cron Monday-Friday weekdays
0 0 * * 1-5At 00:00, Monday through Friday.
Next runs · UTC
- —
- —
- —
- —
- —
Calendar
September 2026 · UTC
0 runs
About this tool
0 0 * * 1-5. The day-of-week range 1-5 selects all five weekdays. Use this whenever the task should pause for the weekend - billing runs, status reports, deployment locks, etc.The cron expression for every weekday (Monday through Friday)
0 0 * * 1-5
The day-of-week range 1-5 covers Monday (1) through Friday (5). The job fires at midnight every weekday - five runs per week. Most schedulers also accept name aliases: 0 0 * * MON-FRI is equivalent.
See the dedicated guide for the full breakdown: Cron every day.
Paste it into the editor above to see the next runs on a calendar.
When to run a job every weekday (Monday through Friday)
- Reports and notifications that should only go out every weekday (Monday through Friday).
- 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-5 is five-field cron syntax. It works as is in:
- Linux
crontab-0 0 * * 1-5 /path/to/script.sh - Vercel cron jobs - declare in
vercel.json. - node-cron, robfig/cron and Kubernetes CronJob.
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 9 * * 1-5- every weekday at 09:000 17 * * 1-5- every weekday at 17:00*/15 9-17 * * 1-5- every 15 minutes during business hours on weekdays0 0 * * MON-FRI- name-alias form (equivalent)
Gotchas when running every weekday (Monday through Friday)
- 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-5Weekdays at 18:00
- 0 0 1 * *Once a month, on the 1st at midnight
Cheatsheet
Full cheatsheet| Field | Req. | Range | Wildcards |
|---|---|---|---|
| minute | yes | 0-59 | , - * / |
| hour | yes | 0-23 | , - * / |
| day of month | yes | 1-31 | , - * / |
| month | yes | 1-12 or JAN-DEC | , - * / |
| day of week | yes | 0-6 or names; some dialects use 0-7 or 1-7 — see Dialects | , - * / |
Frequently asked questions
Syntax
What does 1-5 mean in 0 0 * * 1-5?
It is an inclusive day-of-week range from Monday through Friday in Vixie cron, producing one midnight run on each weekday.
Cron field referenceCan I write Monday through Friday with weekday names?
Yes. 0 0 * * MON-FRI is equivalent and makes the intended weekdays easier to review. Expression: 0 0 * * MON-FRI
Is 1,2,3,4,5 equivalent to 1-5?
Yes in Vixie cron. 0 0 * * 1,2,3,4,5 matches the same days, but 1-5 is shorter and clearly expresses a consecutive range. Expression: 0 0 * * 1,2,3,4,5
Can a weekday range exclude Wednesday?
Not with one continuous range. Use 0 0 * * 1,2,4,5 to select Monday, Tuesday, Thursday, and Friday. Expression: 0 0 * * 1,2,4,5
Are wrapping weekday ranges such as 5-1 portable?
No. Use explicit lists for ranges that cross Sunday; for Friday through Monday in Vixie cron, write 0 0 * * 0,1,5,6. Expression: 0 0 * * 0,1,5,6
Timing
How do I run Monday through Friday at 09:00?
Use 0 9 * * 1-5. The weekday range stays the same while the hour changes from midnight to 9. Expression: 0 9 * * 1-5
Days and months
Can I add day 1 to make this run only on weekday month starts?
No in Vixie cron. 0 0 1 * 1-5 runs on every weekday and on every first day of the month because the restricted day fields are OR-ed. Expression: 0 0 1 * 1-5
Platforms
What is the Quartz form for midnight Monday through Friday?
Use 0 0 0 ? * MON-FRI. Quartz adds seconds first and requires ? in day-of-month when day-of-week is restricted. Expression: 0 0 0 ? * MON-FRI
Is numeric range 1-5 portable across cron dialects?
Not universally. It is Monday-Friday in Vixie cron, but weekday numbering differs in Quartz; prefer MON-FRI and convert to the target field count.
Debugging
Why does 5-1 fail when 1-5 works?
Standard ranges run from a lower value to a higher value and do not wrap across Sunday. Use an explicit list for Friday through Monday.
Crontap
Can Crontap call an endpoint every weekday at midnight?
Yes. Crontap can run 0 0 * * 1-5 in the selected IANA timezone and invoke an HTTP endpoint each weekday.
General
What is the cron expression for every weekday (Monday through Friday)?
0 0 * * 1-5. Paste this into Linux crontab, Vercel cron, node-cron, robfig/cron, or a Kubernetes CronJob to run a job every weekday (Monday through Friday); AWS EventBridge and Quartz need the six-field form.
How can I verify this cron actually runs every weekday (Monday through Friday)?
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-5 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