Cron Expression Builder
Build and decode cron expressions with a plain-English explanation and the next run times. Covers standard five-field and extended formats.
Last reviewed by the Radiatus Cloud team
Explanation
- Minute: 0-59
- Hour: 0-23
- Day of Month: 1-31
- Month: 1-12 (or JAN-DEC)
- Day of Week: 0-6 (Sun-Sat)
Need this built for your product?
We design, build & host secure software & APIs.
The five fields
A standard cron expression has five fields in a fixed order: minute, hour, day of month, month, and day of week. Each accepts a number, a list separated by commas, a range with a hyphen, a step with a slash, or an asterisk for every value. Minute runs 0 to 59, hour 0 to 23, day of month 1 to 31, month 1 to 12, and day of week 0 to 6 with Sunday as 0. Some implementations also accept 7 for Sunday.
The day-of-month and day-of-week trap
This catches almost everyone once. When both the day-of-month and the day-of-week fields are restricted, standard cron treats them as OR, not AND. The expression 0 0 13 * 5 does not mean "Friday the 13th". It means the 13th of every month and also every Friday. To get one specific weekday, leave day-of-month as an asterisk. Quartz-style cron, used by Java schedulers, resolves this differently by requiring one of the two fields to be a question mark.
Steps behave differently from ranges
*/15 in the minute field means every fifteenth minute starting at zero: 0, 15, 30, 45. But */40 means 0 and 40 only, then it resets at the top of the hour, so the gap between the second and third run is 20 minutes rather than 40. Steps divide the field's range; they do not schedule a repeating interval that crosses field boundaries. Any step that does not divide evenly into 60 produces an uneven schedule.
Time zones and daylight saving
Cron typically runs in the server's local time zone. When clocks go forward, jobs scheduled in the skipped hour never run. When clocks go back, jobs in the repeated hour may run twice. For anything where a missed or doubled run matters, either run the server in UTC or use a scheduler with explicit time zone support and idempotent jobs.
Special strings
Most implementations accept shorthand: @hourly, @daily, @weekly, @monthly, @yearly and @reboot. They are clearer than the numeric equivalents for simple schedules and worth using when they fit.
Related tools
- JSON Formatter — Format and beautify JSON in your browser. Pinpoints syntax errors by line and column, flags unsafe integers, and never uploads your data to a server.
- JSON Validator — Validate JSON syntax with precise line and column errors, and check documents against a JSON Schema. Runs locally in your browser, nothing uploaded.
- Regex Tester — Test regular expressions against sample text with live match highlighting, capture groups and flag control. Runs entirely in your browser.
- HTML Minifier — Minify HTML by removing comments and redundant whitespace, without breaking inline elements or pre blocks. Runs entirely in your browser.
Frequently Asked Questions
Why does my Friday the 13th cron run every Friday?
When both day-of-month and day-of-week are restricted, standard cron combines them with OR, not AND. The expression matches the 13th of every month and every Friday. There is no way to express a true AND in standard cron; you need a check inside the job.
What does */15 actually mean?
Every fifteenth value within the field's range, so minutes 0, 15, 30 and 45. Note that a step which does not divide the range evenly produces an uneven schedule: */40 gives minute 0 and 40, then resets, leaving a 20-minute gap.
Which time zone does cron use?
Usually the server's local time zone. That means jobs in the hour skipped by daylight saving never run, and jobs in the repeated hour may run twice. Run the server in UTC, or use a scheduler with explicit time zone support.
Is Sunday 0 or 7?
Zero in the standard, and many implementations also accept 7 for compatibility. Using the three-letter abbreviations such as SUN and MON where supported avoids the ambiguity entirely.
What is the difference from Quartz cron?
Quartz, used by Java schedulers, adds a seconds field at the front and an optional year at the end, giving six or seven fields. It also requires a question mark in either day-of-month or day-of-week, which removes the OR ambiguity.
Privacy & Security
Built locally.
About This Tool
This tool runs entirely in your browser. No data is sent to any server, ensuring complete privacy. Simply use the interface above to get started — no registration or login required.
Disclaimer: This tool is provided "as is" without warranty of any kind. Results are for educational and utility purposes.
Related Tools
JSON Formatter
DeveloperFormat and beautify JSON in your browser. Pinpoints syntax errors by line and column, flags unsafe integers, and never uploads your data to a server.
JSON Validator
DeveloperValidate JSON syntax with precise line and column errors, and check documents against a JSON Schema. Runs locally in your browser, nothing uploaded.
Regex Tester
DeveloperTest regular expressions against sample text with live match highlighting, capture groups and flag control. Runs entirely in your browser.