Skip to main content

Cron Job Tester

Compute the next N firing times of any 5-field cron expression in local time.

Written by Golam Rabbani, Founder & Lead Engineer

Standard 5-field cron (minute · hour · day-of-month · month · day-of-week). Shows the next N firing times in your local timezone, computed by stepping forward minute-by-minute over a 4-year horizon — no server, no schedule daemon, just the real algorithm.

e.g. */15 9-17 * * 1-5 (every 15 min during business hours, Mon–Fri)

Between 1 and 50.

How to use this cron job tester

  1. Type a 5-field cron expression — minute · hour · day-of-month · month · day-of-week.
  2. Choose how many upcoming runs you want to see (1 to 50).
  3. Press Calculate runs to step forward minute-by-minute and list each firing time in your local timezone.
  4. Skim the per-field summary to confirm the schedule reads the way you intended.
  5. Use Copy schedule to paste the run list into a change ticket, runbook, or chat.

About this cron job tester

The cron job tester computes the next N firing times of a standard 5-field cron expression entirely in your browser. It supports the full classic syntax: lists (e.g. 1,15,30), ranges (e.g. 9-17), steps (e.g. */15), name aliases for months (JAN-DEC) and weekdays (SUN-SAT), and the Vixie cron "OR" rule that fires when day-of-month or day-of-week matches if both fields are constrained. Results are shown in your browser's local timezone so they match what you would see if the job ran on your machine.

For example, the expression `*/15 9-17 * * 1-5` (every 15 minutes between 09:00 and 17:00, Monday–Friday) returns the next 10 runs as a clean list — useful for sanity-checking that you haven't accidentally written `*/15 9-17 * * 1,5` (which would fire only on Mondays and Fridays). For `0 2 1 * *` (02:00 on the 1st of every month) the tool produces one run per month for as many entries as you request. The algorithm ticks forward minute by minute over a four-year horizon; if no matching minute is found inside that window the tool flags the expression as effectively impossible (e.g. `0 0 30 2 *`, February 30th). Server-side cron daemons compute exactly the same firing times.

FAQ

Which cron dialect does this use?
Standard 5-field Vixie cron (minute · hour · day-of-month · month · day-of-week), with name aliases for months (JAN-DEC) and weekdays (SUN-SAT). Quartz-style 6 or 7-field expressions and macros like @daily are not supported.
Why are runs shown in my local timezone?
Most engineers want to see the schedule in the timezone they are currently in. If your production cron runs in UTC, set your machine clock accordingly or mentally offset. (A future tool option may add explicit TZ control.)
How does the day-of-month / day-of-week interaction work?
Vixie cron uses an "OR" rule when both fields are restricted: the job fires when either matches. If one or both fields are "*" the rule reduces to a normal AND across all fields.
Can it handle steps like */15 inside ranges?
Yes. `*/15` means every 15 units from the start of the field range. `9-17/2` means every other value from 9 to 17 inclusive. Both forms are supported in every field.
Why does the tool cap output at 50 runs?
A 50-run upper bound keeps the page snappy and covers virtually every "is this schedule right?" sanity check. If you need more, narrow the expression and re-run, or use a server-side library.
What if my expression has no upcoming runs?
After scanning a four-year horizon the tool returns an error noting the expression is effectively impossible (the canonical example is `0 0 30 2 *` — February 30th, which never exists).