← All tools

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

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.