"0 9 * * 1-5" — weekdays at 9am
Parses as minute 0, hour 9, every day of the month, every month, day-of-week 1 through 5 (Monday to Friday) — the next 5 run times skip both weekend days automatically.
Type a cron expression or pick a preset and this generator checks it, explains each of the five fields and shows the next five run times in UTC. It reads standard syntax (wildcards, lists, ranges and steps), month and day names, 7 for Sunday and shortcuts such as @daily, and applies cron’s OR rule for the two day fields.
minute hour day-of-month month day-of-week
minute 0, hour 9, every day of the month, every month, day-of-week 1-5
Computing…
A cron expression is five fields separated by spaces, read left to right: minute, hour, day of the month, month and day of the week. The job runs at every moment that matches all of them, so 0 9 * * 1-5 runs at 09:00 Monday to Friday.
| Field | Values | Notes |
|---|---|---|
| 1. Minute | 0-59 | |
| 2. Hour | 0-23 | 24-hour clock |
| 3. Day of the month | 1-31 | A day that a month lacks (30 February) never runs |
| 4. Month | 1-12 | Linux also accepts jan-dec |
| 5. Day of the week | 0-6, 0 is Sunday | Linux also accepts 7 for Sunday and sun-sat |

| Write | Means | Defined by |
|---|---|---|
| * | Every value in the field | POSIX and Linux |
| 1,15 | A list of values | POSIX and Linux |
| 1-5 | An inclusive range | POSIX and Linux |
| */15, 0-23/2 | Every nth value, across the field or a range | Linux (not POSIX) |
| mon-fri, jan | Three-letter day and month names, any case | Linux (not POSIX) |
| @daily, @weekly | Shortcuts for common schedules (@daily is 0 0 * * *) | Linux (not POSIX) |
POSIX defines only the asterisk, lists and ranges of numbers. Steps, names and the @ shortcuts come from Linux cron and most schedulers built on it. The builder reads all of them, plus 7 for Sunday, and refuses @reboot, which runs when the machine starts and has no clock time.
Because POSIX says so. When either the day of the month or the day of the week is an asterisk, only the other one counts. When both are restricted, a day matching either one runs the job, not only days matching both. So 30 4 1,15 * 5 runs at 04:30 on the 1st and 15th of every month and also every Friday. If you meant only Fridays that fall on those dates, cron cannot say it in one line; run on the dates and check the weekday in the job.
Parses as minute 0, hour 9, every day of the month, every month, day-of-week 1 through 5 (Monday to Friday) — the next 5 run times skip both weekend days automatically.
"0 0 1 * 1" (midnight on the 1st, OR every Monday) matches EITHER field once both are restricted — a real cron behavior this tool implements correctly rather than the more intuitive-seeming AND.
It depends on what runs it. A server’s cron uses the machine’s local time unless the crontab sets CRON_TZ. GitHub Actions runs schedules in UTC unless you give it an IANA time zone, allows nothing more often than every 5 minutes, and warns that runs can be late at busy times, the start of every hour included. This builder shows UTC; the timestamp converter and the time zone planner turn it into local time.
Sign up free — no credit card. You land on the Free plan, and you can start a one-time 7-day Studio trial from your workspace whenever you are ready. Connect your first accounts, import a batch, and watch one post fan out across every platform.
Do you need cron to schedule social media posts?
No. Cron is for scripts on a server; a post needs a date, a time zone and an account. SkedCast schedules posts to every network from a calendar, with bulk scheduling for a month at a time, and the posting schedule generator plans the weekly rhythm. Developers who want code in the loop can use the SkedCast API.