Cron Translator

Cron for the first Monday of the month

The classic trap. Because standard cron ORs day-of-month with day-of-week, this fires on the 1st through 7th AND on every Monday — not only on the first Monday.

0 9 1-7 * 1

At 09:00, on the 1st through 7th of the month and also on Monday

Interpreted in UTC · approximately 10.3 runs per month

Things to check

  • Gotcha

    Day-of-month and day-of-week are combined with OR, not AND

    Both the day-of-month field ("1-7") and the day-of-week field ("1") are restricted. Standard cron runs the job when EITHER matches, so this fires more often than most people expect — not only on days that satisfy both.

    Fix: To require both conditions, set one field to * and check the other inside your job (for example `[ "$(date +%u)" = "1" ] || exit 0`).

  • Note

    Interpreted in UTC

    A cron expression has no timezone of its own — the scheduler's zone decides when it fires. These times are computed in UTC. The same expression on a host in another zone runs at a different moment.

    Fix: Set the schedule timezone explicitly (TZ= or CRON_TZ= in crontab, `timeZone` in Kubernetes, or the scheduler's own setting). Vercel Cron Jobs always run in UTC.

Fields

Minute0
At minute 0.
Hour9
At 09:00.
Day of month1-7
On the 1st, 2nd, 3rd, 4th, 5th, 6th and 7th.
Month*
Every month.
Day of week1
On Monday.

Next runs

  1. Thu, 2026-09-03, 09:00
  2. Fri, 2026-09-04, 09:00
  3. Sat, 2026-09-05, 09:00
  4. Sun, 2026-09-06, 09:00
  5. Mon, 2026-09-07, 09:00
  6. Mon, 2026-09-14, 09:00
  7. Mon, 2026-09-21, 09:00
  8. Mon, 2026-09-28, 09:00

Try a different expression or timezone

Times above are in UTC. Pick a timezone here to see this schedule in local time.

Call this from code or an agent

curl 'https://crontoenglish.com/api/v1/explain?expression=0%209%201-7%20*%201'

API and MCP setup · this page as markdown

Related schedules