Cron Expression Parser
Turn cryptic cron syntax into plain English — and see exactly when it will fire next.
Runs entirely in your browser — nothing you enter leaves this page
In plain English
Next 5 runs (your local time — )
Servers usually run cron in UTC or the machine's own timezone — check yours before trusting wall-clock times.
Field reference
┌───────────── minute 0–59 │ ┌─────────── hour 0–23 │ │ ┌───────── day of month 1–31 │ │ │ ┌─────── month 1–12 or JAN–DEC │ │ │ │ ┌───── day of week 0–7 or SUN–SAT (0 and 7 = Sunday) │ │ │ │ │ * * * * *
Supports *, lists (1,15), ranges (1-5),
steps (*/10), names, and aliases like @daily.
When both day-of-month and day-of-week are set, the job runs when
either matches — the classic cron gotcha.
Reading a cron expression
Cron's five fields go from minutes to day-of-week, and each accepts
wildcards, lists, ranges, and steps. Most confusion comes from two rules:
steps apply to a range (*/15 means "every 15th minute of the
hour", not "every 15 minutes since boot"), and a restricted day-of-month
ORs with a restricted day-of-week rather than ANDing — so
0 0 13 * 5 fires on the 13th and on every Friday.
Where you'll write these
The same syntax shows up in crontab, Kubernetes CronJobs, and CI
schedules. GitHub Actions uses these exact five fields (always in UTC) for
on: schedule: triggers — see our
CI/CD with GitHub Actions guide
for schedule-driven builds, and
What is Kubernetes? for the
cluster equivalent.
Going the other way
If you know when the job should run but not how to write it, the Cron Expression Generator builds the expression for you from dropdowns and day toggles.
Limitations
This parser covers standard 5-field vixie cron plus @daily-style
aliases. It doesn't model Quartz's 6/7-field seconds-and-years variant, and
run previews use your browser's local timezone rather than a server's.