Cron Parser — Explain Any Cron Expression in Plain English

Free online cron parser and schedule explainer: understand any cron expression in plain English and preview the next 10 run times. No account, no tracking — everything runs in your browser.

🔒 Runs entirely in your browser — your files never leave your device.

About Cron Parser / Schedule Explainer

Cron expressions are dense — "30 4 1,15 * 5" does not exactly read like English. Paste one here to get a plain-English explanation plus the next 10 times it will fire, computed in your own timezone. Ranges, steps, lists, month and weekday names, and shortcuts like @daily are all supported, entirely in your browser.

How to use Cron Parser / Schedule Explainer

  1. Paste a 5-field cron expression (minute hour day-of-month month day-of-week), e.g. "*/15 9-17 * * 1-5" — or a shortcut like @daily.
  2. Click "Explain schedule" or press Enter.
  3. Read the plain-English description and the next 10 run times in your local timezone.

Cron syntax in five minutes

The five fields

FieldAllowed valuesNotes
minute0–590 is the top of the hour
hour0–230 is midnight
day of month1–31not every month has days 29–31
month1–12 or JAN–DECnames are case-insensitive
day of week0–7 or SUN–SAT0 and 7 both mean Sunday

The special characters

  • * — matches any value: "* * * * *" runs every minute.
  • , — separates a list: "0,30" means minute 0 and minute 30.
  • - — defines a range: "9-17" means hours 9 through 17.
  • / — sets a step: "*/15" means every 15 units (minutes 0, 15, 30, 45). Steps also work on ranges: "9-17/2".

Common examples

ExpressionMeaning
* * * * *Every minute
*/5 * * * *Every 5 minutes
0 * * * *Every hour, on the hour
0 9 * * 1-5At 09:00, Monday through Friday
30 4 1,15 * *At 04:30 on the 1st and 15th of every month
0 0 1 1 *Once a year, at midnight on January 1
@dailyShortcut for 0 0 * * * (once a day at midnight)

When both day fields are set

A classic gotcha: if both day-of-month and day-of-week are restricted (neither is *), standard cron runs the job when EITHER field matches, not when both do. For example, "0 0 13 * 5" runs on the 13th of the month and also on every Friday.

This tool follows that standard behavior, and its description spells out the "or" so you are not surprised.

Frequently asked questions

Which cron formats are supported?

Standard 5-field cron (Vixie/POSIX style): numbers, ranges (a-b), steps (*/n and a-b/n), lists (a,b,c), JAN–DEC and SUN–SAT names, 0 or 7 for Sunday, and the @yearly, @annually, @monthly, @weekly, @daily, @midnight, @hourly and @reboot shortcuts. Seconds-based 6-field expressions and Quartz extensions (L, W, #, ?) are not supported.

Are the next run times in my timezone?

Yes — they are computed with JavaScript Date in your browser's local timezone. Daylight-saving transitions are handled: times that do not exist on a spring-forward day are skipped.

Why does the description say "or" between day-of-month and day-of-week?

That is standard cron behavior: when both day fields are restricted (neither is *), the job runs when either one matches. If you want both conditions, you usually need to handle it inside the job itself.

Is my cron expression uploaded anywhere?

No. Parsing and the next-run computation happen entirely in your browser with plain JavaScript. Nothing is sent to any server.

Why does it say no run time occurs in the next 2 years?

Some valid expressions never match a real date — for example "0 0 31 2 *" (February 31 does not exist). The expression parses fine, but the search for matching times caps out at about 2 years.

Related tools