piapia123
en

Cron Expression Parser & Next Run Times

Conversion

Everything runs locally in your browser — nothing is uploaded

Input
Output

Turn something like “*/15 9-17 * * 1-5” into plain English: each field is explained in turn, a one-line summary follows, and the next few run times are listed. Times are found by jumping to the next possible match rather than testing every minute, so even a schedule pinned to 29 February resolves instantly. An expression that can never fire — 31 February, say — is reported with the reason instead of leaving the page spinning.

Features

  • All the usual syntax: star, single value, a-b ranges, a,b,c lists and /n steps on stars or ranges
  • Month and weekday names (JAN-DEC, SUN-SAT) are accepted
  • Per-field explanation plus a one-line summary such as "every 15 minutes of 09:00 to 17:00 on Monday to Friday"
  • Lists the next 1-50 run times with the weekday for each
  • Applies the classic day-of-month / day-of-week OR rule (Vixie cron semantics)
  • Understands the @daily, @hourly, @weekly, @monthly and @yearly macros
  • Impossible schedules are rejected up front, naming the fields that cannot line up
  • Run times can be shown in local time or UTC, since server crons usually run in UTC

How to use

  1. Paste a 5-field cron expression into the box
  2. Choose the description language, how many runs to list, and the timezone
  3. Click Run (or press Ctrl/⌘ + Enter)
  4. Copy the result, or fix the expression using the breakdown

FAQ

Why was my 6-field expression rejected?
A leading seconds field is the Quartz and Spring convention; classic cron has five fields. Reading a 6-field expression as 5 fields shifts every field by one, so the run times you get back are for a completely different schedule — this tool refuses it and asks you to drop the seconds field rather than guess.
What happens when both day-of-month and day-of-week are set?
Classic (Vixie) cron treats them as an OR: “0 0 1 * 1” fires on the 1st of the month, or on any Monday. Only when one of the two is a star does it become an AND. Many implementations get this wrong; this tool follows Vixie.
Which timezone are the run times in?
Either, and it defaults to local time. Containers and servers usually run cron in UTC while local time is easier to sanity-check by hand, so both are offered. Switching shifts every listed time — and the weekday shown along with it.
Why does it say the expression can never fire?
For example “0 0 31 2 *”: February has no 31st in any year, so it never runs. The tool checks whether the day and month combinations exist at all. On top of that there is a four-year search limit (leap-year gaps can reach eight years); past the limit it reports that nothing was found instead of searching forever.

Related tools