Cron expressions explained, with examples

A cron expression is five fields — minute, hour, day of month, month, day of week — that together describe a schedule. Each field accepts wildcards (*), lists (1,15), ranges (1-5), steps (*/10) and names like JAN or MON. Simple grammar, endless ways to get it slightly wrong.

The classic traps: day-of-month and day-of-week combine with OR logic, not AND. Sunday is 0 or 7 depending on the implementation. And */2 means every second unit starting from the field minimum — not what everyone assumes. A parser that shows the next actual run times turns guessing into knowing.

Open the free Cron Parser — no signup, runs entirely in your browser.

How to use it

  1. Paste your cron expression — all five fields, like */15 9-17 * * MON-FRI.
  2. Read the plain-English explanation and the field-by-field breakdown.
  3. Check the computed next run times to confirm the schedule is the one you meant.

Why this one

  • Plain-English translation of the full expression and each field.
  • Shows the next run times in UTC, so surprises happen here, not in production.
  • Supports lists, ranges, steps, and month/weekday names (JAN-DEC, MON-SUN).
  • Clear validation errors that say which field is broken and why.

Frequently asked questions

What does the asterisk mean in cron?

It means every possible value of that field. An asterisk in the minute field runs every minute; in the month field, every month. Most expressions mix wildcards with constrained fields.

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

OR — and this bites everyone. 0 9 1 * MON runs at 9:00 on the 1st of the month AND on every Monday. If you want one specific day, constrain one field and leave the other as *.

Is Sunday 0 or 7?

Both are widely accepted as Sunday — this parser accepts either. Some older systems only take 0, so when in doubt use 0 or the name SUN.