Cron expression for weekdays at 9am

At 9:00 AM, Monday through Friday

0
minute
9
hour
*
day (month)
*
month
1-5
day (week)

At 9:00 AM, Monday through Friday

Try this expression in the interactive tool:

Open in cron explainer →

Next 10 scheduled runs

#1Thu, 16 Apr 2026, 09:00
#2Fri, 17 Apr 2026, 09:00
#3Mon, 20 Apr 2026, 09:00
#4Tue, 21 Apr 2026, 09:00
#5Wed, 22 Apr 2026, 09:00
#6Thu, 23 Apr 2026, 09:00
#7Fri, 24 Apr 2026, 09:00
#8Mon, 27 Apr 2026, 09:00
#9Tue, 28 Apr 2026, 09:00
#10Wed, 29 Apr 2026, 09:00

Common use cases

This is arguably the most useful combined cron pattern. It fires at 9 AM on working days only, which maps perfectly to business processes that don't need to run on weekends.

Standup reminders, daily sales reports, overnight deployment summaries, CI/CD pipeline status digests, and "what happened while you were away" email roundups all commonly use this schedule.

Note that this schedule doesn't account for public holidays. If you need to skip bank holidays, you'll need application-level logic — check the date against a holiday calendar before executing.

Platform-specific syntax

crontab
0 9 * * 1-5 /path/to/script.sh
AWS EventBridge
cron(0 9 ? * MON-FRI *)
GitHub Actions
schedule:
  - cron: '0 9 * * 1-5'  # Weekdays 9AM UTC
Kubernetes
schedule: "0 9 * * 1-5"

Technical breakdown

The expression 0 9 * * 1-5 has five fields: minute=0, hour=9, day (month)=*, month=*, day (week)=1-5. At 9:00 AM, Monday through Friday.

Frequently asked questions

Does 1-5 mean Monday to Friday?
Yes. In standard cron, 0 = Sunday, 1 = Monday, 2 = Tuesday, 3 = Wednesday, 4 = Thursday, 5 = Friday, 6 = Saturday. So 1-5 covers Monday through Friday.
How do I exclude bank holidays?
Cron has no concept of holidays. Handle this in your script: check the current date against a holiday list and exit early if it's a holiday.