Cron Expression Generator & Explainer
Build a valid cron expression from plain-English choices, or paste any crontab string to see what it means in words, a field-by-field breakdown, and the next five run times. Uses the standard Unix 5-field crontab. No signup, no ads, runs entirely in your browser.
How it works
A standard cron schedule has five space-separated fields, read left to right: minute, hour, day-of-month, month, and day-of-week. This tool follows the field order, value ranges, and operators defined in the crontab(5) manual page and the POSIX crontab specification.
┌──────── minute (0–59) │ ┌────── hour (0–23) │ │ ┌──── day of month (1–31) │ │ │ ┌── month (1–12, or JAN–DEC) │ │ │ │ ┌ day of week (0–7, 0 and 7 = Sunday, or SUN–SAT) │ │ │ │ │ * * * * * command
Each field accepts four operators:
*— every valid value for the field.a,b,c— an explicit list of values.a-b— an inclusive range.- a step value — every nth value across the whole field, or within a range (for example a minute step of 15 means 0, 15, 30, 45).
Build mode maps each frequency choice deterministically to the five fields — hourly becomes M * * * *, daily becomes M H * * *, weekly fills the day-of-week field, and contiguous day selections collapse into a range (so Monday to Friday becomes 1-5, not 1,2,3,4,5). Explain mode parses a pasted string: it resolves a leading nickname such as @daily to its five-field equivalent, validates that there are exactly five fields and that every value sits inside its legal range, then renders each field to English.
The next-run list is a forward search over the calendar in your chosen IANA timezone. It walks day by day, and on each day that satisfies the month and day rule it checks the matching hours and minutes, converting each wall-clock time back to an exact instant (daylight-saving aware). One subtlety from crontab(5) is built in: when both the day-of-month and day-of-week fields are restricted, a day counts if either matches, not both. The search is capped at four years, so an impossible expression like 0 0 30 2 *(30 February) returns “no upcoming runs” instead of looping forever. Results are cross-checked against an independent minute-by-minute reference scan; the two algorithms agree on ordinary days, leap days, and daylight-saving spring-forward gaps. Each scheduled local time is listed once — inside the single repeated hour of a daylight-saving fall-back, where “the next run” is genuinely ambiguous, treat the preview as a guide.
Worked examples
Frequently asked questions
Sources & references
- crontab(5) — Linux manual page (field order, operators, names, day rule, @nicknames)
- POSIX / IEEE Std 1003.1 — crontab utility specification
- Cron — overview of the Vixie/cronie extensions used on most Linux distros
The field model, operators, and nickname table on this page were last cross-checked against the crontab(5) and POSIX sources on 2026-06-27. Generated expressions and next-run times are verified by two independent algorithms in the tool's source.
Related tools
Comments & feedback
Spotted a bug or want an improvement? Tell us — our team reviews every comment, and good ideas get built. Comments are public and anonymous.
Found a bug, edge case, or want to suggest an improvement?
Email me at [email protected] — most fixes ship within 24 hours.