Cron Expression Parser

Explain cron expressions in plain English and preview the next scheduled run times.

CRON EXPRESSION
0
Minute
0–59
9
Hour
0–23
*
Day
1–31
*
Month
1–12
1-5
Weekday
0–6

Explain cron expressions in plain English and preview the next scheduled run times.

Runs at minute 0 of hour 9, on weekdays 1–5

NEXT 5 RUN TIMES
11/16/2026, 9:00:00 AMin 1d 9h
11/17/2026, 9:00:00 AMin 2d 9h
11/18/2026, 9:00:00 AMin 3d 9h
11/19/2026, 9:00:00 AMin 4d 9h
11/20/2026, 9:00:00 AMin 5d 9h

When a cron expression parser is the right tool

Use this page to read a classic five-field cron expression and see a short English description plus the next five matching times in your browser’s local time zone. Type an expression or click a preset; the result updates as you type. It is a small built-in parser, not a full crontab implementation — for a related validator see Crontab Validator.

Use cases

Checking a weekday morning job

The default expression is 0 9 * * 1-5, and a preset labeled “Every weekday 9am” fills the same value. The description is “Runs at minute 0 of hour 9, on weekdays 1–5.” The next-run list is 09:00 on forthcoming weekdays in your local zone, not UTC, unless your computer is set to UTC.

Trying the common presets

Presets cover every minute, every hour, midnight daily, Mondays at 09:00, weekdays at 09:00, every 15 minutes, and midnight on the 1st of the month. They are ordinary five-field strings; */15 is implemented as a step from 0.

Seeing why a schedule never fires

0 9 * * 7 and 0 9 * * MON describe an invalid weekday and find no runs. 0 0 1 * 1 only matches a 1st that is also a Monday, so you may get fewer than five times in the next year.

How parsing works

The input is trimmed and split on whitespace. Each field is tested with a small matcher for *, */n, comma lists, hyphen ranges, or a single integer. Next runs are found by advancing one local minute at a time for up to a year. The five field labels under the input highlight a part when it is present and not *.

Example — weekdays at 09:00, the default expression
0 9 * * 1-5

Description: Runs at minute 0 of hour 9, on weekdays 1–5
Next runs (in the browser’s local time zone):
  the next five weekdays at 09:00

Relative labels such as “in 1d 2h” sit beside each time and refresh about once a second. The search itself also starts from “now,” so the list can move forward as time passes.

What this tool does not do

It does not parse seconds or year fields, @-nicknames, or Quartz ? / L / W / # syntax. It does not use OR for combined day-of-month and weekday constraints, and it does not evaluate in a zone other than the browser’s. Nothing is uploaded.

How to use Cron Expression Parser

  1. Type a five-field expression, or click a preset.
  2. Read the field breakdown, the one-line description, and the next five run times.
  3. If you see the five-field error, remove extra fields or nicknames and try again.

Frequently asked questions

What cron format does this parser accept?

Exactly five whitespace-separated fields: minute (0–59), hour (0–23), day of month (1–31), month (1–12), and weekday (0–6, Sunday = 0). There is no seconds field, no year field, and no support for @hourly, @daily, or other nicknames. A sixth field is rejected.

Which step, range, and name syntaxes work?

A field may be *, a single number, a list of numbers (1,2,5), a range (1-5), or a step from the start of the field (*/15). Combined forms such as 1-5,7 or 1-10/2 are not implemented: a comma list is parsed with Number(), so 1-5,7 only matches 7, and a hyphen after that still ignores a /step. Month and weekday names (JAN, MON) are not accepted. 7 is not treated as Sunday; the description will say invalid weekday and no runs will match.

If both day-of-month and weekday are restricted, is that OR or AND?

AND. Standard Vixie cron treats a restricted day-of-month and a restricted weekday as OR (fire when either matches). This parser requires both. So 0 0 1 * 1 means “midnight on a day that is the 1st and also a Monday,” not “midnight on the 1st or on every Monday.” That can yield few or no runs in the next year.

In which time zone are the next run times?

The browser’s local time zone. The search starts at the beginning of the next local minute and walks minute by minute, up to five matches or one year ahead. If nothing matches, you see “No matching times found in the next year.” Dates are shown with toLocaleString(), and the relative “in Xd Yh” text updates about once a second.

Is the English description a complete explanation?

It is a short template: “Runs at {minute} of {hour}”, with extra clauses only when day, month, or weekday is not *. Invalid single values become “invalid minute” (or hour, day, and so on) in that sentence, but they do not set the red error state — the error banner appears only when the expression does not have exactly five fields. Lists of weekdays may show Mon, Tue; ranges stay numeric (weekdays 1–5).

Is my expression sent to a server?

No. Parsing and the next-run search run entirely in your browser. There is no external cron library.

Related tools and guides

References

  • crontab(5) documents five-field Vixie cron, including the OR rule when both day-of-month and weekday are restricted. This page uses AND instead, and it does not implement names, L, W, or #.
  • Quartz and some CI systems use a six- or seven-field expression (with seconds and sometimes a year). Those strings will not parse here.