Crontab-style automatic creation builder (regular execution schedule) | ZeroTools

Specify minute, hour, day, month, and day-of-week from select boxes to create a general 5-field Cron expression. You can check the selected content with 8 presets and a simple English explanation.

Loading tool interface...

Local Browser Processing and Network Communication Notice

This tool's processing operates locally within your browser. Standard site assets, analytics, and advertisements may communicate separately. There are no guarantees.

ZeroTools: Browser Processing & Privacy

ZeroTools focuses on tools that process input on your device. Check each tool’s scope and limitations before use.

Processing and privacy policy
Chapter 1

How to Assemble a 5-Field Cron Expression from Options

This tool outputs a 5-field Cron expression, listing "minute hour day month day-of-week" from left to right separated by half-width spaces.

The initial value is 0 9 * * *, with minute set to 0, hour to 9, and day, month, and day-of-week specified as all values using asterisks.

There is no field to input arbitrary Cron strings on the screen; you only select from the provided values in the select boxes for each field.

The selection state is maintained separately for the 5 fields of minute, hour, day, month, and day-of-week, and they are simply concatenated in the order of "minute hour day month day-of-week".

For example, if you set minute to 0, hour to 22, day and month to asterisks, and day-of-week to 0,6, it becomes 0 22 * * 0,6.

There is no process to parse a string and return it to the input fields, no parser to check the allowed range, and no process to find the next execution date and time on a calendar.

While restricting choices makes input easier, it does not provide syntax guarantees or execution guarantees for the destination implementation.

The generation target is only the 5 fields representing time conditions. In an actual crontab file, you need to write the command to be executed after that, but this tool does not add commands, redirects, environment variables, or usernames.

It also does not output the user field of a system crontab or an entire GitHub Actions YAML, so treat the copied string as a part of the structure required by the destination.

On the right side of the screen, the concatenated expression and a simple English explanation are displayed together. Since both are updated when you change a field, you can review the selected conditions as well as the symbols.

Note that the English explanation generated simply concatenates DOM and DOW conditions without explicitly clarifying them as an OR condition, vaguely displays */2 for days as "every other day", and does not specify the starting point for minute/hour steps.

The correct cron semantics are maintained, but these are limitations of the simplified UI explanation. It is not the result of executing and verifying the Cron engine of the target server or service.

Chapter 2

Choices for Each Field and How to Read Symbols

The minute field is selected from * representing every minute, */5, */10, */15, */30 in increments of 5, 10, 15, and 30 minutes starting from 0, and fixed values of 0, 15, 30, 45.

The hour field is *, */2, */6, */12 in increments of 2, 6, and 12 hours starting from 0, and fixed values of 0, 9, 12, 18, 22.

The day field is *, 1, 15, 31, */2, and */5. 31 does not mean the end of the month abstractly, but only the 31st day. Step values are shown on the screen as 2-day increments or 5-day increments from the 1st.

This is a specification that advances the value within the range of the day field, and is not a timer that runs exactly every 48 hours or 120 hours across months.

The month field is * and 1, 3, 6, 9, 12, and the day-of-week field is *, 1-5, 0,6 and 0, 1, 3, 5. On this screen, day-of-week 0 is displayed as Sunday and 1 as Monday.

1-5 is a range from Monday to Friday, and 0,6 is a list of Sunday and Saturday. Since there are implementation differences in day-of-week number correspondence and permitted symbols, you need to check if the same notation is accepted at the application destination.

Asterisks, single values, comma separation, and hyphen ranges are basic notations found in POSIX crontab, but steps using a slash are a widely used extension.

This tool simply concatenates the selected strings and does not determine full POSIX compliance or full compliance with a specific implementation.

Chapter 3

8 Presets and Generated Expressions

There are 8 quick presets. "Every minute" selects * * * * *, and "Every hour" selects 0 * * * *. The former has asterisks in all fields, and the latter fixes only the minute to 0.

"Every day at 9 AM" becomes 0 9 * * *, and "Every day at midnight" becomes 0 0 * * *, specifying only the time without limiting the day, month, and day-of-week.

Presets using the day-of-week are 0 0 * * 0 for "Every Sunday at midnight", 0 9 * * 1-5 for "Every weekday at 9 AM", and 0 22 * * 0,6 for "Every weekend at 10 PM".

"Midnight on the 1st of every month" using a date is 0 0 1 * *. Clicking the button replaces the 5 select boxes with preset values, so you can also apply it and then change only a part.

The preset name briefly represents the selected content. The actual base time is not determined by the expression alone, but follows the timezone settings of the execution environment.

Also, since it does not handle scheduler load, stop, permissions, and job state, it is not a guarantee that it will "always start at the specified time".

Before pasting the expression, check the 5 fields on the right side and the settings of the destination.

Chapter 4

Points to Note for Date and Day-of-Week, 31st, and Step Values

When both the day field and day-of-week field are restricted to something other than an asterisk, in a general POSIX cron, it is evaluated as "date OR day-of-week".

For example, setting the day to 15 and day-of-week to 1 will be read as a specification that matches on the 15th OR Monday, not just "the 15th AND Monday".

Note that the tool's simple English explanation does not explicitly display this OR condition. Cron dialects and service-specific rules are not identical, so make your final judgment using the official documentation of the destination.

31 in the day field is not "the last day of the month". Since February, April, June, September, and November do not have a 31st day, it will not match the condition of 31 in those months.

This tool does not calculate the number of days in a month to replace it with another day, nor does it output L to specify the end of the month.

If processing at the end of every month is required, you must individually consider notations provided by the scheduler you are using or methods to check the next day's date on the job side.

*/2 also does not mean even-numbered days. This is because in a general step extension, it is read in 2 increments from the start value 1 of the day field, that is, in the order of 1, 3, 5.

The UI vaguely displays this as "every other day". When the month changes, the evaluation of the field returns to the range of the new month, so it does not always mean the same elapsed time since the previous execution.

Similarly, minute and hour steps represent candidates within each field, 0-59 for minutes and 0-23 for hours, and are distinguished from independent elapsed time timers.

Chapter 5

Simple Explanation, Timezone, and Copy Function

The English explanation combines the conditions of month, day, and day-of-week with hour and minute conditions. If all are asterisks, it is "every minute"; if hour is an asterisk and minute is fixed, it is "at the specified minute of every hour"; if minute is an asterisk and hour is fixed, it is "every minute within that hour".

This explanation is approximate for confirming the selection content, and is not a verified parser capable of translating arbitrary expressions or defining explicit start anchors.

A timezone name or UTC offset is not embedded in the 5-field expression. Even with the same 0 9 * * *, the local time executed differs when the server runs on UTC and when it runs on local time.

Some services, like GitHub Actions or AWS EventBridge Scheduler, handle timezones separately from schedule settings, so check the expression and environment settings as a pair.

For regions adopting daylight saving time, the handling of non-existent times or duplicate times also depends on the implementation side's specifications.

Clicking "Copy Cron expression" passes the currently displayed 5-field string to the Clipboard API, showing a 2-second transient success UI without awaiting the Promise.

Note that the UI provides no dedicated failure notice; if it fails due to permissions or browser restrictions, you must manually select and copy the expression.

It does not format spaces, add command parts, or download configuration files when copying.

Even if you reselect the 8 presets, the target for copying is the expression displayed on the screen at that time. There is no copy history, automatic saving, assigning setting names, or list management of multiple expressions.

If you want to keep another candidate, copy the expression and save it to your local configuration file or memo before changing to the next condition.

Chapter 6

Format Differences with GitHub Actions, AWS, etc., and Unsupported Scope

GitHub Actions schedule uses a 5-field format, but the minimum execution interval is 5 minutes, and the schedule targets the latest commit on the default branch.

The default timezone is UTC, and current official syntax also includes a format specifying the optional IANA timezone name in a separate field.

Execution exactly at the specified time is not guaranteed, and it may be delayed under high load. This tool does not generate YAML for GitHub Actions or the timezone item, but only creates the 5-field part.

AWS EventBridge Scheduler uses 6 required fields of "minute hour day month day-of-week year", and uses specific symbols like question marks for day and day-of-week requirements.

The timezone is also a separate setting from the schedule expression. Therefore, 0 9 * * * from this tool cannot be pasted directly as an expression for AWS, as they are not directly interchangeable.

Quartz's second and year fields, L, W, #, ?, and service-specific conversions are also unsupported.

In addition, it does not perform arbitrary string input, syntax analysis, range validation, detection of non-existent dates, listing next/past execution dates, job registration or execution, execution history, notifications, or daylight saving time simulation.

When applying the output to crontab, CI, or cloud services, check the command part, permissions, environment variables, timezone, minimum interval, and handling of days and days-of-week in the official documentation of that environment and a test environment.

Frequently Asked Questions (FAQ)

A.
The order is minute, hour, day, month, day-of-week from the left. The timezone is not included in the 5-field string, so please check the settings on the server or service side. GitHub Actions defaults to UTC, but currently also supports specifying an IANA timezone name.
A.
In general POSIX cron, if both day and day-of-week are restricted, it is evaluated as an OR condition of "specified day OR specified day-of-week". Since there are implementation differences, please compare the official documentation of your environment with the simple explanation before setting in production. The tool's simple explanation may not explicitly state the OR condition.
A.
Neither is true. 31 represents only the 31st day and does not match months without 31 days. In a general step extension, */2 in the day field means 2 increments from the 1st, and does not mean continuous 48-hour intervals or even-numbered days. Note the tool's UI vaguely calls this "every other day".
A.
You need to check the specifications of the destination. GitHub Actions uses 5 fields but has conditions such as minimum interval and branches. AWS EventBridge Scheduler is a different format using 6 fields including year and symbols like ?. This tool does not perform arbitrary expression parsing, next execution time calculation, or environment-specific conversion.