Code

Cron Expression Builder

Cron expression builder
* * * * *
Common schedules

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, FEB and 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, TUE and 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/10 gives 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.