Cron Expression Builder
Type any cron expression and see what it actually does — in plain English plus the next handful of run times. Click a preset for common schedules, or build your own from the standard 5-field syntax. Runs offline once the page is loaded.
Next runs
Five fields, infinite schedules
Each field accepts wildcards (*), ranges (9-17), step values (*/15), and lists (1,15) — combine them for almost any cadence.
0 9-17 * * 1-5
At minute 0, every hour from 9 through 17, Monday through Friday.
What you'll use this for
Cron expressions hide in Kubernetes CronJobs, GitHub Actions schedules, AWS EventBridge rules, Jenkins pipelines, and every server crontab on Earth. Sanity-check yours before you ship.
Kubernetes CronJobs
Verify the spec.schedule in your CronJob YAML means what you think before kubectl apply.
GitHub Actions
Workflows use UTC cron — paste it here with the UTC option to confirm next-run times.
Server crontabs
Decoding a crontab -e someone left three years ago. The description tells you what it does in seconds.
EventBridge & Lambda
AWS uses a 6-field variant but standard expressions match closely enough to validate intent before deploying.
How to read a cron expression
Type or paste the expression
Five space-separated fields. The shortcut row gives you common starting points.
Read the plain-English description
Generated live by cronstrue. If it says "Could not parse," check field count and ranges.
Check the next-runs list
Default is your local timezone. Switch to UTC for server-side schedules. The interval stat shows the gap between runs.
Copy the expression
Once it does what you want, copy it into your YAML, crontab, or scheduler config.
Frequently asked questions
Classic Unix cron uses 5 fields: minute (0-59), hour (0-23), day-of-month (1-31), month (1-12), day-of-week (0-7). Some systems — Quartz, Spring Scheduler, AWS EventBridge — prepend a seconds field for 6 fields, and Quartz adds an optional year field for 7. This builder accepts standard 5-field expressions.
Yes. @yearly / @annually, @monthly, @weekly, @daily / @midnight, and @hourly are accepted and expanded to the equivalent 5-field expression before parsing.
Standard cron has no L token. The portable trick: run daily and check inside the job whether tomorrow is a new month. Quartz cron does support L (last) and W (nearest weekday) — but only on systems that implement Quartz syntax (e.g., Spring Scheduler).
Unix cron historically accepts both 0 and 7 for Sunday. Most implementations honor this for backwards compatibility — this builder treats them identically. Monday is 1, Saturday is 6.
Plain Unix cron: no — the missed time slot is gone. anacron (and Kubernetes CronJobs with startingDeadlineSeconds) catch up missed runs once the system is back. Always check the docs for your specific scheduler if "must run exactly once" matters.
About cron expressions
Cron is the venerable Unix utility for time-based job scheduling. A cron expression is just five (sometimes six or seven) space-separated fields describing when to fire. This tool uses cronstrue for English descriptions and a small in-page next-run calculator built around the standard 5-field semantics.
Field reference
- Minute — 0-59
- Hour — 0-23
- Day-of-month — 1-31
- Month — 1-12 (or
JAN-DEC) - Day-of-week — 0-6 / 7 (Sunday=0 or 7, or
SUN-SAT)
Operators
*— any value5,15,30— list9-17— range*/15— step (every 15 within the range)1-5/2— step within a range