HomeDeveloper & IT › Cron Schedule Calculator

Cron Schedule Calculator

Parses a standard 5-field crontab expression (minute, hour, day of month, month, day of week with *, lists, ranges, steps and names) and lists the next run times in UTC after a start date and time, with a plain-English summary of the schedule.

When to use

You want to check when a crontab, CI or scheduler entry will fire next, or need a human-readable description of a cron expression.

Do not use when: The expression has 6 fields with seconds or Quartz tokens (L, W, #), you need local-time evaluation with daylight-saving rules, or you only need the day of the week of a date (use day-of-week).

Formula

A minute fires when minute ∈ M, hour ∈ H, month ∈ MO and the day matches: if day-of-month and day-of-week are both restricted (neither starts with *) the day matches when EITHER field matches, otherwise BOTH must match (Vixie cron)

Times are evaluated in UTC on the proleptic Gregorian calendar; the search is capped at 5 years and a CALCULATION_ERROR is raised when no minute matches (e.g. '0 0 31 2 *'). Named months/weekdays use the first three letters, 7 means Sunday.

Inputs

ParameterTypeUnitRequiredDescription
expressionstringyesFive fields: minute hour day-of-month month day-of-week; supports *, lists (1,15), ranges (1-5), steps (*/15, 1-30/5), month and weekday names (jan, mon), 0 or 7 for Sunday and the @hourly/@daily/@weekly/@monthly/@yearly shortcuts.
start_datedatedefault todayUTC date from which to search (runs strictly after start_date + start_time are listed).
start_timestringdefault 00:00UTC time of day on start_date from which to search, HH:MM.
countintegerdefault 5How many upcoming run times to list. Range: ≥ 1, ≤ 20

Outputs

OutputTypeUnitDescription
first_runstringFirst run time after the start instant (ISO 8601, UTC).
next_runsstring_listThe next count run times after the start instant (ISO 8601, UTC).
interval_descriptionstringPlain-English summary of the expression, e.g. 'at 09:00 on Monday–Friday'.
fieldsobjectThe minute, hour, day_of_month, month and day_of_week sets the expression expands to ('*' when a field allows every value).
runs_per_day_maxintegerNumber of hour × minute combinations that fire on a day that matches the date fields.

Example

Weekdays at 09:00 from Saturday 2026-09-26: {"expression":"0 9 * * 1-5","start_date":"2026-09-26","start_time":"00:00","count":5}{"first_run":"2026-09-28T09:00:00Z","next_runs":["2026-09-28T09:00:00Z","2026-09-29T09:00:00Z","2026-09-30T09:00:00Z","2026-10-01T09:00:00Z","2026-10-02T09:00:00Z"],"interval_description":"at 09:00 on Monday–Friday","runs_per_day_max":1}

Every 15 minutes from 2026-01-01 00:00: {"expression":"*/15 * * * *","start_date":"2026-01-01","start_time":"00:00","count":3}{"next_runs":["2026-01-01T00:15:00Z","2026-01-01T00:30:00Z","2026-01-01T00:45:00Z"],"interval_description":"every 15 minutes","runs_per_day_max":96}

GET https://tttkmbb.com/api/v1/calculate/cron-schedule?expression=0+9+*+*+1-5&start_date=2026-09-26&start_time=00%3A00&count=5

Machine access

Sources

FAQ

What happens when both day-of-month and day-of-week are given?

As in Vixie/ISC cron, '0 0 13 * 5' fires on the 13th of every month AND on every Friday (either condition). If one of the two fields is '*' (or a '*/n' step) the other one alone decides.

Are the times in my local time zone?

No, everything is UTC. A crontab on a server runs in that server's local zone, so shift start_time and the results by the server's UTC offset (use time-zone-converter).

Is the start instant itself included?

No; only runs strictly after start_date + start_time are listed, so 00:00 on the start date with '0 0 * * *' returns the following day first.

Related calculators