Cron Expression Parser

Parse and explain cron expressions in plain English. Validate cron syntax and preview the next 10 scheduled run times. Free, browser-based.

  • Runs in your browser
  • Your data never leaves your browser
  • Free · No Sign-Up
Enter five fields in order: minute, hour, day of month, month and weekday. Seconds and @ shortcuts are not supported. The page opens with 0 9 * * 1-5 already parsed.
Click Parse or press Enter in the input to apply the expression. Ctrl+Enter (⌘+Enter on Mac) also parses it. Editing alone does not update the result. Ctrl+L (⌘+L) inside this tool clears the input, result and status.
minutehourdaymonthweekday
Presets:
Open Presets and choose one of eight schedules. Each preset replaces the expression and parses it immediately.

Parse a cron expression to see its explanation, field values and next run times.

Explanation The explanation is generated in English on every language version. Month and weekday names in the field values also remain in English.
Field values The breakdown shows each field expression and its first 12 matching values. An ellipsis marks additional values. Month and weekday numbers use English names; weekday 7 remains 7 in this display.
Run times The list shows the next 10 runs in your browser’s local time zone, starting after the current minute. Compare that zone with the scheduler’s zone. There is no time zone selector or show-more option.
Read the full guide Cron Expression Syntax: Fields, Examples and Scheduler Differences
Examples, details and FAQ Worked examples, how it compares with other tools, and answers to common questions.

Examples

The descriptions below are what the tool prints. The run times were computed by the tool’s own function starting from 2026-10-01 08:00 with the clock set to UTC; your list starts from the current minute.

ExpressionDescriptionFirst runs
0 9 * * 1-5At 9:00, on mon through friOct 1 09:00, Oct 2 09:00, Oct 5 09:00
*/15 9-17 * * mon-friAt every 15 minutes past 9 through 17, on mon, tue, wed, thu, friOct 1 09:00, 09:15, 09:30
30 2 1,15 * *At 2:30, on day 1, 15 of the monthOct 15 02:30, Nov 1 02:30, Nov 15 02:30
0 0 1 * 1At midnight, on day 1 of the month or on monOct 5, Oct 12, Oct 19 (00:00)
0 0 29 2 *At midnight, on day 29 of the month, in feb2028-02-29, 2032-02-29, 2036-02-29

In the second row the last run of each day is 17:45, not 17:00: the hour field 9-17 includes hour 17, and the minute field fires four times within it. To stop at 17:00, write the schedule as two lines (*/15 9-16 * * 1-5 and 0 17 * * 1-5). A few inputs and the message they give:

  • 0 0 * * * * (six fields, as in Spring or Quartz) → Invalid: expected 5 fields, got 6.
  • 0 24 * * * → Invalid expression — check each field range. Hours run 0–23.
  • 5/10 * * * * → the step error that suggests */10 or 5-59/10.
  • 0 0 30 2 * → the expression is valid, but no run time is found: No run time found: no real date matches these fields (for example, February 30).

Cron Field Reference

FieldAllowed valuesSpecial characters
Minute0–59* , - /
Hour0–23* , - /
Day of month1–31* , - /
Month1–12 or jan–dec* , - /
Day of week0–7 (0 and 7 = Sunday) or sun–sat* , - /

Day of Month and Day of Week

When both day fields are restricted, a day that matches either one runs (cronie crontab(5), POSIX crontab): 0 0 1 * 1 runs on the 1st of every month and on every Monday. If either field starts with *, */2 included, both must match, as in cronie, so 0 0 */2 * 1 runs only on Mondays with an odd date. The month field always has to match.

Next run times are found however far ahead they are: 0 0 1 1 * lists January 1 of the next ten years, and 0 0 29 2 * lists February 29 of leap years. For a date that never exists, such as 0 0 30 2 *, the tool says that no run time was found.

Unsupported Syntax

# (nth weekday, as in 1#2 for the second Monday), L (last), W (nearest weekday) and ? come from Quartz and similar schedulers; standard cron does not accept them. The tool does not guess a schedule for them: it shows an error that names the part and the field, for example “1#2” in the weekday field. Values that are not plain numbers or names, such as 1.5 or monday, are also rejected. A step must follow * or a range: cronie rejects 5/10, and so does this tool; write 5-59/10 or */10.

Limits

  • Local time only. Run times use the browser’s time zone. There is no time zone selector, and a CRON_TZ= line is not read; cronie uses CRON_TZ for the whole crontab.
  • Daylight saving time. Times that do not exist when clocks go forward never match, as crontab(5) states. Times that occur twice when clocks go back are listed once, although cronie runs the job twice.
  • English description. The plain-English sentence is generated in English on every language version of this page; field names and messages are translated.
  • No @ macros. @daily, @hourly, @reboot and the other shortcuts are reported as the wrong number of fields. Write the five-field form: @daily is 0 0 * * *.
  • Ten runs. The list always stops at ten; there is no “show more” or date picker.

Same Syntax, Different Schedulers

Five-field cron is shared by many systems, but they differ around the edges. GitHub Actions runs schedule workflows in UTC unless a time zone is set, never more often than every 5 minutes, and may delay runs at the start of the hour under high load. A Kubernetes CronJob accepts the @ macros and treats ? like *, which this tool rejects; set its time zone in .spec.timeZone, because CRON_TZ inside the schedule fails validation. If you need to build an expression rather than read one, the cron job generator writes it from form fields.

FAQ

What is a cron expression?

A cron expression is a string with 5 fields (minute, hour, day-of-month, month, day-of-week) that defines a recurring schedule. It is used by cron, crontab, Kubernetes, GitHub Actions, and many other systems.

What does * mean in a cron expression?

An asterisk (*) means 'every valid value'. For example, * in the minute field means 'every minute'. Combined with other fields it creates intervals.

What is the difference between '0 0 * * 0' and '0 0 * * 7'?

Both mean Sunday midnight. The day-of-week field accepts 0 and 7 as aliases for Sunday.

Does this support seconds or @reboot?

This tool supports the standard 5-field cron format (minute hour day month weekday). 6-field cron with seconds, @reboot and other @ shortcuts are not supported, and the Quartz-style characters #, L, W and ? give an error that names the unsupported part.

Can I paste a schedule from a GitHub Actions workflow?

Usually yes: GitHub Actions uses the same five fields. Two things differ. GitHub runs the schedule in UTC unless the workflow sets a timezone, while this tool lists runs in your browser's time zone. And GitHub's documentation shows 20/15 * * * * (minutes 20, 35 and 50); this tool follows cronie, which rejects a step after a single number, so write 20-59/15 instead.

Is my cron expression sent anywhere or saved?

No. The expression is parsed by the page's script in your browser tab; it is not sent to a server and not written to browser storage. The page's analytics records a usage event with the tool name and the action (Parse, Enter or a preset), not the expression.