Cron Expression Builder
You can paste a ready expression into any of the five fields — it spreads across them on its own. Everything is computed in your browser.
About the tool: building and decoding cron expressions
Cron drives the schedules on every server, yet nobody keeps its syntax in their head. Five asterisks explain nothing, and a mistake in a single character means the job runs at the wrong moment, which you will not notice for a while. This tool works both ways: it assembles the expression from the fields and translates it back into plain words straight away. There are no third-party ads and no sign-up.
Everything is computed in your browser — the expression is never sent to a server or stored anywhere.
Key benefits of the tool:
An explanation in plain words: right under the expression you see what it actually means. Not "0 9 * * 1-5", but "at 09:00, from Monday to Friday".
The next runs: five concrete dates with weekday names. This is the most reliable way to make sure the schedule is the one you had in mind.
Decoding a ready expression: paste a whole line such as
*/15 * * * *into any of the five fields — it spreads across them on its own.
How a cron expression is built
An expression consists of five fields separated by spaces. Each one covers its own unit of time:
Minute — from 0 to 59.
Hour — from 0 to 23, so the time is counted on a 24-hour clock.
Day of month — from 1 to 31.
Month — from 1 to 12. Abbreviations work as well:
JAN,FEBand so on.Day of week — from 0 to 6, where 0 is Sunday. The value 7 also means Sunday, and instead of digits you may write
MON,TUEand the rest.
What you can put in a field
An asterisk
*means "any value". Five asterisks in a row give a run every minute.A number
5— exactly that value.A range
1-5— every value from the first to the last inclusive.A list
1,15,30— only the listed values.A step
*/10— every tenth value. A step can be combined with a range:0-30/10gives 0, 10, 20 and 30.
The trap everyone falls into
If you restrict the day of month and the day of week at the same time, cron fires when either of the two conditions matches, not both together.
The expression 0 0 13 * 5 will not run "on Friday the 13th", as it appears, but both on the 13th of every month and on every Friday. This is not a flaw in some implementation but behaviour written into the standard. The tool warns about it whenever you restrict both fields, and the list of next runs shows the consequence plainly.
A few practical tips
Do not put heavy jobs exactly on the hour: at 00:00 and 03:00 the load on servers is traditionally the highest. A shift of a few minutes, say
7 3 * * *, spreads the peaks out.Remember the server time zone: cron works by the clock of the machine, not by yours. The next runs here are computed in your browser time zone, so on a server elsewhere the times will differ.
Every 90 minutes cannot be written: the fields are independent, so an interval longer than an hour and not divisible by it has to be split into several schedule lines.
Check the result against the list of runs, not the expression: reading five dates is more reliable than proofreading asterisks.