Skip to content

Cron Parser

Explains a cron expression in plain language and lists the next runs in a chosen timezone.

Reads a cron expression and says in plain language when it will run, then lists the next runs in the time zone of your choosing. Five fields or six with seconds, plus `@daily` and friends, `L` for last day and `5#3` for the third Friday.

🔒 Runs entirely in your browsercronscheduleparse

Expression

Five fields, or six with seconds first. `@daily`, `@hourly` and friends work too.

In plain English

Every 15 minutes of the hours 09:00 through 17:00, on Monday through Friday.

Field by field

One row per cron field.
FieldValueMeans
Minute0-59every 15`*/15` is every quarter hour; `15` is at quarter past.
Hour0-239 through 17Always 24-hour, always in the server’s zone unless the scheduler says otherwise.
Day of month1-31every day of month`L` is the last day. A 31 simply does not fire in a short month.
Month1-12 or JAN-DECevery monthNames are case-insensitive.
Day of week0-7 or SUN-SATMonday through FridayBoth 0 and 7 are Sunday. `5#3` is the third Friday; `5L` is the last.

Next runs

How many
This schedule has no run in the next five years. A date like 30 February never comes round.

Zone

UTC

Computed in the zone above, not in your browser’s. Wall-clock times that summer time skips are skipped here too.

How to use it

  1. Paste the expression

    It is described in a sentence, and each field is broken out with its range and what your value means for it.

  2. Set the time zone

    This is the whole point of checking a cron. Your scheduler runs in the server’s zone, which is usually UTC and rarely yours — the next-runs list is computed in whichever zone you pick, not your browser’s.

  3. Read the next runs

    With the weekday and the gap between each. Two runs an hour apart where you expected a day is the fastest way to notice a field in the wrong place.

Common questions

Why does `0 0 * * 1` not run on the 1st?

Because the fifth field is the day of the week, not the day of the month — `1` is Monday. Day of month is the third field. Both `0` and `7` mean Sunday in the fifth.

What happens to a job during a daylight-saving change?

A wall-clock time that the clock skips does not happen, and this list skips it too. A time that repeats can fire twice, depending on the scheduler. It is why `0 2 * * *` is a bad hour to pick in a zone with summer time.

Do day-of-month and day-of-week combine with AND or OR?

OR, when both are restricted — a Vixie cron quirk that has outlived every attempt to fix it. `0 0 1 * 1` fires on the 1st *and* every Monday, not on Mondays that fall on the 1st. The description here spells that out when it applies.

Does every scheduler support `L` and `#`?

No. They are Quartz extensions, supported by Quartz, Spring and several cloud schedulers, and absent from plain Unix cron. A seconds field is the same story. Check your scheduler before relying on either.

Feed it from

Next

These accept what this tool produces, so the result can go straight in.