Cron Expression Parser, Describer, and Builder
This free cron expression parser turns a standard five-field cron schedule into plain English, shows you the next times it will run, and breaks down what each field matches. Paste an expression such as 0 9 * * 1-5 and you immediately see "At 09:00 on every day-of-week from Monday through Friday", the fields it expands to, and the upcoming run times in your own timezone. It is built for developers and system administrators who want to confirm a crontab entry, an AWS or CI schedule, or a background-job timer does exactly what they intend before shipping it.
It also works the other way around: the built-in builder lets you assemble a schedule from simple controls -- every N minutes, hourly at a chosen minute, daily at a time, weekly on selected days, or monthly on a given day -- and writes the matching cron expression for you. Everything runs entirely in your browser using JavaScript; nothing you type is uploaded or stored, and the next run times are computed on your device against your local clock.
How to use Cron Expression Parser
- Type or paste a cron expression into the editor, in the order minute hour day-of-month month day-of-week.
- Read the plain-English description to confirm the schedule matches your intent.
- Open the Breakdown and next runs tab to see each field's matched values and the next five run times in your local timezone.
- If the expression is invalid, read the error message, which names the field and the problem.
- Prefer to build from scratch? Open the Builder tab, pick a pattern and its options, then choose Use this expression to load it into the editor.
- Use the copy buttons to copy the finished expression, or any run time as an ISO 8601 timestamp.
The five cron fields
A standard cron expression has five space-separated fields. Each field accepts a value, a range, a list, or a step, and the whole expression matches a moment in time when every field matches.
- Minute -- 0 to 59.
- Hour -- 0 to 23 (24-hour clock).
- Day of month -- 1 to 31.
- Month -- 1 to 12, or the names JAN through DEC.
- Day of week -- 0 to 6 where 0 (and also 7) is Sunday, or the names SUN through SAT.
*/15 9-17 * * MON-FRI minute: */15 -> 0, 15, 30, 45 hour: 9-17 -> 9,10,11,12,13,14,15,16,17 day-of-month: * -> every day month: * -> every month day-of-week: MON-FRI-> Monday through Friday
Special characters
- Asterisk (*) matches every value in the field, for example * in the hour field means every hour.
- Range (-) matches an inclusive span, for example 1-5 in day-of-week means Monday through Friday.
- List (,) matches several values, for example 1,15 in day-of-month means the 1st and the 15th.
- Step (/) matches at a fixed interval, for example */15 means every 15th value, and 10-30/5 means every 5th value from 10 through 30.
- Names replace numbers in the month and day-of-week fields, for example JAN or SUN, and are case-insensitive.
Macros and shortcuts
In place of five fields you can use a nickname, which this tool expands to the equivalent expression and describes normally.
- @yearly or @annually -- once a year at midnight on 1 January (0 0 1 1 *).
- @monthly -- once a month at midnight on the 1st (0 0 1 * *).
- @weekly -- once a week at midnight on Sunday (0 0 * * 0).
- @daily or @midnight -- once a day at midnight (0 0 * * *).
- @hourly -- once an hour at minute 0 (0 * * * *).
- @reboot is recognized but runs once at startup, so it has no scheduled clock times to compute.
The day-of-month and day-of-week rule
Cron treats the day-of-month and day-of-week fields specially. When only one of them is restricted (the other is *), the schedule is constrained by that one field, as you would expect. But when BOTH are restricted, cron runs the job when EITHER field matches, not only when both do. For example 0 0 13 * 5 does not mean "Friday the 13th"; it means midnight on the 13th of every month AND on every Friday. This tool follows that standard behavior when computing run times and shows a reminder whenever both fields are restricted.
Related terminology
- Cron expression
- A compact schedule made of five fields (minute, hour, day-of-month, month, day-of-week) that defines the recurring times a task should run.
- Crontab
- The cron table -- the file that lists cron expressions alongside the commands to run, edited on Unix-like systems with the crontab command.
- Cron job
- A single scheduled task: a cron expression paired with the command or action it triggers each time the schedule matches.
- Step value
- The /n part of a field that matches at a fixed interval, such as */15 for every 15th minute or 1-7/2 for every other day within a range.
- Macro (nickname)
- A shorthand such as @daily or @hourly that stands in for a full five-field expression.
Frequently asked questions
- What does a cron expression like 0 9 * * 1-5 mean?
- It means "At 09:00 on every day-of-week from Monday through Friday" -- minute 0, hour 9, any day of the month, any month, on weekdays. Paste it into the parser to see the same description plus the next run times.
- What timezone are the next run times shown in?
- They are computed on your device against your local system clock and shown in your local timezone, which is displayed next to the run list. Cron on a server instead uses that server's timezone, so if your server runs in UTC the actual run times will follow UTC.
- Why does a schedule with both a day-of-month and a day-of-week seem to run more often than expected?
- Because standard cron uses an OR between those two fields when both are restricted: the job runs when either the day-of-month or the day-of-week matches. For example 0 0 13 * 5 runs on every 13th and on every Friday, not only on Fridays that fall on the 13th. This tool applies that rule and warns you when both fields are restricted.
- Does this tool support seconds, or Quartz and other six-field formats?
- No. It handles the standard five-field Unix cron format (minute hour day-of-month month day-of-week). Six-field expressions that add a seconds field, and Quartz-specific characters such as ? L W and #, are not supported and will be reported as invalid.
- What special syntax can I use in each field?
- Asterisks for every value, ranges like 1-5, lists like 1,3,5, steps like */15 or 10-30/5, and names (JAN-DEC, SUN-SAT) in the month and day-of-week fields. You can also use the macros @yearly, @monthly, @weekly, @daily, @midnight, and @hourly.
- Is my cron expression sent to a server?
- No. Parsing, the plain-English description, and the next-run calculation all happen in your browser with JavaScript, so nothing you enter leaves your device.