A cron expression generator that also tells you what yours really does.
Build the schedule from presets, or paste any 5-field expression and get it explained in plain English with the next 3 runs. It parses steps, ranges and day names, warns you about the day-of-month / weekday OR rule, and refuses non-portable tokens instead of guessing. Fully offline.
Already have Toolbox? Open this widget
Every 15 minutes, between 09:00 and 17:00, on Monday to Friday
Write a cron and read it in plain English
Change the expression and see what it means and when it fires. It is evaluated in your browser.
100% local · five fields: minute, hour, day of month, month, day of week
Read an expression, or build one without memorizing the order.
Paste an expression and the widget answers three questions at once: is it valid, what does it mean, and when does it fire next. The explanation is a sentence — “Every 15 minutes, between 09:00 and 17:00, on Monday to Friday” — and under it are the next three real dates, which is what turns an abstract argument about fields into something you can check.
Going the other way, the Build presets cover the schedules people actually write: every 5 minutes, hourly, daily at 09:00, Monday to Friday at 09:00, Mondays at 08:00, the 1st at midnight. Pick one, adjust it, copy the result into your crontab, CronJob manifest or CI config.
When something is wrong, the error names the field instead of just saying invalid: how many fields you actually passed, which field is out of range, or which token can’t be parsed.
- Explanation in plain English + the next 3 runs
- Presets for the six schedules everyone ends up writing
- Aliases
@daily,@hourly,@weekly… expanded to their 5 fields - Errors that name the offending field and token
- Copy button, and a field legend so you stop counting positions
At 00:00, every day (expands to 0 0 * * *)
“The 1st, if it’s a Monday” is not what that expression says.
Here is the rule that quietly breaks schedules: when both the
day-of-month and the day-of-week field are restricted, cron runs the job when
either one matches. So 0 0 1 * MON does not mean “the 1st of
the month, if it falls on a Monday”. It means the 1st of the month, plus
every Monday — roughly five times more often than whoever wrote it
intended, which is how a monthly billing job ends up running weekly.
The widget implements that rule properly and, more importantly, says so on screen whenever your expression lands in that case. Most generators show you a pretty sentence that reads like an AND and let you find out in production.
- OR semantics implemented, not approximated
- An explicit warning when both day fields are restricted
- The next 3 runs make the extra firings visible immediately
- Wrap-around weekday ranges (
fri-mon) and Sunday as 0 or 7
At 00:00, on day 1 or on Monday
Standard cron, and an honest “no” to everything else.
The parser covers what portable cron actually has: the wildcard, lists,
ranges, steps in all three shapes (*/15, 9-17/2,
5/15), month names, weekday names, weekday ranges that wrap
around the weekend, and Sunday written as either 0 or
7.
What it deliberately rejects: L, W,
# and ?. Those belong to Quartz and Spring, not to
crontab, Kubernetes CronJobs or most CI schedulers — so an expression using
them is not portable to where you are probably pasting it. A tool that
silently accepted them would be telling you a schedule that never happens.
- Wildcard, lists, ranges and all three step forms
- Names:
JAN-DEC,SUN-SAT,mon-fri - Wrap-around ranges like
fri-mon; Sunday as 0 or 7 - Rejects
L W # ?and@rebootwith a reason
* wildcard✓* * * * *L W #—0 0 L * *@reboot—not a timeInstalled from the catalog, in one click.
Cron Wizard isn’t bundled into the app — it’s a widget in the Webstarted Toolbox catalog. Download Toolbox, open the catalog tab (🧰), press the “+” next to Cron Wizard, and it lands in your Dev tools tab. No reinstall, no app update. Here are a few of its neighbors:
Questions, answered.
What does the expression mean, in plain English?
That is the whole point of the widget: you paste the five fields — minute, hour, day of month, month, day of week — and it writes out what they mean in a sentence, then lists the next 3 times it will actually fire. Seeing “At 09:00, Monday to Friday” next to three real dates is what catches a mistake before you deploy it.
Why does my cron run on days I didn’t expect?
Almost always the day-of-month / day-of-week OR rule. When both of those fields are restricted, cron fires when EITHER matches — not when both do. So “0 0 1 * MON” does not mean “the 1st, if it is a Monday”; it means the 1st of the month AND every Monday. The widget flags this explicitly whenever your expression hits that case, which is the one thing most generators leave you to discover in production.
Which syntax does it support?
Standard 5-field cron: “*”, lists (1,15), ranges (1-5), steps (*/15, 9-17/2, 5/15), month and day names (JAN, mon-fri), wrap-around weekday ranges (fri-mon) and Sunday as either 0 or 7. Plus the aliases @yearly, @annually, @monthly, @weekly, @daily, @midnight and @hourly, which it expands to the equivalent five fields so you can see what they really are.
Why does it reject L, W, # and ?
Because those are extensions, not cron. “L” (last day), “W” (nearest weekday), “#” (nth weekday) and “?” come from Quartz and Spring schedulers; plain crontab, Kubernetes CronJobs and most CI schedulers do not understand them. Rather than pretend to parse them and hand you a wrong answer, the widget tells you the token is not portable. Same with @reboot: it is not a time, so there is nothing to explain or predict.
Do I need to be online?
No. Parsing and the next-run calculation happen locally — no request goes out, so the expression you are debugging (and the schedule of your infrastructure it hints at) stays on your machine. Day and month names are built into the widget instead of coming from the system locale, so the same expression always reads the same way.
Is it free?
Yes. Webstarted Toolbox is free and needs no account, and Cron Wizard is a free widget in its catalog — you install it in one click from inside the app.
Get Webstarted Toolbox
Free to use. Download the app, then add Cron Wizard from the catalog in one click. macOS 12+ and Windows 10+.
One icon, many small tools
This is just one of the widgets in Webstarted Toolbox. Here are the rest: