Skip to main content

Cron weekdays

0 9 * * 1-5

At 09:00, Monday through Friday.

Next runs · UTC

Calendar

September 2026 · UTC

0 runs

About this tool

Run a cron on weekdays with 0 9 * * 1-5 - at 09:00 Monday through Friday. The day-of-week range pauses the schedule for the weekend. Use this for any task that should follow a business-week cadence.

The cron expression for every weekday

0 9 * * 1-5

The day-of-week range 1-5 selects Monday through Friday. The minute and hour fields pin the firing to 09:00. Use the same range with any time of day for “weekday at time” cron.

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

  • Reports and notifications that should only go out every weekday.
  • 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 9 * * 1-5 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 * * 1-5 - weekdays at midnight
  • 0 17 * * 1-5 - weekdays at 17:00 (end of business)
  • */30 9-17 * * 1-5 - every 30 minutes during business hours on weekdays

Gotchas when running every weekday

  • 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

Should weekdays use a range or a five-item list?

Use the range 1-5 for consecutive Monday-Friday days. Lists such as 1,3,5 are better for nonconsecutive weekday schedules.

Weekday-list example

Timing

How do I run once at the start of each weekday?

Use 0 9 * * 1-5 for 09:00 Monday through Friday. Adjust the hour to match the local opening time. Expression: 0 9 * * 1-5

Open in editor
Business-hours guide
How do I run at weekday closing time?

Use 0 17 * * 1-5 for 17:00 Monday through Friday. Cron does not know whether the business closes early on a holiday. Expression: 0 17 * * 1-5

Open in editor
Business-hours guide
How do I run at noon on weekdays?

Use 0 12 * * 1-5. It matches 12:00 on each Monday through Friday in the scheduler timezone. Expression: 0 12 * * 1-5

Open in editor
Business-hours guide
How do I run every 30 minutes during weekday office hours?

Use */30 9-17 * * 1-5. It runs at :00 and :30 in every included hour, including 17:00 and 17:30. Expression: */30 9-17 * * 1-5

Open in editor
Business-hours guide

Days and months

Does adding day-of-month 1 limit this to weekday month starts?

No in Vixie cron. 0 9 1 * 1-5 fires every weekday and every first day of the month because restricted day-of-month and day-of-week fields are OR-ed. Expression: 0 9 1 * 1-5

Open in editor
Day-field rules
Are weekdays the same as business days in cron?

No. 1-5 excludes weekends but not public holidays; wrap the command with a business-calendar check or use scheduler calendar exclusions.

Timezones and DST

Does a UTC weekday schedule follow my local workweek?

Not necessarily. Near midnight, the UTC date can differ from the local date, so choose an IANA timezone when weekday runs must align with a local office.

Timezone reference

Platforms

What is the AWS form for weekdays at 09:00?

Use cron(0 9 ? * MON-FRI *). The bare editor expression is 0 9 ? * MON-FRI *; AWS requires the year field, ? in day-of-month, and the wrapper.

AWS cron guide

Debugging

Will a missed Friday weekday run execute on Saturday?

No by default. Standard cron does not replay missed runs, so the next match after Friday is normally Monday.

Crontap

Can Crontap call an endpoint at 09:00 every weekday?

Yes. Crontap can run 0 9 * * 1-5 in the selected IANA timezone and invoke an HTTP endpoint each weekday.

Schedule API calls

General

What is the cron expression for every weekday?

0 9 * * 1-5. Paste this into Linux crontab, Vercel cron, node-cron, robfig/cron, or a Kubernetes CronJob to run a job every weekday; AWS EventBridge and Quartz need the six-field form.

How can I verify this cron actually runs every weekday?

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 9 * * 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