Cron Schedule Calculator
Cron expressions are read wrong far more often than they are written wrong, and the classic trap is the two day fields: when both the day of month and the day of week are restricted, cron fires on either, not both. That single rule turns an expression someone meant as “the first Monday” into “the first of the month and every Monday”. This parses the expression, lists the next runs, and says plainly when that rule is in play.
What this generator does
Parses all five fields into the sets of values they allow, then walks forward day by day from your starting point, taking the allowed hours and minutes on each matching day until it has enough runs.
How to use this tool
- Enter the cron expression, five fields separated by spaces.
- Set the date and time to count forward from, or press Use today.
- Choose how many runs to list.
- Read the next firing times, and any note about how the fields combine.
Understanding the controls
- Cron expression
- Five fields: minute, hour, day of month, month, day of week. Lists, ranges and steps all work, as do names like MON and JAN, and 7 is accepted for Sunday as well as 0.
- Starting date and time
- Where to count forward from. The first run listed is the first one strictly after this moment, so a job due at exactly this minute shows next time instead.
- Runs to show
- How many firing times to list. The gaps between them are checked afterwards for anything the search might have skipped.
Common use cases
- Checking what an inherited cron expression actually does
- Confirming a schedule fires when you think it does before deploying it
- Seeing the day-of-month and day-of-week rule in action
- Working out when a monthly job next runs across a month boundary
- Spotting an expression that names a date which never occurs
How this generator works
Each field becomes a set: a list of minutes, a list of hours, and so on. Walking forward a day at a time is enough, because within a matching day every combination of the allowed hours and minutes fires. Matching a day is where the interesting rule lives — cron takes the union of the day-of-month and day-of-week fields when both are restricted, and the intersection of neither when both are wildcards. Dates are computed with purpose-written calendar arithmetic, including leap years, rather than a general date library. Before display every run is re-tested against all five fields independently, and the gap between each pair of consecutive runs is scanned to confirm no matching minute was passed over.
Randomness and fairness
Nothing here is random. An expression and a starting point give exactly one sequence of runs, computed rather than sampled — the cron expression generator is the one that produces a new expression.
For how randomness is produced across the whole site, see how Generate Random works.
Limitations and good to know
- Standard five-field cron only. Seconds fields, the @yearly style shorthands, and extensions like L, W and # are not parsed.
- Times are civil times with no time zone. A real scheduler applies one, and a daylight-saving change will move a daily run by an hour or skip it entirely.
- The search looks five years ahead, so an expression whose next run is further away than that reports nothing rather than guessing.
- This says when a job would fire, not whether it would succeed, and says nothing about overlapping runs or missed catch-ups.
Privacy and your data
The parsing runs in your browser and the expression you enter is never transmitted, stored or included in analytics.
Related generators
- Cron Expression GeneratorA cron expression built field by field, with the plain-English sentence that matches it.
- Interval Scheduling GeneratorPicks the largest possible set of non-overlapping bookings, and shows how many the obvious first-come rule would have lost.
- Business Day CalculatorWorking days between two dates, and the date a number of working days away — with both ends counted and holidays excluded.
- Recurring Date GeneratorExpands a repeat rule into actual dates — and says what happened when a month has no 31st or no fifth Tuesday.