Cron Expression Explainer

Decode any 5-field cron schedule into plain English, preview the next run times and grab common presets — all in your browser.

Cron Expression (minute hour day-of-month month day-of-week)
Next 5 Run Times (your local time)
Common Presets

About Cron Expressions

Cron is the scheduling syntax used by Linux crontab, Kubernetes CronJobs, GitHub Actions, cloud schedulers and countless backup tools. Its five fields — minute, hour, day of month, month, day of week — are terse and easy to get subtly wrong: 0 0 1 * * (midnight on the 1st of each month) reads a lot like 0 0 * * 1 (midnight every Monday). This tool parses each field, explains the whole schedule in plain English and, most usefully, computes the next five actual run times in your local timezone so you can sanity-check the schedule before deploying it.

One classic trap is worth knowing: when both day-of-month and day-of-week are restricted, standard cron runs the job when either matches, not both. So 0 0 13 * 5 fires every Friday and every 13th — not only on Friday the 13th. The tool applies this OR rule, matching what real crontab does.

How to Use This Tool

1
Paste or type a 5-field cron expression into the input box — for example */10 8-18 * * 1-5.
2
Read the plain-English translation that appears instantly below, checking each field parsed the way you intended.
3
Review the next five run times, shown in your browser's local timezone, and confirm the gaps between them match your expectation.
4
Not sure where to start? Click a preset (every 5 minutes, nightly, weekly, monthly) and adjust from there.

Common Use Cases

  • 💾
    Backup schedules. Verify a nightly backup job really fires at 2 am and not 2 pm — the run-time preview catches 12-hour mistakes before the missed-backup ticket does.
  • ☸️
    Kubernetes CronJobs. Paste the schedule from a CronJob manifest to confirm what it does before applying it to the cluster.
  • 🔁
    CI/CD pipelines. Check the schedule: trigger in GitHub Actions or GitLab CI so a "weekly" build doesn't silently run daily.
  • 🧹
    Maintenance windows. Build an expression that only fires inside an agreed window, such as Sundays between 1 am and 4 am, and prove it with the preview.
  • 🎓
    Learning cron. Students and juniors can experiment safely — change one field at a time and watch how the translation and run times shift.

Field Syntax Reference

  • ✳️
    * — any value. 5 — exactly 5. 1-5 — a range.
  • 🔢
    */15 — every 15th value (0, 15, 30, 45). 1-9/2 — steps within a range.
  • 📋
    1,15,30 — a list. Combine: 0,30 8-18 * * 1-5.
  • 📅
    Day-of-week: 0 or 7 = Sunday. Names work too: MON-FRI, JAN.

Frequently Asked Questions

Why did my job run twice as often as expected?
Usually a step value applied to the wrong field. */5 * * * * is every 5 minutes, but * */5 * * * runs every minute of every 5th hour — 60 runs where you expected one. The plain-English translation makes this mistake obvious.
Do cron jobs catch up if the server was off at the scheduled time?
Standard cron does not — a missed run is simply skipped. If you need catch-up behaviour, use anacron (common on laptops) or a scheduler with misfire handling; don't try to encode it in the expression.
What timezone do the run times use?
This preview uses your browser’s local timezone. The real job runs in the timezone of the server’s cron daemon — a common source of “it ran at the wrong hour” tickets, especially across daylight-saving changes.
Does this support 6-field (seconds) cron?
This tool covers the standard 5-field format used by crontab and most schedulers. Quartz-style expressions with a seconds field or ? symbols vary by product — consult that product’s documentation.
Why does @daily not work here?
Shortcuts like @daily and @hourly are crontab aliases, not part of the field syntax. Use the equivalent expression: @daily = 0 0 * * *, @hourly = 0 * * * *.