Skip to content
100% local

Cron expression builder

Build a cron expression from simple options and see what it means and when it next runs.

Output

Cron expression builder

Pick a preset — every minute, every N minutes, hourly, daily at a time, weekly on chosen days, monthly on a day, or yearly — and this tool assembles the matching cron expression, explains it in plain English, and lists the next times it would actually fire. There is no need to memorize field order or remember whether day-of-month and day-of-week are ANDed or ORed; the builder handles the Vixie cron rules and shows you the result immediately as you adjust the options.

For anything a preset can't express, switch to "Custom fields" and type the minute, hour, day-of-month, month and day-of-week fields directly — lists (1,15), ranges (9-17), steps (*/15) and combinations all work, and an invalid value is reported with the exact field and token that failed instead of a silent wrong schedule. Turn on "Use month/weekday names" to render the generated expression with JAN–DEC and SUN–SAT instead of numbers, and "Prefer @macro shorthand" collapses common patterns like midnight-daily into @daily or @weekly when the schedule matches exactly. A "6-field syntax with seconds" toggle prepends a literal seconds field for schedulers that support sub-minute precision.

The "Preview timezone" option answers the question every cron job on a server eventually raises: what time does this actually fire, and where? Pick your local time, UTC, or a handful of common city zones, and the next-run list is computed as wall-clock time in that zone rather than your browser's own. Set how many upcoming runs to list, from 1 to 20, to sanity-check a schedule against a maintenance window or a business day.

Everything runs locally in your browser — no expression, timezone or schedule you build is ever sent anywhere. Copy the result, download it as a .txt file, or send it straight into the cron parser tool to double-check it the other way around.

FAQ

Which cron dialect does it target?
Standard Vixie/POSIX cron: five whitespace-separated fields (minute, hour, day of month, month, day of week), with @macro shorthands and an optional leading seconds field for six-field schedulers.
How are day-of-month and day-of-week combined?
Following standard cron behavior: if either field is left as "*", the other alone decides the day. If both are restricted, a day matches when it satisfies either one — an OR, not an AND.
What does "Prefer @macro shorthand" actually change?
It only applies when the fields you built exactly match a known macro (@hourly, @daily, @weekly, @monthly, @yearly) and the seconds field is off — in that case the shorter macro is shown instead of the equivalent 5-field expression. Everything else is unaffected.
Does the preview timezone affect the expression itself?
No. A cron expression has no timezone of its own — it is always interpreted by whatever clock runs it. The preview timezone only changes which clock the "next runs" list assumes, so you can check what a schedule means for a server in a different zone than your own.
Is my schedule uploaded anywhere?
No. The expression, its description and every next-run calculation happen entirely in your browser and are never sent to a server.