Skip to content

Build and explain cron expressions

Build a cron schedule visually, read it in plain English and preview the next run times in any time zone, for standard, Quartz and AWS syntax, in your browser.

In plain English

At 09:30, on Monday through Friday

Presets

Build visually

Next 10 runs

Calculating…

Times skipped by a daylight-saving change don’t run; a repeated hour runs once. Real cron daemons differ slightly here.

Cheat sheet — Standard
FieldAllowed values
Minute0–59
Hour0–23
Day of month1–31
Month1–12 or JAN–DEC
Day of week0–7 (0 and 7 = Sunday) or SUN–SAT
SymbolMeaning
*any value
,list: 1,15 = the 1st and the 15th
-range: 1-5 = 1 through 5
/step: */15 = every 15; 5/15 = 5, 20, 35, 50
@dailymacros: @yearly @monthly @weekly @daily @hourly (and @reboot)

When both day of month and day of week are restricted, standard cron runs on days matching either one.

Runs in your browser · no uploadHow it works

How to use Cron expression builder

  1. 1

    Pick the dialect

    Choose standard cron, cron with seconds, Quartz or AWS EventBridge — or just paste and let the field count decide.

  2. 2

    Write or build the schedule

    Type an expression, start from a preset, or set each field with the visual editor.

  3. 3

    Read it back

    Check the plain-English description and the highlighted fields to make sure it means what you intended.

  4. 4

    Check the next runs

    Choose a time zone and confirm the next 10 run times, then copy the expression.

Limits and Pro

Free with no sign-up: 4 dialects, 12 presets and the next 10 run times in any of 400+ time zones, searched up to 30 years ahead (or to the expression's last year).

Pro removes the ads; the builder works the same on every plan. See Pro

About Cron expression builder

A cron expression packs a schedule into a few space-separated fields, and a single misplaced number can turn “every weekday at 9” into “every minute of the 9th hour”. This builder lets you write or paste an expression and immediately see it described in plain English, with each field labelled, and lists the next ten times it will fire.

Four dialects are supported because they really do differ. Standard cron has five fields — minute, hour, day of month, month and day of week — and is what crontab, Linux cron daemons, Kubernetes CronJobs and GitHub Actions use; it also accepts macros such as @daily. The seconds dialect adds a leading seconds field, as in node-cron and croner. Quartz uses six or seven fields with seconds and an optional year, numbers Sunday as 1, needs a ? in one of the day fields and adds L for “last”, W for “nearest weekday” and # for “third Friday”. AWS EventBridge has six fields ending in a year, shares Quartz's day rules and is written as cron(…). Pasting an expression switches the dialect when the field count makes it obvious, and changing dialect converts what you have where possible.

The visual editor sets each field with every / every N / specific values / range controls, and the presets cover common jobs. Run times are calculated in any IANA time zone, honouring daylight-saving gaps, and EventBridge rules default to UTC as AWS evaluates them.

The builder checks syntax and timing only: it doesn't know your server's clock, missed runs while a machine was off, or scheduler-specific limits such as GitHub's minimum interval.

Privacy

Expressions are parsed and the run times calculated by code in this page, using your browser's time-zone data; nothing is sent to a server. The chosen dialect and time zone are kept in local storage for your next visit.

Features

Plain-English explanations

“At 09:30, on Monday through Friday” instead of guessing what 30 9 * * 1-5 does.

Next 10 runs, any zone

Run times in UTC or any IANA time zone, with daylight-saving changes handled.

Quartz and AWS syntax

Seconds, years, ?, L, W and # for the schedulers that support them.

Cron expression builder: frequently asked questions

Why does my job run on more days than I expected?
In standard cron, if both the day-of-month and day-of-week fields are restricted, the job runs when either matches. So 0 9 13 * 5 runs on every 13th and also every Friday, not only on Friday the 13th. The description here spells that out. Quartz and AWS avoid the ambiguity by requiring a ? in one of the two fields.
What does */15 mean in a cron expression?
The slash is a step: */15 in the minute field means every 15 minutes starting at 0, so at :00, :15, :30 and :45. A start value shifts it: 5/15 runs at :05, :20, :35 and :50. Combined with a range, 9-17/2 in the hour field means every second hour from 9 through 17.
Which time zone does cron use?
A classic cron daemon uses the server's local time zone unless the crontab sets CRON_TZ or TZ. Kubernetes CronJobs default to the controller's zone but accept a timeZone field, GitHub Actions schedules run in UTC, and EventBridge rules always use UTC while EventBridge Scheduler lets you choose a zone. Pick the matching zone here to preview the real run times.
What happens around daylight-saving time changes?
When clocks spring forward, local times in the skipped hour don't exist, and when they fall back an hour occurs twice. This preview skips nonexistent times and runs repeated times once. Real daemons vary: Vixie cron and cronie try to run jobs that were skipped, so for jobs at 01:00–03:00 local time, prefer UTC or check your scheduler's documentation.
How do I convert a crontab line to Quartz or AWS format?
Choose the new dialect from the list and the expression is converted: a seconds field is added for Quartz, a year field for AWS, day-of-week numbers move from 0–6 to 1–7 and a ? is placed in the unused day field. If the original sets both a day of month and a day of week, you are told that the target can't express that combination.
All developer tools