Cron Expression for Weekdays Only (Monday Through Friday)
Table of Contents
Running a cron job only on business days — not weekends — is one of the most common scheduling needs. The 5th field in a cron expression controls the day of week, and setting it to 1-5 limits execution to Monday through Friday.
Build your weekday-only schedule in our free cron expression generator or copy from the ready-to-use examples below.
The Basic Weekday Cron Pattern
The day-of-week field (5th field) uses numbers 0-7, where 0 and 7 both mean Sunday. Monday is 1, Friday is 5. So 1-5 in the day-of-week field means Monday through Friday.
# Format: minute hour day-of-month month day-of-week # Weekday pattern uses 1-5 in the last field 0 9 * * 1-5 # Every weekday at 9:00 AM 0 8 * * 1-5 # Every weekday at 8:00 AM 30 17 * * 1-5 # Every weekday at 5:30 PM (end of workday)
You can also use day names instead of numbers on most systems:
0 9 * * MON-FRI # Same as 0 9 * * 1-5
Ready-to-Copy Weekday Cron Expressions
| Schedule | Cron Expression | Description |
|---|---|---|
| Weekdays 9 AM | 0 9 * * 1-5 | Business hours start |
| Weekdays 5 PM | 0 17 * * 1-5 | Business hours end |
| Weekday midnight | 0 0 * * 1-5 | Nightly weekday jobs |
| Weekday 6 AM | 0 6 * * 1-5 | Pre-work processing |
| Every 30 min, weekdays | */30 9-17 * * 1-5 | Every 30 min during business hours |
| Every hour, weekdays | 0 9-17 * * 1-5 | Hourly during work hours only |
| Weekdays 8 AM and 5 PM | 0 8,17 * * 1-5 | Twice daily on weekdays |
| Monday only | 0 9 * * 1 | Weekly Monday morning |
| Friday end of day | 0 17 * * 5 | Weekly Friday afternoon |
Day of Month vs Day of Week: The "OR" Trap
This is the most common weekday scheduling mistake. If you set both the day-of-month field AND the day-of-week field, cron treats them as an OR condition, not AND. The job runs on any matching day-of-month OR any matching day-of-week.
For example, this does NOT mean "weekdays on the 1st of the month":
0 9 1 * 1-5 # WRONG — this means "on the 1st OR on weekdays"
It actually runs every weekday plus also on the 1st of every month (even if that's a Saturday). To schedule only on weekdays, leave the day-of-month field as *:
0 9 * * 1-5 # CORRECT — strictly weekdays only
Weekday Cron in Different Platforms
The 1-5 weekday syntax works across all standard platforms:
- Linux/Mac crontab:
0 9 * * 1-5 - Spring Boot @Scheduled:
0 0 9 ? * MON-FRI(6-field, with ? for day-of-month) - GitHub Actions:
0 9 * * 1-5(UTC) - Kubernetes CronJob:
0 9 * * 1-5 - AWS EventBridge:
0 9 ? * MON-FRI *(6-field AWS format)
The Quartz/Spring Boot format requires ? in day-of-month when you specify day-of-week. AWS EventBridge adds a year field at the end. For all other standard Unix/Linux tools, 0 9 * * 1-5 is correct.
Try It Free — No Signup Required
Runs 100% in your browser. No account, no install, no limits.
Open Free Cron GeneratorFrequently Asked Questions
How do I write a cron expression that runs only on weekdays?
Use 1-5 in the day-of-week field (the 5th field). Example: "0 9 * * 1-5" runs at 9 AM Monday through Friday. The number 1 = Monday and 5 = Friday in standard cron notation.
Can I write MON-FRI instead of 1-5 in a cron expression?
Yes, on most systems. Day name abbreviations like MON, TUE, WED, THU, FRI, SAT, SUN are valid in standard cron and are supported on Linux, macOS, Spring Boot, and most modern platforms. "0 9 * * MON-FRI" and "0 9 * * 1-5" are equivalent.
How do I run a cron job every hour during business hours on weekdays?
Use: "0 9-17 * * 1-5" — this fires at the top of every hour from 9 AM to 5 PM, Monday through Friday. Add the hour range in the hour field to limit execution to business hours.

