Cron Expression Generator
Build a standard 5-field cron expression from plain choices - every hour, daily at a time, weekly, monthly - with the schedule spelled out in words underneath.
The five fields, in order
Standard cron reads minute, hour, day of month, month, day of week - so 0 9 * * * is minute 0 of hour 9 with no restriction on the rest, which is nine in the morning daily. The generator keeps that order and marks every field you are not constraining with *, which is the whole reason to use a builder rather than recall: the classic error is swapping the first two fields and turning a daily job into something that fires during the ninth minute of every hour.
The day-of-month and day-of-week fields interact in a way that catches people: when both are specified, most cron implementations fire when either matches, not when both do. The generator therefore only ever fills one of them per expression, and says so in the state row, so the schedule you read is the schedule that runs.
Usage example
You want a nightly export at 02:30 server time. Choose "once a day", set hour 2 and minute 30, and the expression reads 30 2 * * * with the human line confirming it. Switch to "once a week" and pick day 1: the expression becomes 30 2 * * 1, and the words underneath say Monday - which is the check worth making, because "day 1" in the day-of-week field is Monday, while "1" in the day-of-month field is the first of the month.
Server timezone is the variable this tool cannot see: cron runs on the machine's clock, so a schedule built against your laptop's timezone may be hours off once deployed. Confirm the host's timezone before trusting the human-readable line. For the format side of the same file, a schedule list is easier to review once it is valid JSON from the JSON formatter, and Unix timestamp conversion shows you the actual instant the next run lands on.
Frequently asked questions
Is this standard cron syntax or something proprietary?
Standard five-field syntax accepted by cron, crontab, most CI schedulers and Quartz in its five-field mode. Six-field variants with a seconds field (used by some Quartz configurations and Spring) are not generated here.
Why can I not set both day of month and day of week?
Because combining them means "either matches" on most implementations, which is rarely what someone building a schedule intends. The generator emits exactly one so the result is unambiguous.
Does it handle daylight saving changes?
That is the cron daemon's behaviour, not the expression's. Jobs scheduled in the skipped hour may not run and jobs in the repeated hour may run twice, depending on the implementation - worth knowing for anything hourly during a DST boundary.
Related tools
Unix Timestamp Converter
Convert a Unix epoch timestamp into a readable UTC and local date, or turn any date and time back into epoch seconds and milliseconds - live as you type.
Days Between Dates
Count the exact number of days between two dates with the week breakdown, the inclusive count and the weekday each end falls on. Leap years are handled.
JSON Formatter
Format, validate and beautify JSON with error reporting and stable key ordering.