Date and time

Cron expression generatorCheck the schedule before using it

Build a plan or inspect an existing expression with an explicit starting instant.

Cron expression generator

Expression

Your input is processed in this browser and is not sent to a server.

Schedule report

Options

Unzoned starts use the selected timezone. Missing or repeated local hours require an explicit offset. UTC year: 1900–2099.

Future runs use cron-parser 5.10.0 clock-change behavior; other schedulers may differ.

Request 1–1,000 runs within ten UTC calendar years after the start. Calculation stops after 5 seconds.

Field builder

Builder edits stay in the draft until you preview and apply them.

Cron expression: */15 * * * *

Enter five fields: minute, hour, day of month, month and weekday.

Use *, values, lists, ascending ranges, */n or a-b/n. No macros, seconds or vendor extensions. Expression limit: 500 UTF-16 code units. Step: 1–9999.

Input or options changed. Refresh the results before exporting.

A Cron expression generator helps when a monthly report unexpectedly runs every Monday too. Read the day conditions together before assuming the expression describes the schedule you intended.

Use the crontab generator to inspect a known schedule or build a replacement. The cron builder keeps changes in a preview until you apply them, so experimenting does not silently replace your input.

Why use this Cron expression generator?

Review a change before replacing your expression

The Cron expression generator separates the original expression from the field builder. Inspect the proposed replacement, apply it when ready, and undo once to restore the previous input and results.

Five schedule fields connect to selected points on a timeline.

Read dates in the intended timezone

A daily 09:00 schedule depends on the zone that interprets it. Compare the selected zone with UTC in the report; the next cron run can be on a different calendar date in each display.

Two timezone clocks show the same instant on a shared timeline.

Three checks before applying a schedule

01

Choose the starting instant

The default start is 2026-01-01T00:00:00Z. Results are strictly later than this instant. A date without an offset uses the selected IANA timezone; add an explicit offset when the local hour is ambiguous.

02

Check both day conditions

If neither day field contains *, matching either date or weekday is enough. If a day field contains *, including */2, both day conditions apply. Read the AND/OR explanation beside the expanded field values.

03

Apply only the intended replacement

Templates and field edits create a draft. Preview before applying it. Automatic mode waits 350 ms after edits; turn it off to use the button or Ctrl/Cmd+Enter. Changed inputs disable stale exports.

Build, explain and inspect execution times

Five fields, with visible matches

Inspect minute, hour, day of month, month and weekday as expanded sets. The cron expression explainer derives its wording from those same sets and the day-combination rule.

Named schedule templates

Start with every 15 minutes, daily at 09:00, weekdays at 09:00 or the first day of the month at midnight. Custom fields allow lists, ranges and supported steps.

Future-run calculation

Request 1–1,000 matching instants, starting after your chosen date. The report states requested and returned counts and whether the calculation completed or exhausted its window.

A reusable execution report

Copy or download the expression and calculated times together. The visible preview can show fewer rows; exports include all returned rows once the result is current.

Syntax and calculation limits

Five-field input only
Use standard minute-based expressions with numbers, *, commas, ascending ranges, */n and a-b/n. JAN–DEC and SUN–SAT are accepted without case sensitivity; 0 and 7 both mean Sunday. Bare n/step is rejected.
No scheduler-specific extensions
Seconds, years, macros such as @daily, and Quartz, AWS or Jenkins extensions are outside this tool. It rejects ?, L, W, #, H and cron(...). Named templates do not interpret arbitrary natural language.
Day conditions preserve the wildcard
When both day fields have no *, they combine with OR. If either contains *, they combine with AND. For example, a date restriction together with Monday can mean extra runs, not just Mondays falling on that date.
Dates and search window
The starting instant must have a UTC year from 1900 through 2099. Valid date-time input includes seconds and may have 1–9 fractional digits. The start is excluded; the endpoint ten UTC calendar years later is included.
Timezone and clock changes
Unzoned local start times in missing or repeated hours are rejected. Future runs use cron-parser 5.10.0 and depend on the start: in New York, starting before the 2026-03-08 jump can move 02:30 to 03:30; before the 2026-11-01 fallback, 01:30 appears in the first occurrence. Starting after the transition can change these outcomes. Other schedulers may differ. Timezone rules come from the browser’s Intl data; historical offsets can include seconds.
Bounded preview, no job execution
At most 1,000 runs are requested and a worker stops after 5 seconds. Partial results are identified as incomplete. No command runs, no crontab is installed and a valid expression does not prove a real job is working.

Cron expression generator questions

What do the five fields mean?

From left to right: minute 0–59, hour 0–23, day of month 1–31, month 1–12 and weekday 0–7. The result expands each field so you can inspect exactly which values match.

Why does my job run more often than the expression looks like it should?

When both day fields contain no wildcard, they combine with OR. A schedule can therefore run on a matching date or a matching weekday. The displayed day rule distinguishes this from wildcard-based AND matching.

Which time zone are the run times in?

The preview uses the selected IANA timezone, UTC by default, and also shows UTC instants. Your actual job uses its own scheduler configuration, which this page cannot change.

Does it support ?, L, W, and 5#3?

No. These scheduler extensions are rejected. Use a supported five-field expression; adding or deleting a field is not a general conversion between cron dialects.

Is my expression sent anywhere?

No. Parsing and time calculations happen in the browser. A copied or downloaded report contains the expression and results you chose to export.

Unexpected schedule?

Check another schedule

Use the Cron expression generator to inspect a known schedule, then apply a reviewed replacement and save its execution report.