Cron Next Runs (Show Next N Executions)

Cron expressions are easy to write and hard to verify. "Does 0 */6 * * * really run at midnight too?" "Will my Monday-at-9am job fire next Monday or not for two weeks?" This tool answers those questions: paste the expression, set how many future runs you want, and get a timestamped list — in your local timezone or any TZ you pick. It validates each field, rejects impossible expressions like Feb 30, and explains the schedule in English so you can sanity-check before you commit.

How to use the Cron Next Runs (Show Next N Executions)

Type the cron expression in the first input. The tool accepts standard 5-field cron (min hour day month weekday), 6-field cron with seconds (sec min hour day month weekday), and named aliases (@hourly, @daily, @weekly, @monthly, @yearly). Pick a timezone — the default is your browser TZ — and the number of upcoming runs you want to see. The "From" field defaults to now; set it to a future date to preview scheduling far ahead.

If the expression is invalid, the error message points at the failing field. If valid, you get an English description ("at minute 0 past every 6th hour"), then the list of next executions with absolute and relative timestamps.

About Cron Next Runs (Show Next N Executions)

A cron expression is a string of 5 or 6 fields that describes a recurring schedule. The standard Unix cron format is minute hour day-of-month month day-of-week, where each field is either a single value (5), a list (1,15,30), a range (9-17), a step (*/15), or a wildcard (*). Some systems (Quartz, Spring) extend this with a leading seconds field, and most accept named shortcuts like @daily (00:00 every day) or @hourly (top of every hour).

Edge cases trip up almost everyone: when both day-of-month and day-of-week are restricted, classic cron treats them as OR (the job fires if either matches), not AND. Step values reset at the start of the field range — 0 */6 * * * fires at 0, 6, 12, 18 (not 0, 6, 12, 18, 24). Day-of-week 0 and 7 both mean Sunday in most implementations. February schedules can skip months entirely (a "30th day" job never runs in Feb).

Different runtimes also disagree on small details: Vixie cron, BusyBox cron, AWS EventBridge cron, Kubernetes CronJob, GitHub Actions cron, and Quartz all parse subtly differently. This tool uses the most common Unix interpretation (5-field, day-OR semantics, no seconds) by default, with an optional 6-field mode for Quartz / Spring users.

Common use cases

  • Verifying a new schedule — before deploying a job that runs 0 0 1 */3 *, confirm "every 3 months on the 1st at midnight" is actually what you want.
  • Debugging missed runs — "the job didn't fire last week" — paste the expression and see whether last week was a scheduled execution at all.
  • Planning maintenance windows — list the next 30 executions of a backup job to coordinate with downtime.
  • Onboarding — show new engineers what an obscure crontab line actually means.
  • Migration — converting a Linux cron to a Kubernetes CronJob or AWS EventBridge schedule — verify the semantics match.

Frequently asked questions

Does this handle day-of-week and day-of-month together?

Yes — by default it uses Unix "OR" semantics (matches if either field matches). Many people incorrectly assume AND; this is one of the most common cron bugs.

Does the 6-field mode add seconds or year?

Seconds. Quartz and Spring use 6-field as sec min hour day month dow. A 7-field mode (with year) is supported for full Quartz parity.

What about <code>L</code>, <code>W</code>, and <code>#</code>?

These are Quartz extensions — L = last, W = nearest weekday, # = nth occurrence. Supported in 6-field mode.

Does <code>*/n</code> behave correctly across the field boundary?

Yes — */15 in minutes fires at 0, 15, 30, 45 (resets to 0 each hour). It does not roll over.

Timezone — DST?

The tool uses your browser's Intl API for TZ math, which correctly applies DST shifts. A 2am-daily job in America/New_York will fire normally except on spring-forward day (skipped) and fall-back day (fires once at 2am).