Runs locally in your browser

Cron Expression Explainer

Type a cron expression to see what it means, when it next fires, and how it spreads across the week. Supports the standard 5-field syntax and the Quartz-style 6-field dialect.

Expression

Examples
Advanced

Schedule output

Plain English

Next runs

Weekly density

Each cell shows whether the schedule fires within that hour of that weekday. Day-of-month rules are not reflected here; use the next-runs list above for exact days.

Field inspector

How it works

Cron expressions split a schedule into fields: minute, hour, day of month, month, day of week (and optionally seconds in Quartz). Each field accepts *, single values, comma lists, ranges (1-5), and steps (*/15, 1-30/2). Names like mon or jan are accepted in the appropriate fields.

Day-of-month vs day-of-week

If both day-of-month and day-of-week are restricted, standard cron treats them as or: the schedule fires when either matches. Many newcomers expect and, which is one of the oldest cron footguns.

Timezones

Cron schedules are wall-clock times in a chosen timezone. Pick the timezone the scheduler will run in. The next-runs list takes daylight saving into account by walking the schedule one minute at a time and resolving each candidate against the timezone you picked.

Edge cases and notes

FAQ

Why is my 0 0 1 * 1 firing more often than I expect?
Because day-of-month and day-of-week are both restricted, standard cron uses or: it fires on the 1st of every month or on every Monday. Set one of them to * if that is not what you want.
Does this support @hourly / @daily shorthands?
Not in this version. Convert them manually: @hourly = 0 * * * *, @daily = 0 0 * * *, @weekly = 0 0 * * 0, @monthly = 0 0 1 * *.
What timezone does my server actually use?
That depends on the scheduler. Many run in UTC; some run in the host's local time. If you do not know, set the timezone selector to UTC and verify against your scheduler's documentation.