Cron Expression Generator
Build a valid 5-field cron expression by pasting one directly, or switch to simple schedule presets — every N minutes, daily, weekly, or monthly — without needing to know cron syntax. A plain-English description shows exactly what the expression runs.
Input
Enter a complete 5-field cron expression: minute hour day-of-month month day-of-week.
Output
Guides
A cron expression is the five-field schedule string that cron, GitHub Actions, Kubernetes CronJobs, and countless task schedulers use to decide when a job runs. The syntax is compact and easy to get backwards — this tool builds a valid expression for you from plain-English choices, so you don't have to remember field order or symbol meaning.
The five fields
A standard cron expression always has five space-separated fields, in this order:
minute hour day-of-month month day-of-week
0-59 0-23 1-31 1-12 0-6 (0 = Sunday)For example, 30 9 * * * means "at minute 30 of hour 9, every day of every month, on any weekday" — in other words, every day at 09:30.
The operators
*— any value ("every").* * * * *runs every single minute.,— a list.1,15,30 * * * *runs at minutes 1, 15, and 30.-— a range.1-5 * * * *runs at every minute from 1 through 5./— a step.*/15 * * * *runs every 15 minutes (0, 15, 30, 45).
These operators can combine within a single field (e.g. 1-5,15-20), and cron day-of-week uses 0 for Sunday through 6 for Saturday — the same convention as JavaScript's Date.getDay().
How to use it
Pick a Schedule Type:
- Every N Minutes — set an interval (1–59) and the tool builds a
*/Nminute field, e.g. every 15 minutes. - Daily — pick an hour and minute; the job runs at that time every day.
- Weekly — pick a day of the week plus an hour and minute.
- Monthly — pick a day of the month (1–31) plus an hour and minute.
- Custom (advanced) — the default. Enter a complete 5-field expression directly into Full Cron Expression, using any combination of
*,,,-, and/. Use this for anything the presets above don't cover, like "every 2 hours on weekdays" (0 */2 * * 1-5).
The Cron Expression field updates automatically and includes a copy button. A What This Means line underneath translates the expression back into plain English so you can double-check it matches what you intended before pasting it into a crontab, CI config, or job scheduler.
FAQ
Does this support seconds (a 6-field expression)? No — this tool generates the standard, widely-supported 5-field POSIX cron format. Some schedulers (like Quartz) add a leading seconds field; if yours does, prepend 0 (or your desired second) manually.
What if I leave the Full Cron Expression blank, or paste something invalid? In Custom (advanced) mode, the field is used as-is only when it contains exactly five whitespace-separated values; anything else (blank, or too few/too many fields) falls back to * * * * * ("every minute, every day"), so the generated expression is guaranteed to be syntactically valid even with incomplete input.
Can I schedule something for multiple days or a range of months? Yes, in Custom (advanced) mode — use a list (1,3,5) or range (1-5) in the relevant field, same as you would in a real crontab.
What timezone does the schedule run in? Cron expressions themselves are timezone-agnostic — the actual timezone depends on the system or service running the job (server local time, UTC, or a timezone you configure separately in tools like GitHub Actions or Kubernetes).
Privacy
Everything runs locally in your browser — the schedule you build is never sent to a server or stored anywhere.
Use it from code
From 3 credits per callREST API
curl -X POST https://api.iotools.cloud/v1/tool/cron-expression-generator \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"scheduleType": "custom",
"rawCronExpression": "0 */2 * * 1-5"
}'Swap in your own key from your account. The tool's fields are the body — no wrapper.
Ask an AI agent
Use the IOTools `cron-expression-generator` tool (Cron Expression Generator) on this input:
YOUR_INPUT_HEREPaste this at any agent connected to the IOTools MCP server, then add your input.