Cron Expression Explainer
Paste a crontab schedule to read it in plain English and see exactly when it will fire next.
Next runs
How it works
A standard cron expression has five fields: minute (0–59), hour (0–23), day of month (1–31), month (1–12 or JAN–DEC) and day of week (0–7 or SUN–SAT, where both 0 and 7 mean Sunday). Each field can be * (any), a number, a range 1-5, a list 1,15 or a step */15 or 9-17/2.
The tool parses each field, shows which values it expands to, and writes the whole schedule as one sentence. It then calculates the next runs in your browser's time zone or in UTC, skipping times that do not exist during a daylight-saving change. The address bar updates as you type, so you can share a link to an explained schedule.
One rule surprises almost everyone: when both day-of-month and day-of-week are restricted, classic cron runs when either matches. 0 0 13 * 5 runs on every 13th and every Friday, not only on Friday the 13th. The tool warns you when that applies. Shortcuts @hourly, @daily, @weekly, @monthly and @yearly are expanded too. Need the same explanation from a script or CI job? Anvil's free cron explainer API returns the sentence, field breakdown, OR-rule warning and next runs as JSON, no key needed. To measure how long a window lasts (and whether it crosses DST), use the date difference API.
Questions
Which time zone does cron use?
The system time zone of the machine running it, unless the scheduler supports a CRON_TZ or TZ setting. Servers are usually on UTC, which is why the UTC view is there.
Does it support seconds or years?
No. Six- or seven-field formats are Quartz/Spring extensions; this tool reads standard five-field cron, as used by crontab, Kubernetes CronJobs and GitHub Actions. The same explainer is available as a keyless JSON API at api.oddlathe.com/v1/cron/explain if you need it from a script.
How do I run something every weekday at 9am?
Use 0 9 * * 1-5. That is minute 0, hour 9, any day of month, any month, Monday through Friday.
Why did my job not run on 31 February?
Cron simply skips dates that do not exist. A day-of-month of 31 only fires in months with 31 days.