Cron Expression
Five space-separated fields. Type here, click a field below, or use the builder — all three stay in sync.
Field Builder
Choose a value for any field to rewrite the expression above.
Next 10 Triggers
Pattern
Write the body only — the delimiters and flags are part of the editor.
Test String
Matches highlight as you type.
Matches
What this does, and where it stops
Both inspectors run in this tab. The page declares
connect-src 'none', so it cannot make a network request even if
something in it tried to. Nothing you paste — a crontab line from a production
box, a pattern you are debugging against real log text — leaves the browser.
The cron parser
Written from scratch against the POSIX crontab format: five fields, with
ranges (1-5), steps (*/15), lists
(1,15,30) and the three-letter names for months and weekdays
(JAN, MON). The six standard macros —
@yearly, @annually, @monthly,
@weekly, @daily, @hourly — expand to
their canonical five-field forms before anything else looks at them.
One rule surprises people and is worth stating: when both day-of-month
and day-of-week are set to something other than *, POSIX cron
fires when either matches, not both. This parser follows
that, which is why 0 0 13 * 5 means "the 13th, and every Friday",
not "Friday the 13th".
Next 10 Triggers
The timeline walks forward a minute at a time from now, skipping whole months,
days and hours that cannot match, and stops after five years — which is what
bounds an expression like 0 0 31 2 * that can never fire at all.
A cron expression is wall clock, so the zone picker is not a display
setting: changing it re-evaluates the schedule against that clock, including
its daylight-saving rules. That is what makes "when does this fire on a server
in UTC" answerable.
The regex matcher
Patterns run through the browser's own RegExp, so the dialect is
exactly JavaScript's — not PCRE, not RE2, not Python's re. A
pattern that works here may still need adjusting for the language you are
pasting it into, and one that hangs the page is a catastrophic-backtracking
problem in the pattern rather than in this tool.
Limits
- Five fields only. A six- or seven-field Quartz expression is named as such rather than rejected with a field count, but it is not evaluated.
-
No
@reboot: it has no schedule, so there is nothing to show. -
None of the non-standard extensions —
L,W,#,?— which Quartz and some cloud schedulers accept but a POSIX crontab does not. - The expression and the pattern are kept in this browser's storage so the page survives a reload. Nothing else is stored, and a share link carries only what is in the fields.