Utinzo

Cron Expression Generator

Generate and explain cron expressions — pick a preset or write your own.

Did this tool work for you?

How to use this calculator

  1. 1

    Select a preset schedule for common intervals.

  2. 2

    Or choose "Custom expression" and enter your own 5-field cron string.

  3. 3

    The tool explains what the expression means in plain English.

Frequently asked questions

What are the five fields and their allowed values?

In order: minute (0-59), hour (0-23), day of month (1-31), month (1-12 or JAN-DEC) and day of week (0-7 or SUN-SAT, where both 0 and 7 mean Sunday). Values outside these ranges, and backwards ranges such as 20-10, are reported as invalid with the field named.

What happens when both day-of-month and day-of-week are set?

In classic cron the job runs when either field matches, not both. "0 0 13 * 5" fires at midnight on every 13th and also on every Friday, not only on Friday the 13th. The description the tool writes says so. Some other schedulers combine the fields differently, so check yours.

Why does */7 in the minute field not run every 7 minutes?

A step counts from the start of the field’s range each time. */7 means minutes 0, 7, 14 … 56 and then restarts at 0 in the next hour, leaving a gap of 4 minutes. Steps that divide evenly into 60, such as */5, */10, */15 and */30, give a steady rhythm; the tool points this out for the others.

Which time zone does the expression use?

The expression has no time zone; the scheduler that runs it decides. A classic crontab uses the server’s local time, GitHub Actions schedules use UTC, and other platforms vary. Convert to the scheduler’s zone before writing the hour. Daylight-saving changes can skip or repeat a run scheduled in the hour that is missing or doubled, and this differs between implementations.

Why is my 6- or 7-field expression rejected?

This tool reads the 5-field format only. Quartz and Spring add a leading seconds field, and AWS EventBridge uses six fields with a year and requires a question mark in either the day-of-month or day-of-week position. Those extras, along with the L, W, # and ? characters, are rejected here and should be written for the target system by hand.

Are @daily and @reboot supported?

Yes, in the form common to crontab implementations: @hourly, @daily (or @midnight), @weekly, @monthly and @yearly (or @annually) are expanded to their five-field equivalents, and @reboot is described as a run at daemon start-up. Not every platform that accepts five fields accepts these shortcuts.

Does the tool show the next run times?

No. It validates the syntax, labels each field and writes a plain-English sentence. It does not know your server’s time zone or today’s date, so it cannot list upcoming runs. It does flag a schedule that can never fire, such as day 31 in February.

About cron expression generator

Cron expressions: fields, shortcuts and pitfalls

The five fields

A cron expression is five space-separated fields: minute, hour, day of month, month and day of week. Each field takes a star for every value, a number, a list with commas, a range with a hyphen, or a step with a slash. Names such as JAN and MON work in the month and weekday fields.

Allowed values and special characters
FieldRangeNotes
Minute0-59*/15 means 0, 15, 30, 45
Hour0-2324-hour clock
Day of month1-31Day 31 never occurs in 30-day months
Month1-12 or JAN-DECNames are case-insensitive
Day of week0-7 or SUN-SAT0 and 7 both mean Sunday

Worked examples

Output from the tool: "*/5 9-17 * * 1-5" is described as every 5 minutes, from 09:00 through 17:59, on Monday through Friday. "0 */6 * * *" becomes At 00:00, 06:00, 12:00 and 18:00. "0 9 1,15 * *" becomes At 09:00, on day 1 and 15 of the month. "0 0 13 * 5" is described as day 13 or Friday, with a note that classic cron runs when either matches. Note that the end of a range is inclusive, so 9-17 in the hour field covers the whole 17:00 hour.

Pitfalls that cause missed or extra runs

The most common mistake is the day-of-month and day-of-week rule above. Next comes the step restart: */7 produces an uneven pattern because each hour starts again at minute 0. Many platforms also limit how often a schedule may fire; GitHub Actions, for instance, does not run scheduled workflows more often than every five minutes, and its schedules are in UTC. Always read the target platform’s documentation for its time zone and its field count.

Shortcuts and what the tool rejects

The macros @hourly, @daily, @weekly, @monthly and @yearly stand in for 0 * * * *, 0 0 * * *, 0 0 * * 0, 0 0 1 * * and 0 0 1 1 * respectively, and @reboot means once at start-up. Anything with six or seven fields, or with L, W, # or ? characters, is flagged invalid rather than guessed at, because those belong to Quartz-style systems.

Writing schedules that stay readable

Prefer explicit lists to clever steps when the rhythm is uneven: "0 8,12,17 * * *" is described as At 08:00, 12:00 and 17:00 and is far clearer than an arithmetic trick. Pick off-peak minutes for batch jobs, since many people schedule on the hour and the load piles up. Add a comment above each crontab line saying what runs and why, because the expression alone rarely explains intent six months later.

Cron Expression Generator – Utinzo

Learn more from an authoritative source:

MDN Web Docs
Related tools

Results are estimates for informational purposes only and do not constitute professional financial, medical, legal, or technical advice. Read full disclaimer →