Cron Generator
Write a cron expression from a frequency, or paste one and see exactly when it will fire.
What this tool does
Cron Generator works in both directions. Set "Start from" to the builder and pick a frequency — every minute, every N minutes, hourly, daily, weekly, monthly or yearly — and it writes the expression for you. Leave it on the paste option and it reads whatever crontab line you give it, restates the schedule as a sentence, and lists the next runs so you can check the sentence against real dates rather than trusting it.
The parser is the useful half. It reads the standard five fields — minute, hour, day-of-month, month, day-of-week — with numbers, ranges, comma lists, steps, and the three-letter names for months and weekdays, so 9-17 and mon-fri both work. The @hourly, @daily, @midnight, @weekly, @monthly and @yearly macros are expanded before parsing. Anything it cannot read produces a specific complaint rather than a shrug: which field, what it found, and why that value is out of range. Two rules catch people out and both are handled the way a real daemon handles them — day-of-week 7 means Sunday, and when day-of-month and day-of-week are both restricted the job runs on either match, not only when the two coincide.
Two limits are worth knowing before you rely on the preview. The run times are computed in this browser's time zone and there is no zone selector, while the machine actually running your job is very often set to UTC — the output says so under the table, and an offset you forget is the classic reason a nightly task lands an hour or five out. And this is a browser tool: the expression is parsed and the dates are calculated in this tab, nothing is transmitted, but nothing is installed either. It writes and explains the line; putting it into a crontab, a systemd timer or a CI schedule is still your job.
How to use it
- Choose where to start. "An expression I paste" explains what is in the input box. "The builder below" ignores the box and writes the expression from the frequency controls.
- Paste the line, or set the frequency. Load sample fills in */15 9-17 * * mon-fri. In builder mode, pick the frequency and then the weekday, day of the month or month it reveals. "At hour" and "At minute" stay on screen for every frequency, but only the fields the chosen frequency uses reach the expression: "Every minute" and "Every N minutes" ignore both, and "Every hour" ignores the hour.
- Set how many runs to preview. Show next takes 1 to 25. Five is enough to confirm a daily job; twenty-five is better for a weekly or monthly one, where the pattern takes longer to show itself.
- Read the sentence, then the dates. The description is generated from the parsed fields, and the table lists each run in local time, in UTC, and as a relative interval. If the two disagree with what you meant, the expression is wrong.
Processing & privacy
Runs on your device. Your file is processed directly in this browser.
Common use cases
Scheduling a nightly backup
Build it from the frequency controls, then read the next five dates to confirm it lands in the quiet hours on the server's clock and not on yours.
Reading a crontab you inherited
Paste each line and get a sentence. A cron parser is faster than counting asterisks, and it catches the field everyone miscounts — day-of-month against day-of-week.
Working out why a job never fired
An expression can be perfectly valid and still never match a real date. 0 0 30 2 * parses cleanly and is reported as never running, because 30 February does not exist.
Staggering jobs off the hour
Half a dozen tasks all set to minute 0 fight for the same load spike. Preview a few candidate expressions and pick minutes that do not collide.
Questions
Is my expression sent anywhere?
Does it support six-field cron with seconds?
Why are the run times not in my server's time zone?
What does an expression with both a day-of-month and a weekday do?
Does @reboot work?
Does "every 15 minutes" stay evenly spaced?
Can it schedule the job for me?
Related tools
- JSON Formatter — Pretty-print, collapse and inspect JSON instantly.
- Base64 Encoder Decoder — Encode and decode Base64 text and files.
- JWT Decoder — Inspect the header, payload and claims of a JWT.
- Hash Generator — Compute MD5, SHA-1, SHA-256 and SHA-512 digests.
- Regex Tester — Test patterns against sample text with live matches.
- Unix Timestamp Converter — Convert between epoch seconds and readable dates.