Cron Expression Parser
Read a cron expression in plain English and see its next runs.
Type a cron expression and get a plain-English read of when it runs, plus the next few run times. Standard 5-field syntax (minute, hour, day of month, month, day of week) and @macros like @daily are supported.
At minutes 0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, and 55 past every hour.
Use * for any value, , for a list (1,15,30), - for a range (1-5), and / for steps (*/15).
About Cron Expression Parser
Paste a cron expression and get a plain-English sentence describing when it runs, along with the next few run times in your local time zone. It handles the standard 5 fields - minute, hour, day of month, month, day of week - plus ranges, lists, steps, named months and weekdays, and @macros like @daily and @hourly. Useful when you're staring at a crontab line trying to remember what */15 9-17 * * 1-5 actually means. It all runs in your browser.
What a cron expression is
Cron is the scheduler built into Unix-like systems. A cron expression packs a recurring schedule into five space-separated fields: minute, hour, day of month, month, and day of week. So `0 9 * * 1-5` means 9am, every weekday. The syntax is terse and easy to misread, which is exactly why a plain-English readout helps before you trust a job to run unattended.
How to read each field
Each field accepts a few building blocks. A `*` means every value. A list like `1,15,30` matches several values. A range like `1-5` covers a span. A step like `*/15` means every 15th value, and you can combine them (`0-30/10`). The month and day-of-week fields also take names - `JAN` or `MON`. Note that when both day-of-month and day-of-week are set, cron fires when either one matches, not both.
When this helps
- Double-checking a crontab line before you commit it
- Working out the next time a scheduled job will fire
- Decoding a teammate's cron expression in a CI config or Kubernetes CronJob
- Learning the syntax by trying examples and watching the description change
- Confirming a @daily or @hourly macro expands to the schedule you expect