{{ humanReadableLong }}
| Field | Value | Copy |
|---|---|---|
| {{ row.label }} | {{ row.value || '—' }} | |
| No details. | ||
A crontab entry is a compact schedule in which five time fields tell a Unix-style scheduler when to run a command. Small syntax mistakes have outsized consequences, so a generator that translates tokens into readable timing helps you catch the "every minute instead of every Monday" class of error before the job goes live.
This tool is built around the common 5-field cron format. You can assemble a schedule from scratch, start from presets such as daily midnight or every five minutes, or paste an existing line and let the fields fill back in. The result stays readable because the schedule is shown as both raw cron text and a plain-language summary.
That makes the package useful when you are turning a maintenance idea into an actual job, such as a nightly backup, a weekday report at 09:30, or a one-time boot action after restart. The benefit is not just generating the expression, but verifying that the schedule means exactly what you think it means before you copy it into a crontab.
The tool also surfaces one of the most common cron surprises. When both day-of-month and day-of-week are restricted, many cron implementations run the job when either field matches rather than waiting for both at the same time. A line that looks narrow can therefore be much broader than it first appears.
It is equally important to see what the package does not try to be. This is not a universal cron dialect workbench, and the copy-ready line is deliberately narrow because it contains only the schedule, an optional user, and the command. Environment-style items such as MAILTO, SHELL, PATH, TZ, and Comment are captured for notes and JSON output, but they are not inserted into the final line.
If your job matches a familiar rhythm, start with Preset. The built-in list covers common intervals, daily and monthly schedules, and six @ macros, so you can reach a trustworthy baseline quickly. If you already have a line and want to edit rather than rebuild, paste it into Parse line instead of retyping by hand.
Simple mode when plain tokens such as 0, *, MON-FRI, or JAN-MAR are enough. Switch a field to Advanced only when you specifically want the value, every-n, range, or list builder.Day of Month and Day of Week are not *. That warning exists for a reason, and it is the last place to catch an unexpectedly broad schedule before it reaches cron.Full line, not just Expression. The timing can be correct while the wrong user or command still turns the entry into the wrong job.If you add User, MAILTO, SHELL, PATH, TZ, or Comment, remember what each surface is for: Schedule Overview shows the parts you can copy into a crontab entry, while Run Profile and JSON retain the broader context you may want in documentation.
The package works with two schedule shapes. The first is the standard 5-field expression composed from minute, hour, day of month, month, and day of week. The second is a small macro set: @reboot, @hourly, @daily, @weekly, @monthly, and @yearly. When a macro is selected, the tool keeps that macro as the expression instead of expanding it into five fields.
Each field can come from plain text or from the field builder. Validation accepts *, single numbers, comma lists, ranges, step values such as */5 and 1-10/2, and names for months and weekdays. Accepted names are limited to the first three letters such as JAN, FEB, MON, or FRI. That matches the package logic even though some cron implementations support additional extensions that this validator does not.
Parsing is intentionally pragmatic. The parse box reads the first nonblank line only. Macro lines are split into macro, optional user, and command. Non-macro lines are treated as five timing fields plus command, or as system-style entries with a username in the sixth token when there are at least seven tokens and that username matches the package's username rule. This is ideal for quick edits, but it is not a full crontab-file parser.
Once the fields are rendered, the copy surfaces are composed with simple rules:
| Field | Min | Max | Names allowed | Supported token families |
|---|---|---|---|---|
| Minute | 0 | 59 | No | Wildcard, single value, list, range, */n, x-y/n |
| Hour | 0 | 23 | No | Wildcard, single value, list, range, */n, x-y/n |
| Day of Month | 1 | 31 | No | Wildcard, single value, list, range, */n, x-y/n |
| Month | 1 | 12 | JAN-DEC | Wildcard, single value, list, range, */n, x-y/n |
| Day of Week | 0 | 7 | SUN-SAT | Wildcard, single value, list, range, */n, x-y/n |
| Output surface | Meaning | Notes |
|---|---|---|
| Expression | The rendered 5-field cron string or selected macro | Used when you only need the schedule token itself |
| Full line | Expression plus optional user plus command | Only User is added here; MAILTO, SHELL, PATH, TZ, and Comment are not |
| Human schedule | Plain-language timing summary | A translation aid for quick review, not the source of truth cron executes |
| Warnings | Inline caution messages | Most important for dual day-field schedules and blank commands |
| JSON | Structured snapshot of inputs, derived strings, and validation state | Retains the note-style fields that are not emitted into Full line |
The limits are just as important as the supported path. The package does not validate seconds fields, year fields, or extensions such as L, W, #, ?, or Cronie's tilde randomization syntax. It also does not parse environment-setting lines the way a full crontab file does. Those boundaries make the generator predictable, but they also mean you should verify unusual schedules elsewhere before installation.
All schedule rendering, validation, parsing, and JSON assembly happen in the browser. No tool-specific upload or server-side cron checker is present in this package.
Use this path when you want a line you can inspect before copying.
Preset if the schedule is common, or leave the default wildcard fields in place if you want to build from scratch. The summary box immediately shows the currently generated line.Minute, Hour, Day of Month, Month, and Day of Week. Stay in Simple for plain tokens, or switch an individual field to Advanced if you want the value, every-n, range, or list builder. Red validation text under a field means that field should be fixed before you trust the result.Command. If you are adapting an existing job, paste it into Parse line and click Parse; expect the fields to repopulate and Parse warning to appear if extra lines were ignored.Advanced only for context fields such as User, MAILTO, SHELL, PATH, TZ, or Comment. Remember that only User affects Full line.Schedule Overview. Check the field rows, confirm Expression or Macro, and read Full line plus any warning banner before copying.Run Profile and JSON if you need an audit trail or want to preserve the extra context fields. Copy the result only after the human summary and the raw line both match your intent.Stop when Full line still reads correctly with no surrounding explanation.
The two outputs that matter most are Full line and the warning state around it. Human schedule is helpful as a translation layer, but cron will evaluate the raw tokens, not the prose. If the human summary and the token string disagree in your head, trust the token string and fix the fields.
Command is present, and Full line reads exactly like the job you intend to install.Day of Month and Day of Week does not usually create an AND condition, so the warning banner should slow you down.MAILTO, SHELL, PATH, TZ, and Comment showing up in JSON does not mean they are emitted into Full line.Before pasting the line into a live crontab, run a harmless command such as a timestamped log append on the target host so the scheduler dialect, timezone, and user context are confirmed in practice.
Nightly backup in a user crontab. Pick the daily midnight preset and set Command to /usr/local/bin/backup. Schedule Overview shows Expression as 0 0 * * *, Full line as 0 0 * * * /usr/local/bin/backup, and the summary reads Every day at 00:00. That is a straightforward user-crontab entry because no separate User token is inserted.
A month-and-weekday schedule that is broader than it looks. Enter minute 30, hour 9, day of month 1, month *, day of week MON-FRI, and a report command. The tool renders 30 9 1 * MON-FRI and raises the warning that both day fields are restricted. The practical meaning is "the first day of the month, plus every weekday at 09:30" in many cron environments, not "only when the first day happens to be a weekday."
Parsing a macro while cleaning up pasted input. Paste two lines into Parse line, with the first line set to @weekly root /usr/local/bin/cleanup. After you click Parse, the tool keeps only the first nonblank line, reports that extra lines were ignored, fills Macro with @weekly, sets User to root, and produces Full line as @weekly root /usr/local/bin/cleanup. This is useful for quick repair, but it also shows that the parser is single-item by design.
Fixing an invalid hour before it becomes a live mistake. Set Hour to 25 with a simple command such as /usr/local/bin/task. The Hour row turns invalid with a Value out of bounds message, and overallValid in the JSON block becomes false. The line may still look superficially complete, but it should not be trusted until the hour is corrected to a value in the 0-23 range.
No. The package covers 5-field schedules plus six @ macros and validates wildcard, list, range, and step syntax. It does not validate seconds, year fields, or extensions such as L, W, #, ?, or tilde randomization.
Because Full line is assembled from the schedule, optional user, and command only. The other advanced fields are retained for context in Run Profile, JSON, and DOCX export, but they are not emitted into the copy-ready line.
It reads the first nonblank line of a macro entry, a 5-field cron line, or a system-style line with a user token. Extra lines are ignored, which is why the parser is good for single-entry edits rather than whole files.
No tool-specific backend is present here. Field rendering, validation, parsing, and JSON generation all happen in the browser.
Because many cron implementations treat those two fields as an OR condition when both are restricted. The warning is there to stop you from installing a schedule that fires more often than intended.
| Term | Meaning in this package |
|---|---|
| Macro | A shorthand schedule token such as @daily or @reboot |
| Day of Month | The calendar day field that accepts values from 1 to 31 |
| Day of Week | The weekday field that accepts 0 to 7 or names from SUN to SAT |
| User crontab | A cron entry where the username is implicit and not written into the line |
| System-style entry | A cron entry that includes a username between the schedule and command |