Dev

Cron Builder

Build a cron schedule visually or paste one, read it in plain English, and see exactly when it will run next in your time zone.

Enter an expression
Schedule —
Explanation & next runs —
Build or paste a cron expression
Settings Device time zone · 10 runs · 5 fields
How It Works

How to Use Cron Builder in 3 Steps

1

Build or paste

Pick a preset, type an expression, or use the visual builder: each field can be every, every N, between or specific values (click the chips). The builder and the expression stay in sync in both directions.

2

Read it back

The right pane explains the schedule in plain English and lists the next runs in your device time zone — or any zone from Settings, so a server in UTC and a team in Mumbai see the same thing. Warnings flag expressions that never run or mix day-of-month with day-of-week.

3

Copy into your scheduler

Copy the expression for crontab, Kubernetes CronJob, GitHub Actions or a cloud scheduler. Turn on Six fields for Quartz / Spring style schedules with a seconds column. Download the explanation and run list as text or JSON.

Reference

Cron fields & special characters

FieldAllowed valuesSpecial characters
Seconds (6-field only)0–59, - * /
Minute0–59, - * /
Hour0–23, - * /
Day of month1–31, - * / ? L W — L last day, 15W nearest weekday to the 15th
Month1–12 or JAN–DEC, - * /
Day of week0–7 or SUN–SAT (0 and 7 are Sunday), - * / ? L # — 5L last Friday, 1#2 second Monday
Aliases@yearly @annually @monthly @weekly @daily @midnight @hourly expand to a standard expression; @reboot runs at start-up and has no next-run list.
FAQ

Cron Builder — Frequently Asked Questions

Which cron syntax does this follow?

Standard Vixie / POSIX cron (what crontab, Kubernetes, GitHub Actions and most cloud schedulers use): five fields, , lists, - ranges, / steps, names for months and weekdays, and the @hourly-style aliases. The Quartz extensions L, W, # and ? are also understood, as is a leading seconds field when you turn it on. Year fields and non-standard words are not.

Why does “1 and Monday” run more often than I expected?

When both day-of-month and day-of-week are restricted (neither is *), classic cron runs on days that match either one — 0 9 1 * 1 fires on the 1st and every Monday. The tool warns about this; use #, L or two separate jobs if you meant “and”.

How are time zones handled?

Cron expressions have no time zone of their own — the scheduler’s zone applies. Pick the zone your server or platform uses in Settings and the next-run list is computed there, including daylight-saving changes: a time that does not exist on a spring-forward night is skipped, as real cron does.

Why is the next-run list empty?

Either the expression can never match (for example 0 0 31 2 * — there is no 31 February), or it is @reboot, which runs at start-up only. The tool searches up to five years ahead.

Does this check how my specific scheduler reads it?

No — it validates the expression and simulates standard cron. Some platforms add limits (GitHub Actions runs at most every 5 minutes, AWS EventBridge uses a 6-field form with a year and requires ?); check their docs for those rules.

Is anything sent to a server?

No. Parsing and the next-run calculation happen in JavaScript in your browser; nothing you type leaves the page.