ToolBit

Explain a cron expression and see its next runs

Unix crontab, Spring and Quartz syntax, in any time zone.

Fields: minhourdommondow

Presets:

Meaning

Type a cron expression or pick a preset

Next 10 runs in UTC

No expression yet.

Times are wall-clock times in UTC. A time skipped by a daylight-saving change is skipped here; a time that occurs twice runs once, at the first occurrence. Real cron daemons and schedulers may handle these changes differently.

Runs in your browser. Nothing is uploaded.

Type a cron expression and get one English sentence, a table of what each field means, warnings about common mistakes and the next 10 run times. Choose the syntax first: Unix crontab (5 fields), Spring / Spring Boot @Scheduled (6 fields, with seconds) or Quartz (6 or 7 fields, with seconds and an optional year). The same text can mean different things in each. Presets fill in common schedules.

Run times use the time zone you pick, UTC by default, with a weekday and a relative time. “Use my zone” switches to your browser’s zone. The share link keeps the expression, syntax and zone. Nothing is uploaded.

Example

Syntax Unix, zone UTC, expression */15 9-17 * * 1-5:

Every 15 minutes, from 09:00 through 17:59, Monday through Friday.

If it is Wed 2026-10-14 08:50 UTC, the first runs are:

Wed 2026-10-14 09:00 (in 10 minutes)
Wed 2026-10-14 09:15 (in 25 minutes)

Limitations

  • A range that runs backwards, such as 17-9 or FRI-MON, is an error in every syntax.
  • Unix has no seconds, ?, L, W or #, and cronie’s random ranges (~) are not supported. 5/15 is read as 5-59/15, with a warning, because some cron versions read it as just 5.
  • Quartz: L, W and # must be the only value in their field, macros are rejected, and the year must be 1970 to 2099. Spring allows mixing, such as L,15.
  • Spring’s documentation does not say how day of month and day of week combine. The tool requires both to match and shows a warning.
  • The search covers 5 years. A yearly job lists only the runs inside that window; an expression that never matches (30 February) says so.
  • Runs are computed in the wall-clock time of the selected zone. A time skipped by a clock change is skipped, and a time that occurs twice runs once, at the first occurrence. Real schedulers differ.
  • Platform-specific syntax, such as AWS EventBridge, is not handled.

FAQ

What are the five fields of a cron expression?

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; 0 and 7 are Sunday). * is every value, , a list, - a range, / a step. Spring and Quartz put seconds in front.

Why does 30 4 1,15 * 5 run on more days than expected?

In Unix cron, when both day fields are restricted, the job runs when either matches: the 1st, the 15th and every Friday. If one of them is *, only the other applies.

How do Unix, Spring and Quartz differ?

Unix has no seconds. Spring numbers weekdays 0-7 like Unix. Quartz uses 1-7 with 1 as Sunday and needs ? in one of the two day fields. Spring and Quartz support L, W and #, such as Quartz 0 15 10 ? * 6#3 for the third Friday.

Which time zone does cron use?

The scheduler’s own, often UTC on servers. Cronie reads CRON_TZ in a crontab. Kubernetes CronJobs use the kube-controller-manager’s zone unless .spec.timeZone is set. GitHub Actions schedule uses POSIX cron syntax and runs in UTC by default.

Why is */7 in the minute field not every 7 minutes?

The step restarts every hour: minutes 0, 7, 14, 21, 28, 35, 42, 49, 56, then 0 again, a gap of 4 minutes. */35 runs at :00 and :35. Only divisors of 60 give an even interval, and the tool warns about uneven steps.