Developer

Cron Expression Builder

Details

How to use Cron Expression Builder

What the tool does, how to run it, and what to expect from the result.

How to build and read a cron expression

A cron expression is five fields separated by spaces, and it is easy to write and hard to read. The recurring mistakes are always the same: mixing up day-of-month and day-of-week, assuming the two are AND'd when cron ORs them, and assuming the job runs in your time zone when it almost always runs in UTC.

Build the expression from labelled fields or paste an existing one, and the tool describes it back to you in plain English. Everything runs in the browser and nothing is scheduled or executed.

  • Start from a preset (every minute, hourly, daily at midnight, Mondays at 9am, first of the month) or fill the fields yourself.
  • Fill minute, hour, day-of-month, month, and day-of-week. Use * for every value and */N for a step.
  • Read the plain-English summary to confirm it means what you intended.
  • Leave day-of-month as * if you want a weekday schedule, because cron ORs the two day fields.
  • Copy the expression, and check whether your scheduler runs it in UTC.
Tips

Getting a better result out of Cron Expression Builder

Specific settings and thresholds, not general advice.

  • The five fields are minute, hour, day-of-month, month, day-of-week, in that order. The single most common mistake is treating the third field as day-of-week, which gives you a job that runs on the 5th of the month rather than every Friday.
  • Day-of-month and day-of-week are OR'd, not AND'd. `0 0 1 * 1` does not mean 'the first of the month, if it is a Monday'. It means 'the first of the month, and also every Monday'. If both fields are set to something other than *, cron runs the job on either condition.
  • */15 in the minute field means at minutes 0, 15, 30, and 45, stepping from the start of the range, not fifteen minutes after whenever you deployed. So a */7 does not divide the hour evenly and will fire at 0, 7, 14, ... 56 and then jump back to 0, giving you a 4-minute gap at the top of every hour.
  • Cron has no time zone of its own. It runs in whatever zone the machine or the scheduler is configured for, which for most cloud schedulers means UTC. A 0 9 * * 1 job is 9am UTC, which is not 9am in your office for most of the year.
  • The explainer accepts the standard 5-field format only. Shorthand macros (@daily, @hourly, @reboot), 6-field cron with a seconds column (Quartz, Spring), and non-standard extensions such as L, W, and # are not parsed and will report a field-count error.
Limits

What Cron Expression Builder does not do

The honest boundary, so you do not lose time finding it yourself.

  • Standard 5-field cron only. No @daily-style macros, no 6-field seconds column, no Quartz L / W / # syntax.
  • It does not show the next N run times, so you cannot verify an expression by seeing when it will actually fire.
  • No time zone handling. It reads the fields, it does not resolve them against a clock.
  • Five presets. It does not validate that a field's values are within range, so 0 25 * * * is described rather than rejected.
At a glance

Who Cron Expression Builder is for

A quick way to understand who this helps, what it solves, and where it connects next.

Best fit

Developers and sysadmins scheduling cron jobs.

Ideal for

Using the cron expression builder without installing anything or signing up.

FAQ

Common questions

Short answers for the questions people usually have before trying a utility like this.

What does each field mean?

In order: minute (0-59), hour (0-23), day of month (1-31), month (1-12 or JAN-DEC), and day of week (0-6 or SUN-SAT, where 0 and 7 both mean Sunday). A * means every value. So 30 2 * * 0 is 02:30 every Sunday.

Why does my job run more often than I expect?

Most likely because you set both day-of-month and day-of-week. Cron treats them as an OR, not an AND: `0 0 15 * 5` fires on the 15th of the month AND on every Friday, not only on a Friday the 15th. If you want a specific weekday, leave day-of-month as * and vice versa.

What time zone does a cron expression use?

Whatever the machine running it is set to. Cron itself has no notion of time zones. Most cloud schedulers (Cloudflare Workers, GitHub Actions, AWS EventBridge) default to UTC, so 0 9 * * 1 is 09:00 UTC, which is 10:00 or 11:00 in London depending on the season. Check your scheduler's documentation before you assume.

Can I use @daily or a seconds field?

Not here. The parser expects exactly five fields and reports an error otherwise. @daily, @hourly, and friends are shorthand that some cron implementations accept, and a leading seconds column is a Quartz and Spring extension. Both are common in the wild, and both are outside the standard five-field format this tool builds and explains.

How do I run something every 15 minutes?

*/15 * * * *, which fires at minute 0, 15, 30, and 45 of every hour. Steps count from the start of the range, so */20 gives 0, 20, and 40, and a step that does not divide 60 evenly (such as */7) leaves a short gap at the top of each hour rather than spacing evenly across it.

Recommendations

You Might Also Like

Nearby tools from the catalog that fit the same job or workflow.

Cleanor app

Do it all on your device

Cleanor puts these tools in one app: compress and convert images, video, and audio, work with PDFs, and scan text right on your device. Plus free up storage and clear inbox clutter with Email Cleaner. Start with a free trial.

  • iPhone
  • Android
  • Macsoon
  • Windowssoon